Коли людина починає вивчати програмування самостійно чи онлайн-курсах, дуже важливо позначити «полі діяльності» і все систематизувати. У цій статті ми представляємо таку систематизацію - завдання 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 - переклад статті Джеффа Фрісена
- Тестування регулярних виразів - ресурс, де можна перевіряти "регулярки" онлайн
- Майк Фіцджеральд "Регулярні вирази" - короткий і простий підручник.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ