Технічне Інтерв'ю з Java: поради | GlobalLogic Ukraine

Технічне інтерв’ю з Java: запитання, лайфхаки та ключі до успіху

share
Автор: Дмитро Мрачковський, Consultant, Engineering, GlobalLogic 

У цій колонці хочемо поділитись власним досвідом у проведенні технічного інтерв’ю зокрема з технології Java.

Перш за все, визначимось з питанням, для чого ми проводимо інтерв’ю? Аби зрозуміти технічний рівень кандидата та оцінити його Soft Skills. Це може бути не так важливо для Trainee чи Junior спеціалістів, але надважливо для Senior, Lead чи менеджерів. Ще одна ціль інтерв’ю – перевірити чи підходить людина команді ментально.

Формат інтерв’ю

Які бувають формати інтерв’ю? Часто поділяють на структуроване та неструктуроване.

Структуроване інтерв’ю – це стандартний список запитань, які ви задаєте співрозмовнику, отримання відповідей та формування свого фідбеку.

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

До структурованого інтерв’ю досить легко звикнути. Більш того, такий формат дозволяє швидко зібрати та надати формальний фідбек, який потрапить у внутрішню базу компанії.  Проблема цього підходу у тому, що досить важко покрити всі теми під час однієї бесіди, адже це займає багато часу. Також, таке інтерв’ю вважають надто формальним і часто називають монотонним та нецікавим.

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

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

Структура інтерв’ю

Поговоримо про стандартні секції в інтерв’ю:

  • Привітання та невеликий small talk. Оскільки інтерв’ю для кандидатів це майже завжди стрес, вашою задачею є цей стрес мінімізувати та допомогти вашому співрозмовнику налаштуватись та розслабитись.
  • Інформація про проєкт. Оптимальний час для цього до 5 хвилин. Мета – допомогти кандидату зрозуміти чим проєкт займається, та з чим він гіпотетично матиме справу. Не вдавайтесь в найдрібніші деталі, адже вам потрібно залишити час для технічної частини інтерв’ю.
  • Soft Skill розмова. Це можливість розпитати кандидата про його попередній досвід роботи та спостерігати за тим, як людина спілкується. У цій частині ви також можете перевірити рівень володіння англійської.
  • Технічна частина інтерв’ю (про це далі)
  • Питання від кандидата. Залиште час в кінці бесіди, аби кандидат мав нагоду поставити ті запитання, які його цікавлять чи турбують.
Технічне інтерв’ю

Гадаю, що одна з найважливіших частин це, безпосередньо, технічне інтерв’ю. Наведемо кілька прикладів питань, які я та моя команда ставимо під час бесіди. Зауважимо, що питання для різних рівнів спеціалістів можуть відрізнятись за глибиною занурення у тему – це нормально.

OOP

Перша тема, це – OOP. Зазвичай запитуємо про основні принципи та агрегацію композиції, тобто головні поняття з ООР. Ці питання рекомендуємо ставити всім, проте будьте готові, що ви отримаєте різні відповіді.

Наприклад, молоді спеціалісти повинні знати про ці принципи. Але той факт, що вони їх вивчають означає серйозність їхнього ставлення до інтерв’ю. ООР це фундамент Java розробки й кандидати повинні розуміти головні принципи роботи з елементами та яким чином вони можуть допомогти.

Приклад цікавого запитання – запитання про поліморфізм. Іноді буває, що кандидат розуміє що це, вміє ним користуватися та, можливо, навіть застосовує поліморфізм на практиці, проте не може доступно пояснити та розказати про його плюси, а це досить тривожний дзвіночок, особливо якщо інтерв’ю з Senior-спеціалистом.

Особливості Java Core/ Java 8-11

Запитання по Java 8 та пізніші версії можна теж ставити всім, а особливо техлідам та архітекторам.

Часто буває, що вони зосереджуються на архітектурі та дизайні, але забувають слідкувати за розвитком технології. Наприклад, досі використовують Java 6, хоча Java 8 вийшла більше ніж 6 років тому. Інші приклади запитань можна побачити на зображенні вище.

Collections

Ще одне з обов’язкових запитань для всіх незалежно від рівня та мов програмування, якими кандидат пише, це – колекції, тобто структури даних. Можна розпочати з питання про список та множину (List, Set), fifo/lifo та про асоціативний масив.

Наприклад, пропонуємо кандидатам основні структури даних (в java це list, set, queue, set) та очікуємо, що вони знатимуть ці структури даних та зможуть пояснити чим вони відрізняються.

Хороше запитання: чим відрізняється список від кількості?

Популярна відповідь – кількість не дозволяє дублікатів, а список дозволяє. Насправді це далеко не ключова відмінність списку від множини. Основне це те, що елементи у списку зберігаються в тому порядку, в якому ви їх додаєте. Саме цими властивостями можна пояснити методи, які ви потім спостерігаєте у структурах даних. В список можна по індексу додати елемент, а в set – не можна, тому що set не гарантує порядку, і поняття індексу там немає сенсу. Ось в цьому полягає основна особливість.

Ще один приклад – HashMap. Чому це питання цікаве?

Практично всі розпочинають з кошиків (buckets), відповідаючи, що коли ми по hash-коду отримуємо bucket, то виникають певні нестикуванняколізії. Це стандартна відповідь. Мені ж тут цікаво запитати де ж ті самі buckets зберігаються. Кандидати, зазвичай, відповідають, що вони зберігаються в масиві. Далі запитую наступне: у нас є hash-код, і як же нам у масивах цих кошиків визначити індекс buckets, в які ми ці елементи додамо?

Тут є дві варіанти:

  • Люди знають як це зробити – і можна далі розпитувати. До прикладу, можна запитати як саме це робиться, для чого, та чому розмір масиву у HashMap завжди рівний. Мета цих питань, звісно, не завалити кандидата, а зрозуміти глибину його знань.
  • Люди не знають як зробити, але якимось чином знаходять рішення.
    Проте завдання не просто знайти buckets. Особливість HashMap – це амортизована константа доступу до елементу по ключу. Питання в тому, як добитися цієї константи складності пошуку елементу, і це найголовніша перевага HashMap перед будь-якою іншою імплементацією мапи. Тут важливо те, що ми не очікуємо правильної відповіді, важливо подумати та дослідити з кандидатом як можна за константний час визначити індекс в масиві. Чудовий момент, аби зрозуміти стиль мислення кандидата та побачити як він приходить до певного рішення.
Concurrency

Питання з Concurrency до Middle-спеціалістів ставляться рідко, бо люди на цих позиціях впевнено себе почувають у цій темі. Розпитувати у них деталі є беззмістовним. А от у Senior та Lead – краще запитати. Знання Concurrency для Senior є обов’язковим.

Серед популярних питань – про синхронізацію та що означає volatile. Всі ці запитання дають вам можливість зрозуміти наскільки добре люди розбираються у суті речей.

Data Stores

Далі, важливо з кандидатом поговорити про бази даних. Знову ж таки, це запитання для спеціалістів всіх рівнів, проте з молодими фахівцями варто подискутувати лише про базові речі, типу SQL. Middle, Senior та Tech Lead фахівців радимо запитати про теорему (обов’язково), чим відрізняються реляційні бази даних від не реляційних, коли та які саме застосовувати. Про SQL теж можна запитувати, але при необхідності.

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

JVMGC

Про JVMGC у Middle рекомендуємо запитувати на рівні загальних знань, а от для Senior та Tech Lead варто поставити більш конкретні питання. Проте, якщо у вас не вимогливий до перфомансу додаток, ці питання не є ключовими.

Ще один дуже важлива навичка, особливо для Senior та Team Lead, це – troubleshooting.

Troubleshooting

Це вміння зрозуміти в чому проблема, під’єднатися до неї моніторинг-інструментом (наприклад, Java Mission Control), зібрати дані та успішно розв’язати проблему на продакшені.

Framework

По Framework варто запитувати те, що використовується на проєкті. Можна також розпитати про те, на який фреймворк хотів би інженер перейти. Важливо запитати для чого придумали Spring, яку проблему він вирішує, на якому шаблоні він побудований, тощо. Гарний приклад питання на Spring – життєвий цикл bin в контейнері.

Сподіваюсь, що ці поради допоможуть вам зробити інтерв’ю цікавими та результативними.

Бажаєте дізнатись більше про інтерв’ю? Тоді вам будуть цікавими такі статті:

  1. Як пройти інтерв’ю з клієнтом від Олександри Скібіної, Project Manager, Kharkiv Agile Practice Head, Consultant, GlobalLogic.
  2. Як побудувати спілкування з кандидатом найкращим чином та презентувати свій проєкт та команду найліпшим шляхом від Андрія Кульшана, Business Analyst, Product Owner, Consultant, GlobalLogic
  3. Як підготуватись до інтерв’ю, якщо ви у пошуках того самого проєкту мрії від Катерини Сич, Associate Recruiter, Consultant, GlobalLogic.

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

Blog category

Blog Categories

Top Authors

Mykola Kopanyshyn

Mykola Kopanyshyn

Solution Architect, Technology, GlobalLogic

Andriy Hyba

Andriy Hyba

Director, Engineering, GlobalLogic

Orkhan Gasimov

Orkhan Gasimov

Senior Solution Architect, Consultant, GlobalLogic

Ірина Мудь

Ірина Мудь

Junior Specialist, Marketing

Катерина Васильєва

Катерина Васильєва

People Development,  Consultant

Archive

Check out our previous articles

Load Archives