💳 Кожен. Повинен. Мати. Trustee Plus: криптогаманець і європейська платіжна картка з лімітом 50к євро 👉
Марія БровінськаУвійти в ІТ
19 жовтня 2023, 14:50
2023-10-19
Мануал для джуна. Що необхідно знати, вміти та розуміти для підкорення Java
Про те, з чого розпочати вивчення Java, що робити, коли не все вдається з першого разу, як і де шукати додаткові знання, розповідає Богдан Чупіка, автор курсу та Java Team Lead в Mate academy.
Чи щось змінилося у вимогах до джунів за останній рік?
Кожного року вимоги ростуть. Але не так в плані нових технологій, як глибини знань. Можливо, це повʼязано з підвищеною конкуренцією останнім часом (по всіх напрямах, не тільки java).
Щодо нових вимог у технологіях, то дедалі частіше зустрічаються досвід роботи з докером та/або мікросервісами. Тому Docker вже є в нашій навчальній програмі, мікросервіси — плануються.
Чого очікувати на співбесіді
Теорія
Майже завжди питають по колекціях, ООП, БД (Hibernate, SQL), і про веб (більшою мірою в контексті Spring framework).
Core
Перерахуйте всі методи класу Object.
Перерахуйте принципи ООП.
Опишіть ієрархію exceptions.
В чому полягає контракт equals&hashCode?
Яку проблему вирішують Generics? Що таке стирання типів?
Що таке Immutable object? Як створити Immutable клас?
Що таке SOLID? Опишіть кожен принцип.
Collections
Опишіть ієрархію колекцій.
У чому різниця між ArrayList та LinkedList? У якій із цих колекцій буде відпрацьовувати вставка швидше на початок, середину й кінець?
Яка алгоритмічна складність операцій get (int index) в ArrayList і LinkedList?
Як під капотом працює HashMap? Опишіть, як відбувається resize () в HashMap?
Опишіть принцип роботи Stack i Queue.
Java 8
Хоча у вересні вже вийшов у світ реліз JDK 21, проте досі ставлять багато питань, повʼязаних саме з 8-ю джавою.
Які нововведення зʼявилися у 8-й джаві?
Які нововведення зʼявилися після 8-ї джави?
Що таке стріми в джава? Які ви знаєте 2 типи операцій в Stream API?
У чому різниця між методами `map ()` i `flatMap ()` в Stream API? На ці методи може бути лайвкодинг.
Що таке Optional? Як він влаштований під капотом?
Що таке лямда?
БД
Які види джойнів в SQL ви знаєте? У чому між ними різниця? Тут може бути лайвкодинг.
Для чого потрібен Statement у JDBC? У чому різниця між Statement i PrepearedStatement?
Опишіть у деталях процес, як із джава-коду кинути запит до БД і отримати результат у вигляді джава-обʼєкту.
Що таке ORM? Які основні інтерфейси з фреймворку Hibernate ви знаєте?
Перерахуйте основні вимоги до Entity-класу в Hibernate. Яку проблему вирішує кожна з наведених вимог?
Які найбільш популярні причини виникнення LazyInitializationException і способи її вирішення?
Опишіть суть патерну Proxy.
Опишіть стратегії наслідування сутностей в Hibernate
Spring
Перерахуйте основні модулі Spring framework, із якими ви працювали
У чому різниця між @Controller i @RestController?
У чому різниця між @RequestParam i @PathVariable? Коли що краще використовувати?
Опишіть життєвий цикл біна.
Які ви знаєте скоупи біна?
Як отримати інформацію про поточного користувача з використанням Spring Security? Що таке Authentication?
Як працюють фільтри в Spring Security?
Багатопотоковість
Які проблеми можуть виникнути в коді при використанні багатопотоковості?
Що таке монітор?
Що таке race condition? Як пофіксити?
Як працює ключове слово synchronized?
Для чого потрібне ключове слово volatile?
Що таке deadlock?
Як тестувати багатопотоковий код?
Як розвʼязати проблему філософів, що обідають (Dining philosophers problem)?
Для чого потрібні Lock-и? Semaphore?
Лайвкодинг
В основному використовують завдання на стріми.
1. Дано список рядків, що представляють імена. Відфільтруйте імена, коротші за 4 символи. Ті, що залишилися, виведіть у верхньому регістрі.
2. Задано список працівників з атрибутами name та salary. Обчисліть середню зарплату працівників і знайдіть ім’я працівника з найвищою зарплатою.
3. Дано список слів. Згрупуйте слова за їхньою довжиною, вказавши кількість символів для кожної групи.
А ще можуть бути лайвкодинг-задачі на SQL. В основному це задачі на JOIN і на групування даних.
1. Отримайте всіх клієнтів, які розмістили принаймні одне замовлення. Відобразіть ім’я клієнта та ідентифікатор замовлення.
Tables:
Customers: CustomerID, CustomerName, ContactName, Country
Orders: OrderID, CustomerID, OrderDate
2. Для всіх замовлень, розміщених конкретним працівником, отримайте ім’я працівника, ідентифікатор замовлення та ідентифікатор продукту, пов’язаних з цим замовленням.
3. Отримайте загальну суму продажів для кожної категорії продуктів.
Tables:
Products: ProductID, ProductName, CategoryID
Categories: CategoryID, CategoryName
Sales: SaleID, ProductID, SaleAmount
Що може бути в тестовому?
Є два основні блоки тестових: без використання фреймворків і з використанням фреймворків, в основному Spring Boot. В останніх зазвичай вимагають написати дуже простий контролер з набором ендпоінтів. В додатку має бути та чи інша БД, іноді використання стороннього АПІ, тести та Docker.
На що я звертаю увагу під час інтервʼю
Soft skills: неконфліктність, відкритість до фідбеку, попередній досвід роботи в команді.
Наскільки швидко людина орієнтується на мої підказки.
Наскільки глибоким є саме розуміння тої чи іншої концепції/структури даних/фреймворку тощо. Не потрібно зазубрювати матеріал — потрібно розуміти, яку проблему той чи інший код вирішує.
Якщо в кандидата є досвід, то прошу описати його найскладнішу або найцікавішу задачу, розповісти, як вирішував її. Якщо комерційного досвіду немає, то прошу навести приклад з процесу навчання.
Що може піти не так?
Забути гарно описати свої попередні досягнення. Банальний приклад студентів — люди, які виконували функції тімліда під час роботи над груповим проєктом, не говорили про це на співбесідах.
Розгубитися у відповіді, якщо відоме вам питання формулюють по-іншому, не так, як ви чули до цього.
І, звичайно, перенервувати. Від цього ніхто не застрахований, тому варто робити тестові прогони з друзями й відповідати на часті запитання.
Одвічне питання: чим Java відрізняється від JavaScript. Детальний гайд
Для когось відповідь на питання про різницю Java й JavaScript є очевидною — тут починаються жарти про подібність між килимом й автомобілем (Java схожа на JavaScript так само, як «car» на «carpet»). Попри це, деякі люди ще можуть мати помилкове уявлення, вважаючи, що це дві назви тої самої мови, або що технології тісно пов’язані. Спробуємо трохи прояснити ситуацію.
Запускай код прямо в браузері: найкращі онлайн-компілятори для C++, PHP, Python, Java, C#, Go і не тільки
Не завжди є доступ до улюбленої IDE, або час на її запуск. Але коли потрібно швидко перевірити якийсь простий функціонал або втілити нову ідею, стане у пригоді онлайн-компілятор.
12 онлайн-курсів із Java для новачків і профі у 2022 році
Java, як і раніше, входить до списку найпопулярніших мов програмування. Разом із Digital Defund склали список курсів, які підійдуть як новачкам, так і людям із досвідом програмування, і допоможуть опанувати цю потрібну мову.
112 відгуків на вакансії, $100 за тестове та робота мрії. Історія моделі з Луцька, яка об'їздила півсвіту, через пандемію змінила плани й тепер навчає IT інших
Надя Адамович — у минулому успішна модель. Та через пандемію зірвався контракт на роботу до Китаю, тому Надія змушена була працювати таргетологом, сушисткою, а згодом вирішила піти в IT. Нині дівчина — UI/UX Designer, заочно навчається на факультеті міжнародно-економічних відносин у Луцькому політехнічному інституті та працює ментором у Mate academy. Розповідаємо її історію, що надихає.