Співбесіда на 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. Це допомогає мені знайти додаткові теми для дискусії на співбесіді і зробити комплімент (чи, навпаки, повідомити про те, що зауважив)
  • питаю, в чому унікальна пропозиція продукта, чим (як вважають співробітники компанії) продукт відрізняється від аналогів на ринку
  • питаю про історію команди і продукта, про стратегічні плани на майбутнє

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

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

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

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

ПРО АВТОРА

Трой Кёлер - програміст, який живе в Берліні, Німеччина. У нього більше 6 років досвіду роботи в IT. Раніше він працював в одному з найбільших інтернет-магазинів України, а зараз працює в Zalando. Він спеціалізується на мові програмування Rust, складних бекенд системах, розробці продуктів і інженерних платформах.

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

Схожі дописи

Troy Köhler

TwitterYouTubeInstagramLinkedin