Мануал для джуна. Що необхідно знати, вміти та розуміти для підкорення 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
Нові Underdogs виробники зарядних станцій Scat та «Промавтоматика Вінниця»

З чого складаються розробки, які допомагають нашим воїнам на фронті

Читайте також
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 коментар
Від перекладача у шлюбній агенції та біч-боя до strong junior джавіста. Історія айтішника, який пройшов 12 співбесід і зміг увійти в IT під час війни
Від перекладача у шлюбній агенції та біч-боя до strong junior джавіста. Історія айтішника, який пройшов 12 співбесід і зміг увійти в IT під час війни
Від перекладача у шлюбній агенції та біч-боя до strong junior джавіста. Історія айтішника, який пройшов 12 співбесід і зміг увійти в IT під час війни
Практикувати англійську в шлюбній агенції та бігати гарячим піском як біч-бой довелося 22-річному студенту Одеської політехніки перед тим, як здійснити свою мрію й отримати роботу в IT. Історія Миколи Воронова чергового разу доводить, що досягти бажаного можливо навіть у найскладніші часи. Попри війну та невизначеність, йому вдалося отримати довгоочікувану роботу. І от він уже п’ять місяців як айтівець. Щоправда, за словами хлопця, він не отримував відмов і самостійно обирав свого роботодавця, здолавши 12 співбесід. Розповідаємо історію Миколи. 
З корабля в IT. Колишній моряк змінив море на затишний офіс в центрі Києва й тепер тестує сайти та допомагає іншим входити в IT
З корабля в IT. Колишній моряк змінив море на затишний офіс в центрі Києва й тепер тестує сайти та допомагає іншим входити в IT
З корабля в IT. Колишній моряк змінив море на затишний офіс в центрі Києва й тепер тестує сайти та допомагає іншим входити в IT
28-річний Юрій Швороб — колишній моряк. Утомившись від моря за сім років мореплавства, він вирішив змінити своє життя та світчнутися в IT. Зміна роду діяльності Юрія збіглася з повномасштабним вторгненням росії в Україну. У лютому хлопець став айтішником, отримавши спеціалізацію QA Engineer. Та він настільки сподобався викладачам Mate academy, яку закінчив, що його запросили працювати тут ментором. Своєю історією перевтілення з моряка в айтішника Швороб поділився з dev.ua.

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

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

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