Керівництво для розробників: 7 рад по проходженню співбесіди


Команда IT-рекрутингового агентства GMS в своєму блозі розповідає про пошук роботи для розробників, наприклад, як їм слід складати своє резюме, щоб отримати запрошення на співбесіду. Команда проекту Triplebyte, який займається підбором ІТ-фахівців для багатьох відомих стартапів, опублікувала матеріал, в якому дала поради, які допоможуть програмістам успішно пройти інтерв'ю. Автори блогу GMS підготували адаптацію цієї замітки.

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

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

Важливо демонструвати залученість

Ентузіазм під час співбесіди грає важливу роль. Дуже часто розробники «завалюють» інтерв'ю своїми відповідями на НЕ-технічні питання. У таких випадках в якості причини відмови представники компанії можуть вказати «невідповідність корпоративної культури». У 9 з 10 випадків це просто означає відсутність захопленості процесом співбесіди у кандидата і тим, чим займається сама компанія. Можна довго сперечатися, навіщо це потрібно, але людям, які працюють в компанії подобається, коли хтось демонструє щирий інтерес в її роботі. Вони переконані, що захоплені колеги будуть працювати з подвоєною енергією.

Подібний інтерес досить просто продемонструвати. Це не означає, що потрібно когось обманювати. Краще просто уявити, що співбесіда - це перше побачення. Навряд чи дівчина захоче чути на першій зустрічі, що вона далеко не перша, і на її місці легко могла виявитися інша. Зовсім ні, вона хоче знати, що вона єдина і неповторна, нехай навіть це буде і не зовсім так. Так, переважна більшість людей просто хоче мати нормальну роботу з хорошою зарплатою. Але відверто заявляти про це на співбесіді зовсім не обов'язково.

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

Відповіді на типові запитання потрібно вивчити
Істотна частка питань на співбесіді програмістів зачіпає такі теми, як структури даних і алгоритми. Компанія Triplebyte зібрала і класифікувала ці питання, опитавши своїх кандидатів. З'ясувалося, що 70% з них, так чи інакше, пов'язані з алгоритмами. Ось список тем від компаній з пулу акселератора Y Combinator:

  • хеш-таблиці;
  • пов'язані списки;
  • алгоритми пошуку в ширину і глибину;
  • швидке сортування, сортування злиттям;
  • бінарний пошук;
  • матриці;
  • динамічні масиви;
  • бінарне дерево пошуку;
  • динамічне програмування;
  • аналіз складності алгоритмів.

Залежно від досвіду конкретного фахівця, все це може виглядати для нього простим або складним. Але, як би там не було, це список тем, які найчастіше трапляються на інтерв'ю в технологічних стартапи. Тому, навіть якщо всі ці речі вам добре знайомі, не зайвим буде освіжити в пам'яті цю інформацію. Хороша новина тут полягає в тому, що сьогодні можна легко знайти величезну кількість даних по цих темах - наприклад, на Coursera є цілий ряд цікавих курсів , Присвячених алгоритмам.

Підтримка співрозмовника завжди стане в нагоді

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

  • задавайте питання;
  • для початку запропонуйте найпростіші і переконливі рішення;
  • потім більш складні та ефективні;
  • промовляти свої думки та ідеї для кожного з варіантів;
  • тільки потім сідайте писати код.

Після того, як вам поставили запитання, почніть з того, щоб прояснити сказане. Це той випадок, коли корисно бути педантом. З'ясуйте, чи правильно ви все зрозуміли. Не повинно залишатися ніякої двозначності в завданні. Озвучте конкретні приклади для вхідних даних, щоб переконатися, що на виході вийде коректну відповідь. Намагайтеся задавати питання, навіть якщо на 100% впевнені в своєму рішенні. Це створить враження, що ви в курсі всіх побічних варіантів і маєте уявлення про повний спектр проблеми. Але головне - це допоможе виграти час перед відповіддю. Потім можна озвучити найпростіше і переконливе рішення проблеми. Проговаривайте свої думки замість того, щоб негайно кинутися писати код. Якщо в процесі артикуляції завдання вам вдасться захопити співрозмовника, то можна отримати кілька корисних уточнень. Зазвичай кандидати прагнуть немає промовляти банальні рішення, поспішаючи продемонструвати свої навички написання коду. Це помилка. Головне - впевненість роботодавця в тому, що ви завжди можете запропонувати рішення (навіть якщо умов для його виконання під рукою в даний момент немає). Можна запитати співрозмовника, чи бажає він, щоб ви реалізували це грубе рішення задачі, або він вважає за краще знайти більш ефективне і вишукане рішення? Швидше, він віддасть перевагу другому варіанту.

При пошуку більш ефективного методу алгоритм подачі той же. Проговаривайте його, «накидають» інтерв'юеру ідеї, перш ніж сісти писати код. В процесі вам будуть задавати питання. Вони можуть ставитися до згаданих вище тем. Але, якщо немає, то нічого страшного. Згадайте про схожих завданнях, які вам доводилося вирішувати. Зазвичай ці питання стосуються стандартних застосувань алгоритмів. Як тільки ви прийдете до спільної думки з приводу оптимального рішення, настане час писати код. Залежно від компанії, вам запропонують зробити це на комп'ютері або на дошці - у багатьох великих організаціях віддають перевагу другому варіанту . Але, так як ви все вже проговорили, заминки не повинно виникнути. Для більшої переконливості, запитаєте, чи хочуть вони, щоб ви також написали і перевірки тест.

Не варто боятися складних тем

На співбесіді розробникам зазвичай задають питання по їх спеціалізації, але це не означає, що кандидати не попадеться глобальне питання зі сфери проектування. Як правило, на таких завданнях компанії люблять тестувати просунутих фахівців. Вас можуть запитати, як створити складну систему - це може бути соціальна мережа або API для банку. Може здатися, що для відповіді на такі питання необхідно спеціальні знання. Але не варто сприймати все занадто серйозно. Ніхто насправді не очікує, що ви з листа створите свій Facebook прямо на співбесіді. Але роботодавцю буде приємно знати, що ви володієте розумінням того, як таке завдання можна було б вирішувати. В основному, всі ці питання стосуються програмної логіки в веб-розробці. Тому до них можна легко себе підготувати. Ось кілька тем, вивчення яких буде корисно:

  • робота з протоколом HTTP;
  • бази даних: індекси і план виконання запитів; CDN;
  • алгоритми і технології кешування; балансувальник навантаження;
  • розподілені системи.

Потрібно не тільки знати про ці речі, але і розуміти, як вони працюють разом в складних системах - тут доведеться почитати літературу. Починайте розмову з загальних речей і понять, спускаючись потім на сходинку нижче. На кожному рівні можна задавати уточнюючі питання, які продемонструють рівень вашої компетенції і допоможуть знайти таку відповідь. Проговорите кілька можливих рішень. Вашому співрозмовнику, швидше за все, все одно, чи зможете ви створити реально працюючу соцмережа. Йому важливо знати, чи бачите ви проблему в цілому, чи можете вказати на недоліки і переваги різних підходів. Чи не зашкодить і заздалегідь попрактикуватися у відповідях на подібні питання.

Практичні досягнення потрібно підкреслити

Один з блоків питань на співбесіді завжди стосується досвіду роботи. Швидше за все, кандидата попросять розповісти про проекти з його участю. І тут головне - не промахнутися. Багато програмістів помилково починають видавати детальну інформацію про сторонніх проектах, безперечно, цікавих з технічної точки зору. Розповідати про те, як вони застосовували класифікатор нейронної мережі або писали граматичний бот для Twitter. Але не можна забувати про те, що співрозмовник може бути «не в темі», і тому зайві тонкощі йому складно буде зрозуміти.

Багато кандидатів перебільшують значення невеликих побічних проектів. Але інтерв'юер навіть не в курсі, чи були вони вдалими і чи дійсно кандидат брав в них участь. Варто вибрати проекти з реальними результатами і зосередитися на них в ході бесіди. Цілком можливо, що такі проекти можуть бути не такі цікаві з технічної сторони. Але вони будуть реальні. Якщо ви написав іграшку під iOS і її скачали 50 тис. Користувачів - це хороший результат. Якщо ви в період своєї практики написали інтерфейс для команди системних адміністраторів - це теж стоїть результат. Проекти, що мають практичне значення, продемонструють роботодавцю, що ви готові вирішувати актуальні завдання. Не бійтеся відповідати шаблоном і очікуванням.

Практика і ще раз практика

Ви будете набагато краще відчувати себе під час співбесіди, якщо попрактікуетесь у відповідях на стандартні запитання. Інтерв'ю - в будь-якому випадку стрес. А повторення відповідей в рази знижує ризик розгубитися. Знайдіть список типових питань щодо вашої спеціалізації і практикуйтеся. Ще краще, якщо ви будете записувати ваші відповіді на папір. Зовсім добре, якщо хтось із друзів або знайомих погодитися пройти з вами інтерв'ю в різних ролях. Навіть досвідчені кандидати від практики тільки виграють. Тому що обстановка на інтерв'ю категорично відрізняється від тієї, до якої ви звикли на робочому місці. Багато зоряні розробники вважають зайвим готуватися до співбесіди і програють менш досвідченим кандидатам.

Важливо показати свою затребуваність

Якщо у вас вже є пропозиції про роботу від інших компаній, можна згадати про це на співбесіді. Але важливо, щоб це не звучало як шантаж. За інших рівних, інформація про інші офферу може прискорити прийняття рішення компанією-роботодавцем.Можна запитати співрозмовника, чи бажає він, щоб ви реалізували це грубе рішення задачі, або він вважає за краще знайти більш ефективне і вишукане рішення?