Эллеонора Керри
41 уровень

Какие бывают задачи по Java

Пост из группы Java Developer
1937 участников
Когда человек начинает изучать программирование самостоятельно или на онлайн-курсах, очень важно обозначить «поле деятельности» и всё систематизировать. В этой статье мы представляем такую систематизацию — задачи Java для начинающих, с указанием, насколько полно тот или иной тип представлен на JavaRush и полезными ссылками.
простые задачи по java

Задачи на синтаксис языка

Основа основ, самые первые задачи по программированию 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 для начинающих по теме «Приведение примитивных типов» изучаем не в самом начале (как часто делают), а чуть позднее — в конце первого квеста Java Syntax. А затем научимся приводить непримитивные типы (объекты), изучая ООП в квесте Java Core. Таких задач на JavaRush хватает, дополнительно можно ничего не искать.

Задачи на понимание ООП

ООП — не самая сложная тема, но чрезвычайно важная. Кроме того, в ней сокрыто очень много тонкостей, на которых интервьюеры любят подлавливать будущих «джунов». Курс JavaRush содержит практические задачи по программированию для начинающих, которые помогут вам разобраться в объектно-ориентированном подходе. Тем не менее, чтобы понять ООП по-настоящему, рекомендуем читать литературу по теме (например, Кей Хорстманн, Гари Корнелл «Библиотека профессионала», «Объектно-ориентированный анализ и проектирование» Маклафлина или другие книги).

Задачи на потоки ввода/вывода

Потоками ввода/вывода мы начинаем пользоваться задолго до того, как разбираемся с ними — это Java, детка, и объяснить зелёному новичку System.out, и, тем более, System.in — сложно, да и не нужно на первом этапе. А вот во время прохождения квеста Java Core знаний как раз достаточно, чтобы понять эту несколько запутанную тему (причём речь не только о консольном вводе/выводе, но и про работу с файловой системой). Главное — не пропускайте эти задачки (их на JavaRush достаточно много), и последовательно разбирайтесь с теорией.

Головоломки

Под «головоломками» мы понимаем задачи повышенной сложности, которые требуют не столько знаний, сколько умения их нестандартно применить. Это типичные задачи для Java Junior — их очень любят задавать на собеседованиях, но в реальной работе головоломки в таком понимании встречаются не очень часто. Поэтому на JavaRush они есть, но не очень много (обычно на занятиях капитана Боброва).
головоломки по 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-го уровня). Где можно найти полезные упражнения и материалы по дженерикам:

Задачи на шаблоны проектирования

Начинающему программисту на каком-то этапе (примерно 2/3 курса JavaRush) нужно начинать присматриваться к правилам хорошего тона в программировании. Речь идёт о правильном оформлении кода (что проще) и о шаблонах проектирования (что сложнее). На JavaRush есть такие задачи. Нужны дополнительные — можно найти, например, в книге (часть 4) «Java. Методы программирования» Блинова и Романчика. Или подумать, как можно подвести под шаблон уже решённые задачи.

Unit-тестирование

Важный навык любого программиста, которое часто ошибочно приписывают исключительно тестировщикам — написание модульных (или же Unit) тестов к собственному коду. На JavaRush есть немного задач по Unit-тестам, но на самом деле заморачиваться поиском новых не стоит. Когда разберетесь, как писать тесты, сформируйте привычку покрывать ваш код (в собственных проектах, в учебных задачах) Unit-тестами. Это гораздо полезнее, чем делать проверки с помощью консольного вывода, чем, как правило, страдают студенты-программисты. Кроме того, очень часто первое, что доверяют делать «джунам» в компаниях, — написание Unit-тестов к чужому коду.

Задачи на регулярные выражения

Это несложная тема, в которой почти никто из новичков не разбирается, потому что непривычно и лень. На самом деле, стоит потратить несколько дней на изучение темы, разобраться с «регулярками» и получить преимущество перед теми, кто этого не сделал. Это полезно ещё и потому, что они почти не зависят от языка программирования: выучите однажды, сможете использовать везде. На JavaRush нет задач, которые посвящены регулярным выражениям (хотя некоторые можно решать с их помощью). Так что вот дополнительные ресурсы для понимания темы:
задачи java для начинающих

Задачи по Java с подвохом

В эту категорию входят хитрые задачи, которые чаще всего не имеют непосредственного отношения к реальной работе программиста. В основном они встречаются на собеседованиях, их используют, чтобы понять глубину понимания/знания той или иной технологии кандидатом или же протестировать его внимательность. Если вам нужны такие задачи, забейте в Google запрос «Задачи для собеседований Java» или что-то в этом роде. Скорее всего, вы найдёте массу подборок, а также вопросов и ответов на всевозможных форумах. В них полезно разбираться, но стоит ли на них тратить слишком много времени? О таких задачах однажды неплохо высказался Кей Хорстманн в своей статье для InformIT, перевод которой мы публиковали в январе. Если кратко пересказать его мысль — есть задачи реального мира, а есть параллельная вселенная — «Задачи для собеседований».

Задачи на лямбда-выражения

Поддержка лямбда-выражений появилась в Java 8, но до сих пор не все программисты охотно их используют. Тем не менее, сегодня понятие «задачи для Java Junior» включает манипуляции с лямбда-выражениями, поэтому рекомендуем ознакомиться с ними, например, из очень доступной статьи «Популярно о лямбда-выражениях в Java. С примерами и задачами».

Задачи на работу с сетью

Сериализация в JSON, RMI, HttpUrlConnection, socket… это уже не совсем задачи по программированию для начинающих. Они требуют прочных знаний, и являются своеобразным мостиком к собственным проектам, стажировкам и работе. На старших уровнях JavaRush (квест Java Collections) есть немало упражнений для усвоения этих технологий и подходов, но всё станет гораздо понятнее в процессе прохождения онлайн-стажировки.

Что еще почитать:

Топ-7 книг по Java для начинающих

Самые распространённые проблемы тех, кто начинает учить Java

Что нужно понимать программисту-новичку?

Комментарии (3)
  • популярные
  • новые
  • старые
Для того, что бы оставить комментарий вы должны авторизоваться
Artem Murk35 уровень, Днепр
15 марта, 18:26
Интересная статья. Разве Дженерики не относятся к пониманию полиморфизма ООП?
Vasyl Malik35 уровень, Киев
21 марта, 10:45
Личное мнение: В Java дженерики - это синтаксический сахар, добавлен для: 1. безопасности типов 2. избежания приведения типов 3. определения исключения ClassCastException на этапе компиляции, а не на этапе выполнения программы. С этими проблемами часто сталкивались в при работе с коллекциями: по умолчанию все коллекции в Java были нетипизированные, и исключение ClassCastException было довольно частым при работе с коллекциями. По этой причине дженерики рассматриваются в курсе в квесте Collections. И да, Вы правы, дженерики относятся к параметрическому полиморфизму. Информация по теме: 1 2 3 4
Leo1 уровень
15 марта, 14:51
спасибо за ссылки на задачи по алгоритмам