Кріті Джоші два роки працювала програмістом в Samsung Electronics і планувала змінити роботу. Вона відправляла резюме в найпопулярніші технологічні компанії, а коли набралася впевненості, зв’язалася з Facebook. Ось її розповідь про те, як їй вдалося потрапити на співбесіду та отримати роботу.
Пошук наосліп
По дорозі на роботу або відпочиваючи від підготовки до інтерв’ю, я почала налагоджувати контакти в LinkedIn. Незабаром це перетворилося на нав’язливу ідею. Я шукала рекрутерів компаній, в які хотіла б звернутися, і відправляла їм e-mail (якщо адреса була згадана в розділі з контактною інформацією на LinkedIn) або особисте повідомлення. Я не очікувала якихось серйозних результатів, але це вселило мені оптимізм, який допоміг на підготовчому етапі.
- Порада: LinkedIn – відмінна платформа для зв’язку з рекрутерами, але для цього потрібна наполегливість. Не соромтеся звертатися до незнайомих людей. Я отримала відповідь від таких компаній, як Amazon, Microsoft, Snapchat, Bloomberg і Apple, просто відправивши повідомлення.
Як проходить співбесіда на посаду аналітика даних у Facebook
На щастя, після того, як в серпні я відправила e-mail в Facebook, їх представник мені зателефонував.
- Порада: домогтися першого дзвінка – найважча частина пошуку роботи. Почніть відгукуватися на вакансії, навіть якщо відчуваєте, що не зовсім готові. Ви можете попросити дати вам кілька місяців на підготовку, перш ніж призначити першу співбесіду.
Перша надія
Я прийшла на співбесіду, чекаючи найкращого і готуючись до гіршого. Я спілкувалася з представником підрозділу AR/VR.
- Інформація: Facebook складається з декількох підрозділів, в яких процес підбору персоналу відбувається незалежно: Facebook Engineering, Facebook АР/ВР і Facebook AI.
Вона ставила мені питання про мою нинішню посаду та досвід роботи. Більшу частину своєї кар’єри я була розробником C/C ++ з нульовим досвідом роботи в XR. Виявилося, я не підходила на ту посаду, співбесіду на яку я проходила. Мені сказали, що мою кандидатуру розглянуть тільки в тому випадку, якщо я дуже добре виявлю себе на співбесіді телефоном, тому що мій набір навичок не зовсім відповідає вимогам.
- Інсайт: тоді у Facebook Engineering було обмеження: вони розглядали тільки кандидатів з досвідом роботи понад сім років. Ймовірно, серпень – це кінець циклу підбору персоналу в компанії, коли більшість вакансій закриті. Я відчувала, що було б легше подати заяву після жовтня, на початку нового циклу набору.
Через два тижні відбулася перевірка моїх технічних знань. Співбесіда тривала 45 хвилин, протягом яких потрібно було відповісти на два питання. Вони були базовими, з простим кодом (проблема масиву і рядки). Однак під час співбесіди у вас немає можливості скомпілювати код і виконати його, тому для перевірки рекрутер повинен провести випробування і подивитися, як код буде працювати. Для цього потрібен тестовий запуск.
- Порада: тестовий запуск – це хороший спосіб налагодити код під час співбесіди. Обов’язково включіть тестові запуски у свою підготовку до співбесіди.
Для другого питання я придумала два рішення і пояснила обидва. Потім мене попросили порівняти їх і проаналізувати переваги одного перед іншим. В кінці співбесіди було відведено п’ять хвилин, щоб поставити питання представнику компанії. Я не думаю, що ці п’ять хвилин сприяють оцінці ефективності кандидата, тому турбуватися нема про що.
- Порада: Leetcode вважається хорошим сайтом для підготовки до інтерв’ю. Його розділ Leetcode discussion трохи менш популярний. Там користувачі діляться своїм досвідом співбесід (в тому числі й питаннями, які їм задавали), і можна помітити, що вони дійсно повторюються.
Очна співбесіда
Процес відбору в Facebook проходить досить швидко. Я отримала відповідь від рекрутера протягом двох днів і полетіла в Лондон, щоб пройти очний етап. Всього було заплановано чотири співбесіди.
Програмування на інтерв’ю (x 2)
Шукачам ставлять два питання, які необхідно вирішити протягом 45-50 хвилин. Були порушені такі теми, як бінарні дерева, рядок, стек і список. Спочатку обговоріть рішення з інтерв’юером, а потім напишіть свій код на дошці.
- Порада: в коді завжди є прикордонні випадки, які вимагають обробки, і нелегко передбачити це під тиском. Один з методів, який мені допоміг, – це тестовий запуск. Відразу ж після написання коду я сказала рекрутеру, що збираюся протестувати своє рішення на загальному прикладі та виявити баги самостійно. Очевидні помилки в коді виявляються при першому тестовому запуску – краще знайти їх самостійно. Під час тестових запусків ви отримуєте час передбачити прикордонні випадки.
Співбесіда з проєктування системи
Це цікавий етап, який недавно стали проводити для розробників початкового рівня. Мета полягає в тому, щоб спроєктувати систему з нуля. Формулювання завдання зазвичай виглядає так: «Створіть існуючий продукт, наприклад, WhatsApp, Facebook, Google search тощо. Розробіть конкретну функцію одного з цих додатків; скажімо, упровадьте тимчасову шкалу в додаток Facebook. Запропонуйте повністю гіпотетичний сценарій; наприклад, створіть систему для зберігання журналів трьох серверів, розташованих далеко один від одного».
До цього інтерв’ю, безумовно, потрібно особливим чином підготуватися, і найвідоміший ресурс, який може допомогти – це Grokking System Design Interview. Хороша новина: правильних відповідей немає. Ви повинні бути в змозі обґрунтувати своє рішення і бачити його слабкі сторони.
Поведінкова співбесіда
Це найпростіший етап, але не ставтеся до нього зневажливо. Будь-які труднощі під час цього етапу можуть вплинути на те, виберуть вас чи ні. Питання стосуються нетехнічних аспектів вашого досвіду, наприклад, лідерських якостей, командного духу, того, як ви справляєтеся з конфліктами тощо. Цей набір питань майже фіксований, тому відповіді можна підготувати.
- Порада: за день до співбесіди перегляньте список популярних поведінкових питань і згадайте історії зі свого професійного життя, якими можна підкріпити ваші відповіді. Використовуйте співбесіду, щоб розслабитися між технічними етапами. Підвищення впевненості після цього етапу допоможе підняти бойовий дух.
Перше розчарування
Через тиждень я отримала зворотний зв’язок. Мені здавалося, що все пройшло дуже добре, але результат виявився не таким, як я очікувала. Я отримала дуже позитивну оцінку за дві співбесіди, позитивну за один з етапів програмування і негативну за системне проєктування. Нижче – висновки, до яких я прийшла на основі досвіду і зворотного зв’язку.
Системне проєктування – вирішальний етап. Дуже важливо представити свої ідеї структурованим чином і не випускати з уваги такі деталі, як схема бази даних, визначення протоколу і так далі (див. Grokking the System Design Interview). Проявіть ініціативу і ведіть дискусію логічно, від збору вимог до високорівневого дизайну до обговорення плюсів і мінусів.
Facebook очікує, що кандидати впораються з алгоритмом. Увагу звертають на невеликі помилки та можливості для оптимізації, наприклад, якщо повторюється масив. Намагайтеся викладатися по максимуму і ні в якому разі не розслабляйтеся. Виконуйте тестові запуски, обговорюйте прикордонні випадки, намагайтеся оптимізувати та швидко пишіть на дошці.
Другий шанс
Я поговорила з рекрутером і висловила своє збентеження. Я була майже впевнена, що отримаю пропозицію, але результат був несподіваним. Я ніколи не думала, що системне проєктування буде настільки важливим. На щастя, мене чекало ще одне системне проєктування та одне кодування. Я знову полетіла до Лондона, щоб пройти співбесіду вже в іншу компанію, а також на черговий етап у Facebook. Чесно кажучи, я була абсолютно виснажена, тому що пройшла так багато співбесід за останні п’ять місяців і вже отримала деякі негативні результати.
Ці дві співбесіди були останніми на цьому етапі пошуку роботи, і я просто хотіла, щоб він закінчився. На цей раз я оновила знання в області системного проєктування, і цей процес став для мене зрозумілішим. Програмування пройшло дуже добре. На етапі системного проєктування мені поставили завдання, пов’язане з функцією з популярного мобільного застосування. На цей раз ми обговорили дизайн набагато докладніше, виконавши кількісний аналіз, наприклад, кількості систем, необхідних для сервера, розміру бази даних і так далі. На цей раз я виклалася на 100%, і у нас була успішна розмова.
- Порада: найважливіші розділи етапу системного проєктування – збір вимог, визначення протоколу, високорівневе проєктування, схема бази даних, оцінка розміру даних, проєктування компонентів і його слабкі сторони.
Зворотний зв’язок
Я отримала зворотний зв’язок через два тижні, і на цей раз він був позитивним. Мені запропонували посаду E4 в Facebook Engineering. Вакансія в команді Facebook AR/VR вже була зайнята. Я думаю, що причина, з якої проєктуванню систем надавалося таке велике значення, полягала в тому, що інженери E4 повинні розбиратися не тільки в програмуванні, але і в проєктуванні.
Я ніколи не думала, що поміняти роботу може бути важко. Можна зрозуміти, як важко тим, хто ще знаходиться в процесі пошуку. Справи не завжди йдуть так, як планувалося, і в співбесіді завжди важливу роль відіграє випадок або удача. У такі часи мені допомагає цитата з Бхагавад-гіти: «Ти маєш право тільки на працю, але ніколи – на її плоди. Не дозволяйте плодам дії бути вашим мотивом і не дозволяйте собі прив’язуватися до бездіяльності».