Education

Начиная поиск работы, я никак не могла поверить, что имею реальный шанс на получение должности в Facebook.

Пять месяцев спустя я получила письмо с предложением.

Это путешествие состоит из ожиданий и неожиданностей. В своём рассказе я поделюсь всем полученным опытом и сделанными в процессе этого путешествия открытиями.

Я проработала разработчиком ПО в Samsung Electronics на протяжении двух лет и планировала менять работу. Я занялась полноценным поиском вакансий в июле, начиная подготовку наряду с отправкой резюме известным гигантам tech-индустрии, за исключением Facebook. Думаю, что прежде, чем пробоваться в эту корпорацию, мне сначала хотелось проявить себя уверенно на собеседованиях в других компаниях.

Выстрел наугад

Во время поездок на работу или в перерывах между подготовками к собеседованиям, я начала изучать LinkedIn. Вскоре это превратилось в одержимость. Я искала HR-специалистов компаний, в которые хотела устроиться, чтобы отправить им электронные письма (если почта была указана в разделе контактов) или просто сообщения. Я не ожидала никакой серьёзной отдачи, но этот процесс поиска придал мне некий задор и оптимизм, что помогло пройти через стадию подготовки, которая, уж поверьте, требует немалых усилий.

Совет: LinkedIn — это отличная платформа для установки связи с работодателями, но здесь необходима настойчивость. Не стесняйтесь обращаться к незнакомцам. Я получала ответы от HR-менеджеров таких компаний, как Amazon, Microsoft, Snapchat, Bloomberg и Apple, после простой отправки им сообщения. 

К счастью, письмо, отправленное в августе, обернулось звонком из Facebook.

Совет: Получение первого звонка от работодателя — это наиболее затратная по времени стадия поиска работы. Начинайте подавать заявки на вакансии, даже если чувствуете себя неподготовленными. Вы можете попросить у работодателя месяц и даже более на подготовку до назначения первого собеседования.

Луч надежды

Ожидая лучшего, но готовясь к худшему, я взяла трубку. Это оказался HR-менеджер из подразделения Facebook AR/VR.

Справка: Facebook разбит на подразделения, которые производят найм сотрудников независимо. Этими подразделениями являются Facebook Engineering, AR/VR и AI.

Звонившая девушка задала мне вопросы, касающиеся моей текущей должности и опыта работы. Большую часть своей карьеры я была разработчиком C/C++ и не имела опыта в XR. К моему разочарованию, я не подходила на роль, подразумеваемую менеджером. Она сказала, что мою кандидатуру рассмотрят только при условии, что я отлично покажу себя на этапе телефонного собеседования, поскольку мои текущие навыки не совсем отвечают необходимым в команде.

Открытие: В тот момент инженерное подразделение рассматривало только кандидатов с опытом работы от семи лет. По всей видимости, в августе в Facebook заканчивается цикл найма, когда необходимое число сотрудников за год уже найдено и вакансий остаётся очень мало. Я чувствовала, что будет проще устроиться после октября, когда начнётся новый цикл найма.  

Эту задачу нужно осилить!

Я назначила свой технический тест через две недели. Формат собеседования подразумевает 45-минутный опрос. Вопросы были базовые и подразумевали несложный код (задача по массивам и строкам). Сейчас же я хочу затронуть тему тестового запуска

Тестовый запуск: На собеседовании ваш код не компилируется и не запускается. Поэтому для проверки собеседующий просит произвести тестовый ввод и показать, как он будет выполняться через код.

Совет: Тестовый запуск— это отличный способ произвести отладку кода во время собеседования. Не забудьте включить тестовые запуски в этап подготовки к собеседованию.

На второй вопрос собеседующего я придумывала два решения и оба их ему объясняла. Затем он попросил меня сравнить решения и проанализировать преимущества одного над другим. Пять минут в конце собеседования выделяются на встречные вопросы. Не думаю, что эти пять минут принимаются в расчёт при оценке качества кандидата, поэтому беспокоиться здесь не о чем.

Совет: Leetcode известен как отличный сайт для подготовки к собеседованиям, и я обратилась именно к нему. Ещё одна менее известная, но очень ценная его часть — это Leetcode Discuss. На этой странице люди делятся опытом своих собеседований (а также вопросами, которые на них были заданы) и, поверьте мне, эти вопросы реально повторяются.

Собеседование на месте

Офис подразделения Facebook AR/VR. В Лондоне есть ещё два офиса Facebook

Процесс собеседования в Facebook достаточно быстрый. Спустя два дня я получила ответ от менеджера и вылетела в Лондон уже для прохождения собеседования на месте. Всего было намечено четыре этапа.

Собеседования по коду (x 2)

Задаются два вопроса, на каждый из которых отводится по 45–50 минут. В моём случае были затронуты области бинарных деревьев, строки, стек и список. Сначала вы обсуждаете решение с собеседующим, а затем пишете код на доске.

Совет: В коде всегда есть пограничные случаи, которые нужно обработать, а сделать это, находясь во взволнованном состоянии, достаточно сложно. Мне в этом случае помогла техника тестового запуска. Сразу после написания кода решения, я сказала собеседующему, что собираюсь выполнить его тестовый запуск на общем примере и сначала выполнить отладку своих ошибок. Очевидные ошибки в коде выявляются самим первым тестовым запуском, поэтому лучше обнаружить их самостоятельно, чем позже при собеседующем. Выполнение таких тестовых запусков даёт время подумать над пограничными случаями, которые затем можно будет включить в код.

Собеседование по проектированию системы

Это интересный этап, являющийся новым для начинающих разработчиков. Его задача в проектировании системы с нуля. Инструкция, как правило, выглядит так:

  1. Спроектируйте существующий продукт вроде WhatsApp, Facebook, Google search и т.д.
  2. Спроектируйте конкретные возможности одного из этих приложений. Например, реализуйте в приложении Facebook ленту новостей.
  3. Спроектируйте полностью гипотетический сценарий. Например, создайте систему для хранения логов трёх серверов, расположенных далеко друг от друга.

Это собеседование определённо требует особой подготовки.

Радует то, что верных ответов нет. Вы должны защитить выбранные вами проектные решения и знать о компромиссах, на которые пришлось пойти.

Поведенческое собеседование

Этот этап самый лёгкий, но не стоит раньше времени расслабляться, поскольку отрицательные балы, полученные в этом собеседовании, могут стоит вам заветной должности. Вопросы вращаются вокруг нетехнического опыта вроде навыков лидерства, командного духа, вашей реакции на критику и т.д. Этот набор вопросов практически всегда одинаковый, а значит и ответы можно заготовить заранее.

Совет: За день до собеседования пробегитесь по списку поведенческих вопросов и повспоминайте смешные истории из профессиональной жизни, которыми можно подкрепить ответы на эти вопросы. Используйте этот этап собеседования, чтобы расслабиться между более серьёзными техническими этапами. Заряд уверенности, полученный в его процессе, поможет поднять боевой дух. 

Первое разочарование

Спустя неделю я получила ответ на собеседование. Мне казалось, что я справилась по истине хорошо, но ответ был для меня неожиданным. Я получила уверенное одобрение по двум из собеседований, одобрение по одному из двух собеседований по написанию кода и отрицательную оценку за проектирование системы. Ниже я привела ценные выводы, которые сделала на основе опыта и обратной связи.

  • Этап проектирования системы является решающим. Действительно важно представить ваши идеи в структурированном виде и не упустить деталей проектирования, таких как схемы, определения протокола и т.д. Возьмите на себя инициативу и ведите дискуссию в логическом ключе, начиная со сбора требований и заканчивая высокоуровневым проектированием, включая обсуждение всех плюсов и минусов. 
  • Facebook ожидает от кандидата отличного результата в алгоритме. Они ищут мелкие ошибки и обращают внимание даже на оптимизацию. Например, проход по массиву два раза вместо одного. Старайтесь изо всех сил и не расслабляйтесь ни на минуту. Выполняйте тестовые запуски, обсуждайте пограничные случаи, стремитесь оптимизировать и писать ваши решения на доске быстро. Что касается положительной стороны, я чувствовала, что все вопросы имели простое и красивое решение, которое можно было как легко найти, так и без затруднений отразить в коде.

Второй шанс

Я поговорила с HR-менеджером и выразила своё замешательство. Я была почти уверена, что получу предложение, и ответ стал для меня неожиданностью. Я никогда не думала, что проектирование системы может иметь такое значение. К счастью, мне было назначено ещё два собеседования, одно по проектированию систем и одно по написанию кода. Я снова полетела в Лондон, чтобы пройти собеседование в другую компанию, а заодно и в Facebook. Честно говоря, я была сильно истощена таким количеством собеседований на протяжении последних пяти месяцев и получением ряда отказов.

Эти два собеседования были последними на стадии поиска работы, и я просто хотела, чтобы эта стадия уже наконец закончилась. На этот раз я освежила свои знания по проектированию систем и имела об этом процессе лучшее представление. Сначала у меня было собеседование по написанию кода, которое прошло прекрасно. В собеседовании же по проектированию поставленная задача относилась к функции популярного мобильного приложения. На сей раз мы обсуждали проектирование гораздо детальнее, проводя многочисленные анализы наподобие необходимого количества систем на сервере, размера базы данных и т.д. Теперь я выложилась на 100%, и у нас получилось хорошее обсуждение.

Совет: При подготовке к собеседованию по проектированию систем важными разделами являются: сбор требований, определение протокола, высокоуровневый дизайн, схема базы данных, оценка размера данных, дизайн компонентов и компромиссы.

Оно того стоило!

Ответ пришёл спустя две недели, и на этот раз он был положительным. Мне предложили позицию E4 в подразделении Facebook Engineering. (Изначальные вакансии в Facebook AR/VR уже были заняты). Я думаю, что проектирование систем имело такую высокую значимость потому, что инженеры E4 должны помимо программирования разбираться ещё и в нём. 

Заключение

Я никогда не ожидала, что смена работы может оказаться настолько трудной. Теперь же я вполне могу понять досаду тех из вас, кто испытывает в этом процессе сложности. События вокруг нас не всегда идут так, как планировалось, и в собеседованиях всегда присутствует воля случая или просто элемент удачи. Вот взятая из эпоса “Бхагават Гита” цитата на санскрите, которая помогает мне сохранять спокойствие духа в подобных жизненных ситуациях:

“У вас есть право лишь на труд, но не на его плоды. Не позволяйте плодам своих действий становиться вашим мотивом, но и не впадайте в бездействие”.

Всех вам благ!

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Kriti Joshi: Insights and My Experience From My Interview at Facebook.

Предыдущая статьяProxy  -  сокровище JavaScript
Следующая статьяКонтейнеризация в Python. Часть 1