Когда человек начинает изучать программирование самостоятельно или на онлайн-курсах, очень важно обозначить «поле деятельности» и всё систематизировать. В этой статье мы представляем такую систематизацию — задачи Java для начинающих, с указанием, насколько полно тот или иной тип представлен в онлайн-курсе по изучению программирования JavaRush и полезными ссылками.
Задачи на синтаксис языка
Основа основ, самые первые задачи по программированию Java для начинающих — от “Hello World” до циклов и массивов. На JavaRush их очень много: особенно плотно они сосредоточены в квесте Java Syntax на первых шести уровнях. Вряд ли вам нужно искать какие-то дополнительные источники для их усвоения — тут их вполне достаточно. Кроме того, решая любые, более сложные задачи, вы автоматически повторяете синтаксис. Но если вдруг нужны — подобные упражнения содержит любой задачник по Java для начинающих. Только вот мгновенной проверки, как на JavaRush, в этих задачниках не будет.Задачи на коллекции
Коллекции — первая «серьезная» тема, с которой сталкивается программист-новичок во время учёбы. Задачи по Java для начинающих, посвящённые коллекциям, также широко представлены на JavaRush — на седьмом и восьмом уровне квеста Java Syntax. Здесь студент впервые услышит о Java Collections Framework, поработает с интерфейсами Set, List и Map и некоторыми их реализациями. Однако на этом этапе вас ждёт лишь знакомство с этим полезным инструментом и простые задачи по Java. Более основательное изучение коллекций произойдёт во время прохождения квеста Java Collections. Видите, насколько это важный объект, раз в его честь назвали целый квест!.Задачи на исключения
За работу с нештатными ситуациями в Java отвечает специальный механизм, который существенно упрощает «ловлю» ошибок в программах. Только вот чтобы им полноценно пользоваться, нужно разобраться, как в Java устроена обработка исключений. На JavaRush таких задач очень много, причём встречаются они даже в первом квесте Java Syntax.Задачи на приведение типов
Разумеется, эту группу можно отнести к базовым задачам на синтаксис. Тем не менее, по нашему скромному мнению, такие задачки часто недооценивают, и новички в них плавают. Поэтому отойдём от шаблонов: задачи на Java для начинающих по теме «Приведение примитивных типов» изучаем не в самом начале, как часто делают, а чуть позднее — в конце первого квеста Java Syntax. А затем научимся приводить непримитивные типы (объекты), изучая ООП в квесте Java Core. Таких задач на JavaRush хватает, дополнительно можно ничего не искать.Задачи на понимание ООП
ООП — не самая сложная тема, но чрезвычайно важная. Кроме того, в ней сокрыто очень много тонкостей, на которых интервьюеры любят подлавливать будущих «джунов». Курс JavaRush содержит практические задачи по программированию для начинающих, которые помогут вам разобраться в объектно-ориентированном подходе. Тем не менее, чтобы понять ООП по-настоящему, рекомендуем читать литературу по теме (например, Кей Хорстманн, Гари Корнелл «Библиотека профессионала», «Объектно-ориентированный анализ и проектирование» Маклафлина или другие книги).Задачи на потоки ввода/вывода
Потоками ввода/вывода мы начинаем пользоваться задолго до того, как разбираемся с ними — это Java, детка, и объяснить зелёному новичку System.out, и, тем более, System.in — сложно, да и не нужно на первом этапе. А вот во время прохождения квеста Java Core знаний как раз достаточно, чтобы понять эту несколько запутанную тему, причём речь не только о консольном вводе/выводе, но и о работе с файловой системой. Главное — не пропускайте эти задачки (их на JavaRush достаточно много), и последовательно разбирайтесь с теорией.Головоломки
Под «головоломками» мы понимаем задачи повышенной сложности, которые требуют не столько знаний, сколько умения их нестандартно применить. Это типичные задачи для Java Junior — их очень любят задавать на собеседованиях, но в реальной работе головоломки в таком понимании встречаются не очень часто. Поэтому на JavaRush они есть, но не очень много (обычно на занятиях капитана Боброва).Где можно найти головоломки:
- http://acm.timus.ru/problemset.aspx?space=1&tag=tricky
- https://tproger.ru/category/problems/
- https://www.codechef.com/
- https://www.codewars.com/?language=java
Алгоритмы и структуры данных
Насчёт алгоритмов и структур данных постоянно ведутся споры о том, насколько они нужны будущему программисту. В очередной раз ответим: для становления мышления — нужны, непосредственно для работы — редко. Потому что для Java, да и других языков тоже, уже написаны библиотеки с реализациями всех известных алгоритмов сортировки, поиска и прочих. Тем не менее создавать собственные реализации алгоритмов очень полезно, как и формировать понимание об их сложности. Особенно людям, которые изучали математику только в школе. В принципе, эти задачи перемежаются с головоломками с той лишь разницей, что они все описаны и решены в сети многократно. Даже валидатор для проверки не нужен. Выбирайте любой курс, например, Принстонского университета, их коллег из Калифорнии или Stepic. Кстати, в курсе CS50, перевод которого мы поместили на JavaRush, разобрано несколько важнейших алгоритмов и структур данных. Настоятельно рекомендуем посмотреть видео 2-5 уровней и реализовать разобранные в них задачки на Java. Задачи на графы: Задачи на структуры данных:Многопоточность
Каждый может написать программу, выводящую «Hello World»… А если с использованием Java Thread API, чтобы знаменитая фраза печаталась из дополнительной нити? А чтобы она печатала «Hello world» пять раз из пяти различных нитей, и чтобы строки не чередовались?.. Многопоточность — самая настоящая «проверка на прочность» во время изучения Java Core. Этой весьма непростой теме посвящён целый квест на JavaRush, который так и называется — Java Multithreading, и он содержит большое количество задач, чтобы студент смог прочувствовать «боль и красоту» параллельно выполняемых процессов. Чаще всего первые «настоящие» проекты студентов содержат многопоточность в большей или меньшей степени. Например, простые игры.
Задача на многопоточность Пятеро безмолвных философов сидят за круглым столом. Перед каждым из них стоит тарелка спагетти. Вилки лежат на столе слева и справа от каждого философа (между ними). Философ может либо есть, либо размышлять. Причём есть он может только если держит две вилки — взятую справа и слева от него. «Взять вилку» и «положить вилку» — отдельные действия, которые выполняются последовательно. |
Задачи на Generics
Обобщение — сама суть автоматизации, то есть в каком-то смысле и программирования. Так что тема обобщений или дженериков в Java также не должна остаться без внимания. На JavaRush есть задачи на обобщенное программирование (в основном — в квесте Java Collections, начиная с 5-го уровня). Где можно найти полезные упражнения и материалы по дженерикам:- https://docs.oracle.com/javase/tutorial/java/generics/QandE/generics-questions.html
- https://www.geeksforgeeks.org/generics-in-java/
- http://www.angelikalanger.com/GenericsFAQ/FAQSections/ProgrammingIdioms.html
- Книга «Effective Java» Джошуа Блоха
Задачи на шаблоны проектирования
Начинающему программисту на каком-то этапе (примерно 2/3 курса JavaRush) нужно начинать присматриваться к правилам хорошего тона в программировании. Речь идёт о правильном оформлении кода (что проще) и о шаблонах проектирования (что сложнее). На JavaRush есть такие задачи. Нужны дополнительные — можно найти, например, в книге (часть 4) «Java. Методы программирования» Блинова и Романчика. Или подумать, как можно подвести под шаблон уже решённые задачи.Unit-тестирование
Важный навык любого программиста, которое часто ошибочно приписывают исключительно тестировщикам — написание модульных (или же Unit) тестов к собственному коду. На JavaRush есть немного задач по Unit-тестам, но на самом деле заморачиваться поиском новых не стоит. Когда разберетесь, как писать тесты, сформируйте привычку покрывать ваш код (в собственных проектах, в учебных задачах) Unit-тестами. Это гораздо полезнее, чем делать проверки с помощью консольного вывода, чем, как правило, страдают студенты-программисты. Кроме того, очень часто первое, что доверяют делать «джунам» в компаниях, — написание Unit-тестов к чужому коду.- Юнит-тестирование для чайников — полезная статья с «Хабра», после которой станет понятно, зачем нужно модульное тестирование
- Junit — Java для тестировщиков — видеоурок Юрия Ткача
Задачи на регулярные выражения
Это несложная тема, в которой почти никто из новичков не разбирается, потому что непривычно и лень. На самом деле, стоит потратить несколько дней на изучение темы, разобраться с «регулярками» и получить преимущество перед теми, кто этого не сделал. Это полезно ещё и потому, что они почти не зависят от языка программирования: выучите однажды, сможете использовать везде. На JavaRush нет задач, которые посвящены регулярным выражениям, хотя некоторые можно решать с их помощью. Так что вот дополнительные ресурсы для понимания темы:- Регулярные выражения в Java — перевод статьи Джеффа Фрисена
- Тестирование регулярных выражений — ресурс, где можно проверять «регулярки» онлайн
- Майк Фицджеральд «Регулярные выражения» — краткий и простой учебник.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ