Про співбесіди в іноземні компанії в інтернеті багато інформації. Існують навіть цілі платформи (LeetCode, AlgoExpert), які допомогають підготуватись до технічного інтервʼю.
Про співбесіди в українських компаніях матеріалу не так багато, тому я, як своєрідний інсайдер, спробую допомогти зорієнтуватися в тому, як це відбувається.
Перший етап – скрінінг чи знайомство с рекрутером
Рекрутер працює, як посередник між кандидатом та замовником (зазвичай, це технічний лід). Мета рекрутера: відділити нерелеватних для позиції кандидатів, щоб не гаяти час замовника.
Рекрутер чи ейчар може писати вам, не читаючи вашого профілю, бо єдина її чи його задача – набрати как можно більше кандидатів, щоб було з кого вибирати, і після цього назначити відібраним дзвінки.
Я ставив експеримент: відкликався на всі вакансії, що мені пропонували, навіть не читаючи текст вакансії. Рекрутери теж висилали мені їх, не читаючи, і це я прекрасно знав тому, що...
- ...в деяких я перепитував на дзвінку чи читали вони мій профіль
- ...навіть читаючи текст вакансії по діагоналі, було очевидно, що я не підходжу.
Коли рекрутер відбирає розробника по критеріям, які вам і мені не відомі, ви отримуєте пропозицію на дзвінок. На дзвінку рекрутер повинен зʼясувати декілька речей:
- Чи ви взагалі адекватна людина? Ви можете звʼязати речення в слова?
- Чи те, що ви написали в вашому резюме, хоч трохи співпадає з тим, що ви розказуєте? Без технічних деталей.
- Ви живий і той, за якого себе видаєте.
Не так багато.
Дзвінок з рекрутером більше пів години зазвичай не займає. Ви повинні розказати коротко про себе, а рекрутер вам розповість коротко про роботу: які умови, колектив, команда і таке інше.
Від вас, як від розробника, є повинні очікування.
- Не треба принижувати рекрутера чи її компанію. Якщо ви прийшли на співбесіду, то ведіть себе пристойно. Не хочете приходити – скасуйте зустріч заздалегідь.
- Не засипайте рекрутера технічними термінами. Для цього в вас буде технічне інтервʼю.
- Уважно слухайте, налаштуйте камеру і мікрофон, і перевірте налаштування перед дзвінком. Не потрібно говоріти не по ділу. Відстороненно втикати в сусідню вкладинку в браузері теж не треба. Це не такий довгий дзвінок і скоріш за все, вся інформація, що вам повідомить рекрутер, вам потім знадобиться.
- В питаннях вже можуть бути зашифровані відповіді, які рекрутер очікує від вас почути. Просто слухайте питання і відповідайте те, що вам підказують.
Це перший і найлегший етап співбесіди.
Технічний етап. Які питання?
Теоретичні питання з фокусом на вашу мову програмування
Українські компанії люблять теоретичні питання про мову програмування, на якій ви будете писати. Ось основні питання, які мене завжди питали:
- Особливості мови, модель памʼяті. Конкурентність. Паралелізм. Якщо є сміттєзбірник, то про нього теж потрібно розказати.
- Асинхронність і рантайм, який використувується мовою для того, щоб ганять асінхронні функції
- Структури і типи даних, які найчастіше використовуються в мові
Наприклад:
- як зроблен лист чи словник у Пітоні
- патерни проектування: сінглтон, фабріка, декоратор та інші
- Генератори і lazy iterators
- static, instance, class methods
Ще люблять питати про фреймворки і як вони зроблені. В мене питали, як зроблен режим debug в Джанго.
💡
Якщо ви сноб, такий, як я, працюйте в продуктових компаніях. Як я. Там задають справді цікаві питання на співбесідах.
System Design чи архітектура популярних бібліотек
Ніхто не просив намалювати новий інстраграм.
Просили:
- розказати порядок моїх дій, якщо я бачу, що якийсь важливий сервіс вийшов з ладу
- як би я запускав MVP продукта, працюючи з клієнтом один на один. Описати послідовність дій від переговорів до презентації результатів.
- описати, як можна зекономити грошей на хмарах (AWS)
- описати послідовно, як зробити шардінг в постгресі
- розповісти, як популярна пітонівська ORM – SQLAlchemy визначає з якою базою даних вона працює
- описати базову архітектуру кубернетес кластера (це вже не зовсім для починаючих)
Дуже люблять питання про фреймворки
Тут нічого сказати не можу.
Типові питання для пітоніста:
- Навіщо blueprints в Flask?
- Куди дівати cpu-bounded tasks в асінхронному фреймворку?
- Як зробити гугл аутентіфікацію на Джанго?
Ці питання гарно відокремляють розробників, які робили щось в реальному сервісі, і розробників, які прочитали 5 статей на кожну тему. Не можу сказати, що питання 100% не мають сенсу, бо сенс в них є.
Про бази даних теж будуть питання
Іноді питають про індекси, типи ізоляції транзакцій, який потрібен в якому випадку. Для того, щоб підготуватись до питань по базі даних, уважно слухайте, що вам розказує про проект рекрутер і не забудьте почитати текст вакансії – там вже повинна бути згадка про технічний стек проекту.
Якщо ви на співбесіді в аутсорс в штат, то можуть питати про різні бази даних, але питання не будуть надто глубокими.
Популярні питання: розказати про недоліки і переваги noSQL баз даних, чи навпаки – реляційної моделі.
Про безпеку не питають
З пʼяти технічних співбесід в мене на жодній не спитали про безпеку коду. В європейських компаніях це питають часто. Особливо, про те, як шифрувати і зберігати паролі.
💡
Якщо вам цікава тема, вже можна жити і розробляти продукти взагалі без аутентифікації по паролю.
Що мені зазвичай допомогає підготуватись до технічного інтервʼю?
З трьох технічних інтервʼю в мою останнюю пошукову сесію, я получив два офери. Так, як я вважаю це гарним результатом, то я дозволю собі поділитися досвідом.
Мені допомогли ці книги: Designing Data-Intensive Applications и Learning SQL by Alan Beaulieu.
І ось ці YouTube канали:
Коли мені було потрібно пройти співбесіду максимально добре, я витрачав на підготовку 2 дні.
Що відмічали в мене, як в кандидата?
Інтервʼю, і особливо технічні, проходять краще, якщо є можливість продемонструвати свої сильні сторони. Однією з моїх сильних сторон є комунікація.
Я згадував мимохіть, що я:
- Постійно беру участь у хакатонах з різних дісциплін. За 6 годин зробив з нуля повністю працюючий сайт для організації в Бангладеші (безкоштовно, як волонтер)
- Маю інженерну освіту.
- Маю досвід життя в різних країнах. Багато подорожував (автостопом і без грошей)
Це мене рятувало там, де я мог не набирати достатньо балів з технічної частини. Я намагався привернути увагу до інших поінтів, щоб людина повірила в мене.
Бо співбесіда це про довіру. Чи зможе той, хто вас наймає, довірити вам свій проект? Чи свого клієнта?
Мої питання для компанії
Я зробив для себе лист з питаннями, які допомогали мені підтримувати інтервʼю цікавим і отримати мені необхідну інформацію про людей і компанію.
- Що в моєму профілі сподобалось чи запамʼяталось? (для рекрутера)
- Які інші люди в команді зараз є? Чи можна їх описати? (для тех ліда, продакт менеджера)
- Чи є в мені щось, що вам запамʼяталось? Як в кандидата.
- Як часто у вас в компанії промоутять людей? Чи є якийсь формальний процес?
- Чи є у вас якась формальна процедура оцінки рівня розробника? Як ви розумієте хто Middle, а хто Senior?
Якщо це продуктова компанія, то обовʼязково роблю декілька речей:
- шукаю додаток, якщо можливо, то відкриваю у веб браузері, йду до web tools, дивлюсь network tab. Це допомогає мені знайти додаткові теми для дискусії на співбесіді і зробити комплімент (чи, навпаки, повідомити про те, що зауважив)
- питаю, в чому унікальна пропозиція продукта, чим (як вважають співробітники компанії) продукт відрізняється від аналогів на ринку
- питаю про історію команди і продукта, про стратегічні плани на майбутнє
Підсумок і що не треба робити на співбесідах
В розмовах на співбесідах я б окреслив декілька тем, які, як я бачив, кандидати часто забувають:
- Емоційність. Я персонально вважаю, що на співбесіді не місце для емоцій. Співбесіда – це робота (ваша для себе). Якщо все пройде так, як хочете ви, то ви отримаєте багато грошей на якийсь певний термін, зможете витратити їх на себе і сімʼю. Це важливо для вас. Тримайте емоції при собі. Можно їх окремо виписувати в свій нотатник. Нервувати – це нормально, але не забувайте, що не тільки ви можете нервувати, а ще й люди, які вас співбесідують.
- Надмірна дружелюбність чи спроба стати друзями. Друзі не дають друг другу грошей за роботу. Не треба намагатися зробити рекрутера чи наймаючого менеджера вашим другом, якщо ви вперше зустрілися на співбесіді.
💡
Ще я персонально ніколи не приймаю перший офер. Я зазвичай кажу, що подумаю, і думаю. Поки я думаю, зазвичай вже є другий офер, і я маю можливість вибрати що мені більше подобається. Так склалося, що другий офер в мене був завжди більш якісний, ніж перший.
На цьому все. Бажаю успішного полювання на ваш ідеальний офер.