💰🚀 USDT, BTC, ETH - це все просто купляється в Trustee Plus в пару кліків. Встановлюй 👉

Мануал для джуна. Що необхідно знати, вміти та розуміти для підкорення Java

Про те, з чого розпочати вивчення Java, що робити, коли не все вдається з першого разу, як і де шукати додаткові знання, розповідає Богдан Чупіка, автор курсу та Java Team Lead в Mate academy.

Залишити коментар
Мануал для джуна. Що необхідно знати, вміти та розуміти для підкорення 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 символи. Ті, що залишилися, виведіть у верхньому регістрі.

  • Input Sample: [«Alice», «Bob», «Charlie», «De», «Eva»]
  • Expected Output: [«ALICE», «CHARLIE», «EVA»]

2. Задано список працівників з атрибутами name та salary. Обчисліть середню зарплату працівників і знайдіть ім’я працівника з найвищою зарплатою.

  • Input Sample:

List<Employee> employees = Arrays.asList (

    new Employee («John», 50000),

    new Employee («Jane», 75000),

    new Employee («Doe», 60000)

);

Expected Output:

  • Average Salary: 61666.66
  • Highest Paid Employee: Jane

3. Дано список слів. Згрупуйте слова за їхньою довжиною, вказавши кількість символів для кожної групи.

  • Input Sample: [«apple», «banana», «cherry», «date», «kiwi», «fig», «grape»]
  • Expected Output:

{

    4 => [«kiwi», «date», «fig»],

    5 => [«apple»],

    6 => [«banana», «cherry»],

    5 => [«grape»]

}

А ще можуть бути лайвкодинг-задачі на SQL. В основному це задачі на JOIN і на групування даних.

1. Отримайте всіх клієнтів, які розмістили принаймні одне замовлення. Відобразіть ім’я клієнта та ідентифікатор замовлення.

  • Tables:
    • Customers: CustomerID, CustomerName, ContactName, Country
    • Orders: OrderID, CustomerID, OrderDate

2. Для всіх замовлень, розміщених конкретним працівником, отримайте ім’я працівника, ідентифікатор замовлення та ідентифікатор продукту, пов’язаних з цим замовленням.

  • Tables:
    • Employees: EmployeeID, FirstName, LastName
    • Orders: OrderID, CustomerID, EmployeeID
    • OrderDetails: OrderDetailID, OrderID, ProductID, Quantity

3. Отримайте загальну суму продажів для кожної категорії продуктів.

  • Tables:
    • Products: ProductID, ProductName, CategoryID
    • Categories: CategoryID, CategoryName
    • Sales: SaleID, ProductID, SaleAmount

Що може бути в тестовому?

Є два основні блоки тестових: без використання фреймворків і з використанням фреймворків, в основному Spring Boot. В останніх зазвичай вимагають написати дуже простий контролер з набором ендпоінтів. В додатку має бути та чи інша БД, іноді використання стороннього АПІ, тести та Docker.

На що я звертаю увагу під час інтервʼю

Soft skills: неконфліктність, відкритість до фідбеку, попередній досвід роботи в команді.

Наскільки швидко людина орієнтується на мої підказки.

Наскільки глибоким є саме розуміння тої чи іншої концепції/структури даних/фреймворку тощо. Не потрібно зазубрювати матеріал — потрібно розуміти, яку проблему той чи інший код вирішує.

Якщо в кандидата є досвід, то прошу описати його найскладнішу або найцікавішу задачу, розповісти, як вирішував її. Якщо комерційного досвіду немає, то прошу навести приклад з процесу навчання.

Що може піти не так?

Забути гарно описати свої попередні досягнення. Банальний приклад студентів — люди, які виконували функції тімліда під час роботи над груповим проєктом, не говорили про це на співбесідах.

Розгубитися у відповіді, якщо відоме вам питання формулюють по-іншому, не так, як ви чули до цього.

І, звичайно, перенервувати. Від цього ніхто не застрахований, тому варто робити тестові прогони з друзями й відповідати на часті запитання.

Тільки починаєш шлях в IT? 17 мануалів для джунів що підкажуть як стати професіоналом своєї справи
Тільки починаєш шлях в IT? 17 мануалів для джунів, що підкажуть, як стати професіоналом своєї справи
По темi
Тільки починаєш шлях в IT? 17 мануалів для джунів, що підкажуть, як стати професіоналом своєї справи
Читайте головні IT-новини країни в нашому Telegram
Читайте головні IT-новини країни в нашому Telegram
По темi
Читайте головні IT-новини країни в нашому Telegram
УЧАСТЬ В АЗАРТНИХ ІГРАХ МОЖЕ ВИКЛИКАТИ ІГРОВУ ЗАЛЕЖНІСТЬ. ДОТРИМУЙТЕСЯ ПРАВИЛ (ПРИНЦИПІВ) ВІДПОВІДАЛЬНОЇ ГРИ.
Ліцензія видана ТОВ "СЛОТС Ю.ЕЙ." на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 15.09.23 (рішення КРАІЛ №245 від 31.08.2023); ТОВ "СЛОТС Ю.ЕЙ." – на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 26.04.2021 (рішення КРАІЛ №150 від 12.04.2021); ТОВ «СПЕЙСИКС» – на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 08.02.2021 (рішення КРАІЛ №34 від 02.02.2021); ТОВ «ГЕЙМДЕВ» – на провадження діяльності з організації та проведення азартних ігор казино у мережі Інтернет від 16.02.2021 (рішення № 47 від 10.02.2021).
Читайте також
Одвічне питання: чим Java відрізняється від JavaScript. Детальний гайд
Одвічне питання: чим Java відрізняється від JavaScript. Детальний гайд
Одвічне питання: чим Java відрізняється від JavaScript. Детальний гайд
Для когось відповідь на питання про різницю Java й JavaScript є очевидною — тут починаються жарти про подібність між килимом й автомобілем (Java схожа на JavaScript так само, як «car» на «carpet»). Попри це, деякі люди ще можуть мати помилкове уявлення, вважаючи, що це дві назви тої самої мови, або що технології тісно пов’язані. Спробуємо трохи прояснити ситуацію.
Запускай код прямо в браузері: найкращі онлайн-компілятори для C++, PHP, Python, Java, C#, Go і не тільки
Запускай код прямо в браузері: найкращі онлайн-компілятори для C++, PHP, Python, Java, C#, Go і не тільки
Запускай код прямо в браузері: найкращі онлайн-компілятори для C++, PHP, Python, Java, C#, Go і не тільки
Не завжди є доступ до улюбленої IDE, або час на її запуск. Але коли потрібно швидко перевірити якийсь простий функціонал або втілити нову ідею, стане у пригоді онлайн-компілятор.
1 коментар
12 онлайн-курсів із Java для новачків і профі у 2022 році
12 онлайн-курсів із Java для новачків і профі у 2022 році
12 онлайн-курсів із Java для новачків і профі у 2022 році
Java, як і раніше, входить до списку найпопулярніших мов програмування. Разом із Digital Defund склали список курсів, які підійдуть як новачкам, так і людям із досвідом програмування, і допоможуть опанувати цю потрібну мову.
112 відгуків на вакансії, $100 за тестове та робота мрії. Історія моделі з Луцька, яка об'їздила півсвіту, через пандемію змінила плани й тепер навчає IT інших
112 відгуків на вакансії, $100 за тестове та робота мрії. Історія моделі з Луцька, яка об'їздила півсвіту, через пандемію змінила плани й тепер навчає IT інших
112 відгуків на вакансії, $100 за тестове та робота мрії. Історія моделі з Луцька, яка об'їздила півсвіту, через пандемію змінила плани й тепер навчає IT інших
Надя Адамович — у минулому успішна модель. Та через пандемію зірвався контракт на роботу до Китаю, тому Надія змушена була працювати таргетологом, сушисткою, а згодом вирішила піти в IT. Нині дівчина — UI/UX Designer, заочно навчається на факультеті міжнародно-економічних відносин у Луцькому політехнічному інституті та працює ментором у Mate academy. Розповідаємо її історію, що надихає.
1 коментар

Хочете повідомити важливу новину? Пишіть у Telegram-бот

Головні події та корисні посилання в нашому Telegram-каналі

Обговорення
Коментарів поки немає.