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