Очередная история успеха после череды неудач. Расскажу, чего мне стоило получить офферы от Facebook, Google, Amazon, JP Morgan в Европе, как я готовился, сколько собесов зафейлил перед тем, как удача повернулась ко мне правильной стороной.
TL;DR. Послал сотни резюме. Прорешал около 100 задач на Leetcode. Прочел книжку по архитектуре (не той, которая про дома, а той, которая system design). Прошел 9 интервью. Получил 4 оффера. Принял 1. Жил, пока что, не очень долго, но, вполне себе, счастливо в Лондоне.
Задняя земля
Ой, нет. Я ж не гугл транслейт. Я могу нормально перевести background на русский. Пусть будет "Немного об авторе". Звучит вполне литературно, что скажете?
Изначально я написал эту статью на своем умеренно ломанном английском в своем персональном блоге. Там все-таки свой домен. Надо ж типа свой персональный бренд развивать, да? Говорят, потом на собесах помогает. Да и, вообще, лайки всем нравятся. А чтобы лайков много было, надо бы их в одном месте собирать.
Ху из я? Меня зовут Андрей. Всем привет! Мне без пары лет 30, и я из Воронежа. Немногим более 6 лет професcионального опыта. На момент начала собесов было чуть меньше 6, но я хитро писал в резюме ~6. Люблю ~, оставляет много пространства для маневра. Худо-бедно получил специалитет на факультете компьютерных наук в ВГУ (это почти как МГУ, только леший знает где, и не МГУ). Первые 4 года провел в аутсорсах. Потом 2 года удаленно работал на Hazelcast и Bricks (американские стартапы). Написал парочку небольших либ на GitHub. Иногда рассказываю что-нибудь эдакое на конференциях. Веду бложек. Получаю магистратуру онлайн в Georgia Tech. Пытаюсь, так сказать, восполнить пробелы своего беззаботного студенчества в ВГУ. Если вдруг кому-то сильно интересно, то можете почекать мое CV вот тут.
Жил я в Воронеже, не тужил. Код на машине крутится, лавеха мутится. Правда, все мне хотелось земли заморские посмотреть. Ну, и во всяких FAANG'ах поработать, по возможности. Год назад мои чаяния оформились во вполне конкретный план. Я провел небольшое исследование на тему того, куда же все-таки переезжать. Назвал его по-желтушнее и собрал плюсов на хабре. После, взял небольшой перерыв, покатался на сноуборде, прочистил
Вы лучше смотрите перевод той статейки на английский в моем бложике. Мне так в бложек траффик пойдет, а я люблю на количество просмотров медитировать.
Рассылка резюме
Время: Январь — Февраль 2021.
Время рассылать резюмехи. Первым порывом было податься в известные мне компании. Точнее так, в известные МНЕ компании. Чем больше я перебирал их мена в голове, тем больше мне становилось понятно, что, во-первых, моя память — не шибко надежное хранилище с потерей данных, во-вторых, даже если бы я ничего и не забыл, мои знания точно не блистают полнотой. В итоге я выписал список компаний, которые вспомнил на листик. В этот листик добавил разные интересные имена из статей найденных в гугле. Про какие-то компании услышал из видосов Gergely Orosz. Список, однако, вышел скудноватым. Гулять, так гулять! Я прошелся по всем компаниям из S&P 500 и около сотни самых больших из NASDAQ, и выписал интересные названия еще и оттуда. Теперь список вышел на славу.
На этом месте логично спросить, почему я интересуюсь только большими компаниями, которые есть или скоро будут на бирже. Причин целый ворох, помимо, "хочется":
- Я успел поработать в компаниях среднего размера и в маленьких стартапах. Попросту интересно, как оно там в больших корпорациях. Запишем как "любопытство".
- Хотелось бы верить, что FAANG в резюмехе заставляет ее сверкать так, что половина HRов слепнет, а вторая бежит к тебе с офферами всех денег мира.
- Еще хотелось бы надеяться, что все эти круги ада на собесах помогают компаниям собирать действительно скилловых людей. Люблю работать с крутыми чуваками. Мотивирует. В общем, я из тех, кто лучше будет худшим среди лучших, нежели наоборот.
- У больших компаний обычно хорошо отлажен процесс перевоза инженерных (и не только) тушек.
- Моей жене скоро получать магистратуру по архитектуре. Стоит такая штука как самолет. FAANG платит как два самолета. Математика сходится.
Непрошенный совет #1. Если вы хотите ехать в США, то собеседоваться надо около ноября. В январе вы уже опоздали. Подавляющее большинство кандидатов переезжают по визе H1B. Она выдается только в полнолуние в четверг вискосного года. Ладно, ладно. Выдается она раз в год к концу марта. Значит вам должны сделать оффер до конца фераля (а лучше раньше), чтобы успеть собрать и подать документы.
Из каждого утюга, где говорят про собесы в большие компании, говорят про рефералы. Об этом пишут в бесконечном количестве блогов и постов на Reddit. Как всем известно, если что-то написано в интернете, то это не может быть не правдой. Не долго думая, я проворошил всю свою сеть коннкетов на LinkedIn, и дополнил это спамом незнакомым инженерам из FAANG в Twitter. Как мне сказал один из них, в том же Google он указывает уровень знакомства с тем, кого рекомендует. Как и следовало догадаться, рефералы на анонимусов ценятся примерно никак. С другой стороны, безмерно крутой и уважаемый мной Gergely Orosz сказал мне, что на них все-таки смотрят в первую очередь. Я бы рекомендовал попросить рефералов у хотя бы как-то знакомых людей, и не заниматься ковровой бомбардировкой незнакомых ни в чем не повинных людей. Лично мне это пользы не принесло. Помимо рефералов я подавался на сайтах компаний.
Прошла первая неделя февраля. Я разослал, наверное, 300-400 резюме. И… ничего. Зияющая пустота в моем почтовом ящике. Какие-то компании прекратили перевозить из-за COVID, какие-то меня просто игнорили. Высшие космические силы, мое паучье чутье, и, в конце концов, глас разума подсказали мне, что мне нужно либо набраться терпения, либо менять стратегию. С терпением у меня всегда было плохо, с самого детства, так что оставалось только менять стратегию. Более того, новая стратегия никак бы не помешала насладиться плодами прошлых усилий, правильно?
Кто-то там умный предположительно сказал, что хороший вопрос содержит половину ответа. Осталось придумать хороший вопрос. Попробуем вместе? "Как бы мне наняться в классную большую компанию?" Не. Фигня какая-то. "Как сделать свое резюме более заметным?" Вроде, лучше. "Как сделать так, чтобы рекрутеры замечали мое резюме чаще?" В яблочко! Ключевое слово тут рекрутеры. Если они — те люди, которые производят первичный отсев, то им-то и надо писать. Этим я, собственно, и занялся. Открыл LinkedIn, вбил recruiter в строку поиска, и начал фильтровать по компаниям. Фильтровать и спамить с рассказом о том, какой я хороший.
Через странички с вакансиями на сайтах самих компаний я получил интервью с Booking в Нидерландах, JP Morgan в Великобритании, Amazon в Германии, Microsoft в США. Спам в личку рекрутерам принес Uber в Нидерландах и Databricks в Нидерландах. Рассылка почти сработала с Microsoft, но рекрутер оказался в Польше, а в Польшу мне не хотелось.
Facebook дался мне нелегко. Я написал Michel Weststrate в Twitter. Он сделал immer и mobx. Я когда-то что-то даже коммитил в immer, тогда-то мы и познакомились. Он оказался безумно славным парнем и не пожалел для меня реферала в Facebook. Порекомендовал меня он на позицию фронта в Лондон. Через пару дней меня режектнули без объяснения причин. Печально. Погрустил я, впал в депрессию, подсел на тяжелые наркотики, и сейчас пишу вам из клиники в деревне Усть-Урюпино. К счастью, все было не так. Отказы — это нормально. Я решил, что не теряю абсолютно ничего, если обращусь к другому рефералу — Ensar Basri Kahveci. С ним я вместе работал в Hazelcast, но в разных командах. В этот раз я скинул ему список вакансий, на которые надо было менять подать. Список более широкий и внушительный: и фронт, и фуллстек, и еще что-то, но не помню уже что. Basri тоже оказался наикрутейшим чуваком и закинул меня на них все. Прошло пару дней. Я все продолжал спамить рекрутеров в LinkedIn. Одно из моих сообщений пришлось на парня из Лондона, который нанимал в Facebook. И он ответил! Написал, что видит реферал в системе, и мы договорились о звонке.
Реферал в Lyft я получил от крутейшего Andrioid разработчика, Denis Nekludov, с которым мы вместе учились в ВГУ много лет назад.
Мой последний реферал с определенной задержкой пришел от Alex Salo, бога математики, с которым мне тоже довелось учиться в ВГУ (а ВГУ-то неплох!). У меня не было способа оперативной связи с Алексом. К тому моменту, когда он прочел мое сообщение, и как человек добрейшей души и большущего сердца дал мне реферал, я уже подался в Google сам. А у Google такая политика, что можно подаваться не более чем на 3 вакансии в месяц. В итоге, его реферал почти что месяц дожидался пока у меня этот счетчик сбросится. К счастью, дело выгорело, и в марте я вышел на связь с Google в Германии и Швейцарии.
Непрошенный совет #2. В больших корпорациях правая рука не знает, что делает левая. Подавайтесь на разные позиции. Даже если они в одном городе, есть все шансы, что в разное время на ваше резюме посмотрят разные люди, которые могут принять другое решение. Шансы на то, что подобное произойдет при подаче в разных регоинах стремятся к 1. Золотое правило — чем больше подадитесь, тем лучше.
Конечный список компаний, в которые я собеседовался выглядел так: Booking, JP Morgan, Amazon (дважды!), Microsoft, Lyft, Databricks, Uber, Google, Facebook.
Подготовка
Большинство, если не все большие компании, будут судить вас по 4 критериям:
- Специализированные (доменные) навыки. Например, React для фронта или базы данных для бека.
- Алгоритмы и структуры данных.
- Системный дизайн. В России это чаще всего принято называть архитектурой.
- Soft skills / cultural fit. Точного литературного перевода у меня в голове не нашлось. Соррян. Пусть будет "Навыки общения и взаимодействия с людьми и в команде". В общем, будут проверять, что вы не токсичная какаха с завышенным ЧСВ.
Доменные навыки
Многие компании из списка про них даже не вспомнит. Особенно, если вы подаетесь на абстрактного software engineer в вакууме. Будет встречаться чаще, если позиция более конкретная. Например, если вы подаетесь на фронта или в конкретную команду (что редкость для тех же Facebook и Google). У меня спрашивали вопросы по этой теме, когда я собеседовался на фуллстека в Uber и Booking, и на фронта в JP Morgan. К этому разделу я не готовился никак, рассчитывая, что вывезу все на опыте работы в индустрии. Так и получилось.
Алгоритмы и структуры данных
Leetcode. Много литкода.
Непрошенный совет #3. Я бы советовал брать для интервью тот язык, которым вы владеете лучше всего. Даже если у него в стандартной библиотеке нет всех нужных вам структур данных. Я лучше всего знаю TypeScript/JavaScript. Как многие могут знать, у нас нету того же хипа. Ни на одном интервью это не было проблемой. Я трижды сталкивался с необходимостью решить задачку с помощью хипа, и трижды мы с интервьюером просто представляли, что у меня есть библиотека с воображаемым API. В худшем случае, вас попросят этот хип реализовать, что очень очень маловеротяно. Просто попрактикуйтесь пару раз дома, и проблем на интервью не должно будет возникнуть даже при худшем раскладе.
Если вы уже порядком подзабыли большинство алгоритмов и структур данных, я бы рекомендовал начать с легкой подборки задач на Leetcode. Не надо решать их все. Авторы подборок услужливо отмечают рекомендуемые. Вот их и прорешайте в каждой секции. Далее можно переключаться на подборку средней сложности, действуя по тому же алгоритму. После того как вы прорешаете рекомендуемые задачки из каждой секции, у вас должно быть понимание, какие секции вызывают наибольшие сложности. Эти секции стоит пройти полностью. Сразу после стоит выходить на свое первое скрининговое интервью, его еще называют телефонным.
Непрошенный совет #4. Это норм сидеть часами над одной задачкой и думать, что вы тупой. У меня все так и было. Спустя пару недель стало лучше. Еще через пару недель еще лучше. Надо просто набрать критическую массу знаний. Для себя я установил строгое расписание. Каждый день я старался решать задачки по 2 часа. В один день я фокусировался только на одной секции. Литкод делит задания на 6 категорий. Таким образом за неделю я проходил через все категории. С новой неделей цикл начинался заново. Такой подход позволил мне более-менее равномерно прогрессировать по всем категориям.
После того как вы пройдете через первые скрининговые интервью в нескольких компаниях, у вас определится список компаний, где вы не облажались. Я бы рекомендовал с каждой из них бронировать полноценное собеседование, состоящее из нескольких интервью за 1-2 дня, через 3-4 недели после вашего скрининга. По возможности, поставьте интервью как можно ближе друг к другу, чтобы услышать офферы примерно в одно и то же время. Идеальный вариант — это взять неделю отпуска на текущей работе, и пройти через условные 5 компаний за одну неделю.
После скрининга стоит перейти к подборкам задачек с фокусом на определенные компании. Они будут платными на литкоде, но это будут не космические деньги. Во многом подборки пересекаются. Более того, вы вряд ли успеете пройти их все и для всех компаний за 3-4 недели. Я бы рекомендовал выбрать 2 наиболее интересные вам компании. В одну неделю прорешивать подборку для одной компании, в другую неделю подборку другой компании. И так далее. В неделю "А" я решал задачи для Facebook, в неделю "Б" задачи для Google.
Системный дизайн
Что ж это за зверь такой? Обычно, в рамках одного абзаца вам опишут систему, и что она должна делать. Вы же должны будете уточнить требования, масштаб, и набросать черновик ее реализации. Представьте себе это как работу с бизнесом. Условный Василий Вротымгерб дал манагеру бюджет в 10 лямов и сказал, что хочет чтобы сделали приложение для его дочки. Она котиков любит смотреть. Манагер вообще не технический, но зато с MBA, то бишь умеет деньги считать. Он 5 лямов положил в карман и пришел к крупной студии. Курпная студия положила 4 ляма в карман и пришла к вам. У вас ребенок как раз в школу собирается. Вы хотите ему частную школу оплатить и брекеты поставить. Вам нужен этот лям. Вам надо за 45 минут интервью (на самом деле около 35, вам же еще представиться надо и small talk поддержать) понять, чего от вас хотят, рассказать примерно, как делать будете, и убедить студию, что вы классный-распрекрасный субподрядчик, который точно бабло не сольет.
На некоторых интервью вас попросят сфокусироваться больше на дизайне API и схеме БД. На других буду больше интересоваться как вы обеспечите масштабируемость, отказоустойчивость и производительность.
В подготовке мне больше всего помогла книга "System Design Interview – An insider's guide" от Alex Xu. Она кратко и по делу обозревает различные популярные задачи из реального мира. В своей профессиональной деятельности мне иногда выпадает удовольствие порисовать диаграммки и подумать об архитектуре, так что это был единственный мой ресурс для подготовки к системному дизайну. Я хотел больше времени уделить алгоритмам. Если вы хотите чуть больше энергии вложить в системный дизайн, можете подсмотреть список ресурсов у Gergely Orosz в его блоге
Алярма! Вы могли заметить, что ссылка на книжку с кучей каркозябликов в конце. Она аффиллированная. Это значит, что если вы купите книжку по моей ссылке, Амазон мне отсыпет копеечку. Если вы хотите сказать мне спасибо за статью, то я попрошу вас так и сделать. Вы получите классную книжку, а я себе очередной фигни куплю бесполезной :). Если вы принципиально не любите аффиллированные ссылки, то вам "чистая" ссылка.
Soft skills / cultural fit
Это была самая простая часть для меня. Я пробежался через курс "Rock the behavioral interview" на Leetcode и выписал несколько историй из своей практики в гугл док. Обязательно делайте заметки с ответами на вопросы! Не пытайтесь изобразить себя всезнающим и непогрешимым всея программирования. Все знают, что это ложь. Я знаю, что я лажал, и лажал очень крупно. Ошибался, осознавал что-то, учился, и исправлял свои ошибки.
Внимание! Если же вы вправду думаете, что за свою карьеру никогда не ошибались, то, возможно, вам стоит всерьез спросить у своих знакомых не являетесь ли вы токсичной какахой с завышенным ЧСВ.
Немножко отсебятины
Я начал рассылать резюме в конце января. Мое последнее интервью было в середине апреля, как я и планировал. Это дало мне 10 недель на подготовку. Первые 2 недели я тратил на литкод 2 часа в день в рабочие дни, 4 часа по субботам, брал выходной в воскресенье. Примерно в это время произошло мое первое скрининговое интервью. После него я продолжил литкодить, но уже без выходных. По воскресеньям я фокусировался на категории задач, которая получалась хуже всего. Спустя 2 недели, я начал читать по одной главе "System Design Interview – An insider's guide" каждый рабочий день в дополнение к литкодингу. Как только книга закончилась, я продолжил заниматься литкодом в обычном режиме. Мне пришлось заняться жесткой расстановкой приоритетов и многим пожертвовать. У меня была полноценная работа. Я учился магистратуре. На эти 10 недель я завязал со спортом и жил у компа. Жил на сахаре и кофеине. Набрал около 4 кило. Всей душой полюбил to-do списки. Я думаю, что больше всего мне помогло то, что я начинал день с самого главного — подготовки. После нее я уже занимался задачами из to-do листа в порядке приоритета.
Интервью
Непрошенный совет #5. Если вы уже давненько не проходили интервью, то скорее всего пару первых собесов вы завалите. Постарайтесь поставить первыми интервью в компании, куда вы хотите меньше всего. Еще лучше, назначьте первыми интервью с парой компаний, куда вы вряд ли пойдете. Просто для практики. Да, это не очень красиво, но вам шашечки или ехать?
Далее я расскажу про свой опыт интервью в разных копаниях.
Lyft
Я добрался до звонка с рекрутером лишь в конце февраля. Помните "Непрошенный совет #1"? Это было слишком поздно, чтобы провести все раунды интервью, сделать оффер и подготовить документы. Конец истории.
Офферы: 0 / 9.
Microsoft
Я прошел скрининговое интервью. Там у меня немножко спросили про опыт работы и попросили решить среднюю задачку с литкода. Через неделю молчания мне пришел емейл с отказом из-за визы. Оказывается, они думали, что у меня есть разрешение на работу в США. Наверное, я забыл где-то поставить галочку, что мне нужно спонсировать визу. Не удивлен. В Micrisoft я заслал около 40-50 резюме. Легко мог где-то что-то забыть. Прости меня, Microsoft!
Офферы: 0 / 9.
Databaricks
Я облажался на первом скрининге. Меня спросили литкод средней сложности. Я его решил, но не оптимальным образом. Что ж, век живи, век учись. Именно поэтому очень важно проходить интервью в нескольких компаниях сразу.
Офферы: 0 / 9.
Booking
У меня было 2 интервью на доменные знания. Еще одно интервью было разбито на 2 части. Сначала я решил легкий литкод. Далее мы перешли к системному дизайну. В тот момент я работал над offline-first приложением с многопользовательским режимом. Как мне бы хотелось верить, именно это когнитивное искажение заставило меня заоверинженирить мой дизайн. Не важно почему, важно, что налажал. Рекрутер мне предложил попробоваться в другую команду, где системный дизайн не та важен. С другой командой у меня было только интервью с менеджером, где мне задавали поведенческие вопросы и спрашивали про опыт. В итоге, мне отказали с вердиктом "недостаток интереса к доменной области команды".
Офферы: 0 / 9.
Uber
После быстрого созвона с рекрутером меня ждало скриниговое интервью, но, на удивление, не на алгоритмы, а на доменные знания. В тот момент Uber нанимал мидлов и синьоров. Это интервью должно было определить мой потенциальный уровень. Рекрутер мне сообщил, что дальше меня будут рассматривать на мидла. Мое ЧСВ пострадало, но я, конечно же, решил не сдаваться и продолжать. Далее у меня было два литкод-интервью средней сложности, классический системный дизайн, и поведенческое интервью с менеджером. Результаты были противоречивые. Мне сказали, что я хорошо прошел поведенческое интервью и классно себя показал на систменом дизайне. Кодинг же оставлял желать лучшего. Они решили, что мне будет скучно на позиции мидла из-за моего хорошего системнго дизайна, но позицию сеньки она предложить готовы не были из-за кодинга.
Офферы: 0 / 9.
JP Morgan
Это была единственная компания, которая не проводила скрининговое техническое интервью. Меня сразу закинули на полноценный набор интервью (прозвучало корявенько, но я хз как перевести full interview loop). Со мной провели 2 доменных интервью, где мы поговорили за React и JS. Системного дизайна не было. После было интервью с менеджером за опыт и мои командные навыки. Им очень понравилось, что я и сам был своего рода инвестором и менеджил свой портфель. То что я доменеджил его до минусов я упоминать, конечно же, не стал. Как результат, мне предложили синьорскую позицию в Лондоне!
Непрошенный совет #6. Если у вас есть хобби/внерабочая деятельность по профилю компании, то обязательно расскажите об этом! Сюрприз-сюрприз, компаниям такое нравится.
Офферы: 1 / 9.
Amazon
История с Amazon в очередной раз подтверждает "Непрошенный совет #2". Корпорации масштаба FAANG не функционируют как единый организм. Скорее, как множество небольших условно независимых команд. Вам могут отказать в одном регионе, в одной команде, но с радостью принять в другую.
Мое первое интервью было с Amazon в Мюнхене. Они прислали онлайн-тест для скрининга. Там была лишь парочка простых литкодов. Немногим после, у меня был скриниговый созвон. На нем меня 70% времени пытали поведенческими вопросами, 30% времени я решал средний литкод. Как мне показалось, все прошло хорошо, но через несколько дней мне пришел отказ.
Будьте готовы, Amazon спрашивает поведенческие вопросы на каждом интервью.
Непрошенный совет #7. Рассказывать одну и ту же историю разным интервьюерам в ответ на поведенческие вопросы — это ОК. Как правило, хорошая история раскрывает вас сразу с нескольких сторон.
К счастью, это был не конец приключения. Я не переставал подаваться на вакансии Amazon. Спустя неделю мне позвонили из Amazon в Кэмбридже. Они либо не знали про мое фиаско в Мюнхене, либо им было просто наплевать. Так или иначе я получил свой онлайн тест с содержимым похожим на то, что было в Мюнхене. Парой дней позже я уже был на скрининговом звонке с одним из инженеров. Как обычно, было поведенческое интервью, а сразу за ним два средних литкода. Я нашел оптимальное решение для одного и субоптимальное для второго. Им все понравилось, и меня позвали собеседоваться дальше.
Через месяц подготовки я прошел через 4 интервью. 2 алгоритмических с поведенческими вопросами и средними литкодами, один системный дизайн, и один кодинг, который я бы назвал дизайн приложения/сервиса. Мне вбросили набор бизнес требований, я их уточнил, и написал класс, который реализовал нужный функционал. В итоге, им очень понравился мой кодинг, но не совсем устроил мой системный дизайн. Эх, если бы только парень из Uber мог им позвонить и поделиться своими впечатлениями о моем системном дизайне. Как бы то ни было, в Кэмбридж я не прошел, но и это был не конец. Команда в Кэмбридже занималась по-большей части бэкэндом. Они решили, что хоть мой системный дизайн и не достаточно хорош для них, я могу себя хорошо показать на роли фронта в… тадам, Германии! Привет, Мюнхен! Ты по мне скучал?
Меня забросили на очередной набор интервью. В этот раз, один средний литкод и один системный дизайн. Теперь им все понравилось, и мне сделали оффер. Оффер на мидла. Это же все еще считается за оффер, да?
Непрошенный совет #8. Рвите жопу, но доказывайте рекрутеру, что вас надо собеседовать на сеньку еще до начала собесов. Можете упомянуть, что в других компаниях вы собеседуетесь на синьора. У меня сложилось впечатление, что рекрутер изначально прикидывает на какой трек вас закинуть, мидловый или синьорный. В последствии, может быть очень сложно или невозможно это изменить.
Офферы: 2 / 9.
Это был стандартный для FAANG набор. Сначала скрининг со средним литкодом. Через две недели полный набор: 3 алгоритмических интервью, 1 системный дизайн, 1 поведенческое интервью. Каждое алгоритмическое интервью состояло из легкого литкода и среднего литкода следом. Поведенческое интервью и системный дизайн были вполне каноническими. Спустя неделю ко мне вернулись с позитивным фидбеком и аппрувом комитета. Да, в Google перед тем как сделать оффер вас должен заапрувить какой-то секретный комитет. Потом вам должны найти команду. И лишь после этого последует оффер. В течение недели у меня был созвон с 2 разными командами. Обе захотели меня к себе. Мне сделали оффер на L4. Снова мидл! Помните "Непрошенный совет #8"? Хотел бы я это знать до начала своих интервью.
Офферы: 3 / 9.
На первый взгляд, это был еще один стандартный набор интервью для FAANG, но, как говорится, есть нюанс. На тот момент Facebook не нанимал E4 (мидлов), а брал только E5 (сенек) и выше. Пан или пропал. Первый тех скрининг с двумя литкодами: легким и средним, прошел волнительно, но хорошо. Затем в течение месяцев я готовился. Настал день Х. Точнее дни X и Y. Facebook услужливо разрешил разделить интервью на два дня. В первый день, было два алгоритмических интервью. Так же как и не скрининге каждое из них состояло из легкого литкода и среднего литкода. Руки дрожали, спина обливалась потом. Первое интервью я прошел без проблем, а вот второе жестко завалил. Во втором интервью на среднем литкоде я впал в ступор и не выдал ничего. Даже плохого решения не выдал. Только промямлил что-то в конце о том, как бы я сделал. Во второй день у меня был системный дизайн и поведенческое интервью. Поведенческое интервью было стандартным, а систем дизайн был больше сфокусирован на API и схеме БД. Их я прошел без видимых проблем. Спустя несколько дней, когда я уже начал подбирать курсы немецкого для того, чтобы ехать в Мюнхен с Google, мне на мое удивление пришел не отказ, а приглашение на еще одно алгоритмическое интервью. Рекрутер сказал, что на меня был отличный фидбек по системному дизайну и поведенческому интервью, а мнения интервьюеров по алгоритмической части разделились. Это был мой шанс. Я снова погрузился в литкод и совсем не заметил как пролетело несколько дней до дополнительного интервью. Снова легкий литкод и средний. И… Я лажаю на легком литкоде. Неправильно оцениваю big O своего решения. Причем я обнаружил я это только постфактум. Написал свое решение. Интервьюер мне ничего не сказал про big O, но решил, что у меня баг. Я прошел вслух с ним несколько тест кейсов, бага не нашел. Решили двинуться дальше, чтобы успеть прорешать второе задание. Его я прошел с большим волнением, но без каких-либо проблем. Нашел оптимальное решение, правильно оценил big O, накодил его.
Мысль о баге все не давала мне покоя. Под конец интервью я спросил можно ли мне скопировать свое решение первой задачи для дебага дома, и мне не отказали. Я составил полноценный набор тестов на одной из онлайн платформ и не обнаружил бага. Зато допер, что налажал с big O. Мне, кровь из носу, надо было показать интервьюеру, что я просто волновался, что бага нет, что я умею счиать big O. Facebook не разглашает email интервьюеров, но я мог увидеть его имя и фамилию. К счастью, парень активно контрибьютил в опен сорс. Я взял его email и commit message и написал на него простыню с ссылкой на свой набор тестов и с подсчетом правильного big O. Я не знаю прочел ли он его, я так и не получил ответа. Главное, что я сделал все, что мог! Через несколько дней мне позвонил рекрутер и ошарашил меня тем, что Facebook хочет видеть меня в своих рядах и приглашает меня на синьорную позицию в Лондон!
Офферы: 4 / 9.
Заключение
После интервью с 9 большими и известными компаниями, я получил 4 оффера. Спустя неделю торгов (здесь вы можете найти хороший гайд о том, как их вести) и сомнений, я с огромным облегчением и радостью принял оффер от Facebook. Мне бы хотелось двух вещей:
- Чтобы моя история помогла кому-то осознать, что не надо быть стоумовым Нобелевским лауреатом, чтобы получить оффер в FAANG, находясь в любой точке планеты, хоть в том же Воронеже.
- Чтобы это было только начало :)
Давайте оставаться на связи! К сожалению, мой энергетический ресурс ограничен, так что я не все свои статьи буду переводить на русский и выкладывать на Хабр. Лучше добавляйтесь в Twitter и LinkedIn! Подписывайтесь на новостную рассылку или RSS моего блога. Пишите на email с любыми вопросами.
Автор: Андрей Гончаров