Що питають на співбесідах senior java developers, stokito on software

За минулі два тижні я пройшов більше двадцяти співбесід. Може більше, може менше, складно сказати, більшість з них проходив по скайпу «ось прям зараз». Ще пару таких неделек і я б побив рекорд комбатса 🙂
Трохи звісток з полів, дуже суб'єктивно:
* Мені складно судити, але відчуття що вакансій по Java в Києві помітно поменшало. Судити складно, тому що в минулий раз коли шукав роботу я був мідл рівня і був не дуже затребуваним на ринку. Ну і проект в минулий раз я знайшов за день, там шукали саме фахівця з Grails якраз як я.
Але в будь-якому випадку, нові компанії не можуть аутсорсити в Україні. Багато хто робить масовий релокейт своїх співробітників. Масово і планомірно згрібають всіх в Таллінн і Краків.
* Цього разу по Grails не зміг знайти нічого. Дуже хотів потрапити в TransferWise. у мене релевантний майстерність до цих розділів і там тлумачний тімліда, але вони в Черкасах. Я запропонував на випробувальний термін попрацювати у них в Черкасах а потім на удалёнку тільки під'їжджаючи на беклог грумніг. але сказали так їм не піде.
* Джіні реально рулить - дуже багато відгуків надійшли на моє резюме. У LinkedIn крім спрамерш теж знайшлося кілька справжніх рекрутёрш. З сайтів вакансій теж тільки по ДОУ Робота пройшовся, кілька відмінних вакансій було.
* Великі Аутсорс - походу відстій. З великих тільки Люксофт ще ворушиться і працює.
Наприклад ЕПАМ свої вакансії на ДОУ взагалі не публікує, але я зайшов на їх сайт знайшов таки відкриті позиції і зааплаілся на кілька на які підходжу, ії ... все. Жодної відповіді. Взагалі у мене таке враження що в ЕПАМ звільнили весь HR відділ, а щоб найняти нових немає ейчаров.
UPD: епамовскій рекрутер надіслав в личку:

У Глобалоджіка вакансій по Джаві нiхто не з'єднувався взагалі, також у Інфопульс. У Сіклум було вакансій кльових, але видать не зацікавило моє резюме. Відписалися тільки вчора, коли я вже Шофер прийняв. Але ж це все лідери в топах.
Люксофт не підкачав, дві круті позиції запропонували, шкода мого рівня не вистачило - там потрібно було добре вміти многопоточность.
* Так, до речі до заголовку поста, сіньyoров запитують по суті теж що і мідлів і джуніор: Java Core, колекції, мапінг в хибернейт, Скоуп бінов в Спринг, пару задачок на агрегацію SQL, але в добавок особливо вже починають розпитувати низкоуровневую жесть: про то як працює Garbage Collector, як виправляти проблеми на сервері через jconsole, і особливо жорстко Concurrency - що таке ThreadLocal, volatile. Проблема в тому що конкаренсі це така жорстка тема яку ну просто неможливо вивчити не взяли участі на проекті з нею. Питання по алгоритмам майже завжди - на знання дерев і їх обхід.
Ну і як завжди до реальної практики питання зазвичай відносини майже не мають.
* Майже всі взяли моду питати логічні задачки на співбесіді і давати тестові завдання. Причому якщо логічні завдання ще хоч якось можна обґрунтувати, то тестові завдання я взагалі не розумію навіщо давати. Ось пройшов я відмінно технічне інтерв'ю, хлопцям явно сподобався, та й я б уже готовий до них йти, але немає - ось вам тестове завдання: напишіть просту веб аплікуху з імпортом в БД з CSV файлу.
А у мене через годину після них таке співбесіду призначено, а на наступний день ще три. Таку аплікуху зробити - як два пальці, але млинець це все одно час години на чотири мінімум, за які ніхто не заплатить. А коли ти погодинно попрацюєш на удалёнке то починаєш особливо цінувати час. І особливо його починаєш цінувати коли другий тиждень не заробляєш а ходиш по співбесідах.
І робити ну ось реально не хочеться: завдання не цікава, тебе по скайпу перебивають ейчари, і взагалі краще час витратити щоб освіжити знання про конкаренсі щоб завтра на співбесіді не червоніти. І навіть примітивну програму писати все таки довго: ти, наприклад, можеш відмінно нишпорити хибернейт, але тобі все одно потрібно буде витратити час щоб його правильно підключити до проекту, тому що ти цього не робив ніколи а працював на роботі де вже готове додаток було. Потім прописати мапнігі, наколбасіть тести, побороти пару незрозумілих винятків через помилок - ніби й фігня, а на кожному новому проекті з'їдає купу часу.

І що цим тестовим завданням хотіли подивитися? Як я пишу код? Так для цього можна на гітхаб зайти подивитися, я ж його вказав в резюме. Ну або прямо на собеседовніі можна простий код написати.
Дізнатися як я шарю технічну жесть і знання технологій? Ну так тут завдання на один контролер з десятьма рядками коду. Ну і знову таки - резюме, гітхаб, питання.
В іншій компанії дали звичайну TDD кату пройти. Знову таки: ну і що з цієї кате можна дізнатися? Шарю я ТДД? Ну шарю, це можна і питанням з'ясувати. Може яку архітектуру я наваял в результаті? Так по ТДД архітектура завжди виходить не найкраща, зате робоча. Це завжди так при розробці знизу вгору.
І так, теж п'ять годин її встромляти не цікаво.

Тобто з тестовими завданнями така фігня: великими їх робити не можна, тому що часу немає і бажання робити безкоштовно. А так по ним можна визначити тільки те що вже тепер визначили на тих співбесіді.

А ось що мені реально сподобалося і вважаю хорошою практикою - це коли мені дали лістинг коду і запитали які ти тут проблеми бачиш і як би отрефакторіл.
І тут так, відразу поїхало: тут непотрібний автобоксінг, тут дженерик б дописати, ось це в метод заекстрактіть, тут в JDBC краще зробити prepared statement і ще забули ресурс закрити. 15 хвилин за які інтерв'ювера дізнався про мене в рази більше ніж за п'ятигодинне тестове завдання.
Коли наступного разу буду сам проводити співбесіду обов'язково візьму цю практику.

Вообщем або мені не щастило, або я якось не зрозумів приколу тестових завдань, але за фактом поки я знайшов час і зробив тестове для компанії куди був готовий йти прям зараз вже отримав Шофер від іншої, більш прикольною.

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

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

Хороший доповідь про те що варто питати а що ні:

Приблизно ті ж питання мені зустрічалися на позицію Middle, про варіанти рефакторінга цікаво, хотілося б спробувати) Щодо тестових завдань. я зробив кілька штук в процесі пошуку роботи, так ось, чим більше їх робиш, тим швидше виходять наступні. Якщо порівняти перші з останнім різниця в часі у мене раз в 6-7, оскільки завдання однотипні. Хоча згоден, при думці про чергове тестовому завданні подумки починаю керуватися. Прикро що якщо з ним щось не так і тобі відмовляють після перевірки найчастіше немає навіть нормального фідбека, маскимум що можна отримати у відповідь «не задовольняє вимогам», після такого підходу відпадає бажання спілкуватися з рекрутером, навіть якщо у нього є інші вакансії .

За статтю спасибі, а за «взагалі» я б вбивав. Морально. І довго 🙂

I'm Java / Grails lover, consultant, coach and founder of IT community @kranonit in my native city.

Що питають на співбесідах senior java developers, stokito on software
#kranonit Клуб анонімних IT-спеціалістів у Кривому Розі
Що питають на співбесідах senior java developers, stokito on software
Що питають на співбесідах senior java developers, stokito on software
Що питають на співбесідах senior java developers, stokito on software
Що питають на співбесідах senior java developers, stokito on software
IT Juniors