Співбесіда на Backend Software Engineer для починаючого розробника

18 December, 2022

5 min read

грошіробота

Останнє оновлення: 18 December, 2022

Про співбесіди в іноземні компанії в інтернеті багато інформації. Існують навіть цілі платформи (LeetCode, AlgoExpert), які допомогають підготуватись до технічного інтервʼю.

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

Перший етап – скрінінг чи знайомство с рекрутером

Рекрутер працює, як посередник між кандидатом та замовником (зазвичай, це технічний лід). Мета рекрутера: відділити нерелеватних для позиції кандидатів, щоб не гаяти час замовника.

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

Я ставив експеримент: відкликався на всі вакансії, що мені пропонували, навіть не читаючи текст вакансії. Рекрутери теж висилали мені їх, не читаючи, і це я прекрасно знав тому, що...

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

Коли рекрутер відбирає розробника по критеріям, які вам і мені не відомі, ви отримуєте пропозицію на дзвінок. На дзвінку рекрутер повинен зʼясувати декілька речей:

  1. Чи ви взагалі адекватна людина? Ви можете звʼязати речення в слова?
  2. Чи те, що ви написали в вашому резюме, хоч трохи співпадає з тим, що ви розказуєте? Без технічних деталей.
  3. Ви живий і той, за якого себе видаєте.

Не так багато.

Дзвінок з рекрутером більше пів години зазвичай не займає. Ви повинні розказати коротко про себе, а рекрутер вам розповість коротко про роботу: які умови, колектив, команда і таке інше.

Від вас, як від розробника, є повинні очікування.

  1. Не треба принижувати рекрутера чи її компанію. Якщо ви прийшли на співбесіду, то ведіть себе пристойно. Не хочете приходити – скасуйте зустріч заздалегідь.
  2. Не засипайте рекрутера технічними термінами. Для цього в вас буде технічне інтервʼю.
  3. Уважно слухайте, налаштуйте камеру і мікрофон, і перевірте налаштування перед дзвінком. Не потрібно говоріти не по ділу. Відстороненно втикати в сусідню вкладинку в браузері теж не треба. Це не такий довгий дзвінок і скоріш за все, вся інформація, що вам повідомить рекрутер, вам потім знадобиться.
  4. В питаннях вже можуть бути зашифровані відповіді, які рекрутер очікує від вас почути. Просто слухайте питання і відповідайте те, що вам підказують.

Це перший і найлегший етап співбесіди.

Технічний етап. Які питання?

Теоретичні питання з фокусом на вашу мову програмування

Українські компанії люблять теоретичні питання про мову програмування, на якій ви будете писати. Ось основні питання, які мене завжди питали:

  • Особливості мови, модель памʼяті. Конкурентність. Паралелізм. Якщо є сміттєзбірник, то про нього теж потрібно розказати.
  • Асинхронність і рантайм, який використувується мовою для того, щоб ганять асінхронні функції
  • Структури і типи даних, які найчастіше використовуються в мові

Наприклад:

  • як зроблен лист чи словник у Пітоні
  • патерни проектування: сінглтон, фабріка, декоратор та інші
  • Генератори і 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 дні.

Що відмічали в мене, як в кандидата?

Інтервʼю, і особливо технічні, проходять краще, якщо є можливість продемонструвати свої сильні сторони. Однією з моїх сильних сторон є комунікація.

Я згадував мимохіть, що я:

  1. Постійно беру участь у хакатонах з різних дісциплін. За 6 годин зробив з нуля повністю працюючий сайт для організації в Бангладеші (безкоштовно, як волонтер)
  2. Маю інженерну освіту.
  3. Маю досвід життя в різних країнах. Багато подорожував (автостопом і без грошей)

Це мене рятувало там, де я мог не набирати достатньо балів з технічної частини. Я намагався привернути увагу до інших поінтів, щоб людина повірила в мене.

Бо співбесіда це про довіру. Чи зможе той, хто вас наймає, довірити вам свій проект? Чи свого клієнта?

Мої питання для компанії

Я зробив для себе лист з питаннями, які допомогали мені підтримувати інтервʼю цікавим і отримати мені необхідну інформацію про людей і компанію.

  • Що в моєму профілі сподобалось чи запамʼяталось? (для рекрутера)
  • Які інші люди в команді зараз є? Чи можна їх описати? (для тех ліда, продакт менеджера)
  • Чи є в мені щось, що вам запамʼяталось? Як в кандидата.
  • Як часто у вас в компанії промоутять людей? Чи є якийсь формальний процес?
  • Чи є у вас якась формальна процедура оцінки рівня розробника? Як ви розумієте хто Middle, а хто Senior?

Якщо це продуктова компанія, то обовʼязково роблю декілька речей:

  • шукаю додаток, якщо можливо, то відкриваю у веб браузері, йду до web tools, дивлюсь network tab. Це допомогає мені знайти додаткові теми для дискусії на співбесіді і зробити комплімент (чи, навпаки, повідомити про те, що зауважив)
  • питаю, в чому унікальна пропозиція продукта, чим (як вважають співробітники компанії) продукт відрізняється від аналогів на ринку
  • питаю про історію команди і продукта, про стратегічні плани на майбутнє

Підсумок і що не треба робити на співбесідах

В розмовах на співбесідах я б окреслив декілька тем, які, як я бачив, кандидати часто забувають:

  • Емоційність. Я персонально вважаю, що на співбесіді не місце для емоцій. Співбесіда – це робота (ваша для себе). Якщо все пройде так, як хочете ви, то ви отримаєте багато грошей на якийсь певний термін, зможете витратити їх на себе і сімʼю. Це важливо для вас. Тримайте емоції при собі. Можно їх окремо виписувати в свій нотатник. Нервувати – це нормально, але не забувайте, що не тільки ви можете нервувати, а ще й люди, які вас співбесідують.
  • Надмірна дружелюбність чи спроба стати друзями. Друзі не дають друг другу грошей за роботу. Не треба намагатися зробити рекрутера чи наймаючого менеджера вашим другом, якщо ви вперше зустрілися на співбесіді.
💡
Ще я персонально ніколи не приймаю перший офер. Я зазвичай кажу, що подумаю, і думаю. Поки я думаю, зазвичай вже є другий офер, і я маю можливість вибрати що мені більше подобається. Так склалося, що другий офер в мене був завжди більш якісний, ніж перший.

На цьому все. Бажаю успішного полювання на ваш ідеальний офер.

Підписатися на мою розсилку

Давайте подивимось, чи можемо ми стати друзями.

Схожі дописи

Troy Köhler

TwitterYouTubeInstagramLinkedin