В эпоху докризисной жизни, мне, как инженеру ориентировавшемуся на европейский и американский рынок, приходилось часто бывать на различных собеседованиях. Сейчас же, из-за прокатившейся волны увольнений (и, разумеется, других обстоятельств), мои коллеги, никогда не смотревшие в сторону bigtech и около него компаний, встают на эту тропу и знакомятся с “FAANG-подобным” процессом интервью (да-да, несмотря на увольнения в техногигантах, некоторые из них находятся в активной фазе найма).
Этот длиннотекст - краткое обобщение опыта общения с различными зарубежными компаниями в период 2021-2023 года в основном по профилю Software Engineer c редким вкраплением DevOps/SRE.
Disclaimer. Данная статья не имеет привязки к ЯП(как, впрочем, все собеседования в bigtech), так и к уровню (зачастую уровень определяется по результатам всех раундов). Возможно, часть заданий на system design секциях была обусловлена backend специализацией (как правило, есть разделение на backend/frontend/mobile).
Lyft (лето 2021, Software Engineer)
В то время данная компания нанимала в Минский/Киевский офисы, поэтому весь процесс собеседования воспринимался в каком-то роде как “тренировка на кошках”. Важным фактом является то, что все раунды проводятся американскими коллегами, поэтому, если вы находитесь восточнее Гринвича, будьте готовы к “разминке мозга” в вечернее время. Структура интервью в общих чертах схожа с классической faang (screening + coding + behavioural + system design), однако имеет некоторую специфику. Итак:
Screening
. Стандартный часовой этап, в рамках которого будет предложена задача (иногда 2), возможно, интервьюер попросит оптимизировать предложенное вами работающие решение или усложнит уже разобранную задачу. Я же считал сумму подматрицы в заданной области. После данного этапа следует приглашение на “onsite” interview или же отказ с cooldown периодом в 6 месяцев.System design
. Несмотря на использование excalidraw, интервьюер попросил расшарить монитор(видимо, иногда стоит быть готовым к такому повороту, хотя это был единственный случай за всю мою практику). В рамках данного раунда я разрабатывал архитектуру donation системы с фокусом на взаимодействие с 3d party платежкой.System design
. Данный раунд был полностью стандартным, предполагающим дизайн NewsFeed/Twitter (было предугадываем, так как собеседующий проработал 8 лет в Twitter).Self-Coding
. Этап не характерный для faang-cтиля. В течение 1,5 часов с включенной камерой вы работаете над предложенной интервьюером задачей. Задача собеседующего - представить задачу, ответить на ваши вопросы до и в процессе написания кода; Ваша - предоставить работающие решение, запаковать его в архив и отправить его в хранилище для дальнейшей проверки. Я реализовывал функциональность префиксного поиска на базе имеющегося словаря (был выбран Trie подход).Behavioural
. Стандартная секция с рандомным engineering менеджером, подразумевающая обсуждение вашего опыта и разбор различных ситуаций. Единственный этап, который может проводиться человеком из офиса, куда вы откликнулись.
Вывод 1. После интервью, зайдя на Glassdoor, обнаружилось, что абсолютно все вопросы, с которыми я столкнулся на собеседовании, были не новы и уже попадались соискателям (выборка в рамках 3-4 лет). Отсюда можно сделать вывод, что порой для подготовки достаточно тщательно проанализировать фидбэки на Glassdoor(в комбинации с обсуждениями на leetcode) и составить TODO list.
Bolt (лето 2021, Software Engineer)
В продолжении моей “тренировки на кошках” последовал полный цикл интервью в еще одну ride-sharing компанию Bolt. Структура интервью - абсолютно стандартная (screening, 2 coding, 1 system design, 1 behavioral):
Screening
. После знакомства с интервьюером следовала пара стандартных вопросов на сложность операций для различных структур данных. Затем была предложена несложная задача на валидацию правильности расположения скобок.Coding
. В рамках данного этапа было предложено 3 модификации задачи sell-and-buy stocks от easy до hard уровня.System design
. Один из самых сложных и низкоуровневых систем дизайнов на моей практике, где было необходимо разработать движок наподобие движка постгреса, подразумевавший проектирование btree index с хранением и т.д.Воспоминания о других этапах не удалось воскресить, видимо, бэкап был поврежден.
Вывод 2. Не бойтесь “экспериментов на кошках” в компаниях, которые по каким-то параметрам потенциально Вам не подходят. Порой это помогает набрать необходимую форму после длительного перерыва в собеседованиях или начать свой путь, а также легче преодолевать волнение на следующих.
Google (осень 2021, SRE)
Google известен тем, что весьма часто предлагает своим кандидатам не совсем стандартные задачи на всех этапах, мой опыт не стал исключением. Структура собеседования - стандартная, лишь с той особенностью, что код нужно писать в Google Docs(просто оставлю это здесь Why Microsoft Word is the best IDE for programming), не предполагающем запуск решения (это практически единственная компания, где я не запускал код) и хоть каких-либо фич для работы с кодом.
Screening
. По опыту общения с людьми, проходившими собеседования в Google я знал, что в этой компании очень любят деревья. Как подтверждение, мне досталась задача, которой нет в виде оформленной на leetcode, однако описание можно найти в секции discussion.Сoding
. На данном этапе я решал задачу, не требующую знаний определенных алгоритмов, а скорее предполагающую работу с различными структурами данных (в виде оформленной она появилась на литкоде лишь в декабре).Coding
. Думаю, на этом этапе я решал задачу, которая наиболее подходит под критерий «литкодошная», суть которой - работа над бесконечным стримом (Round 3, Temperatures) данных.System design
. Передо мной была поставлена цель разработать распределенную систему для обработки логов с анализом текста наподобие trie структуры.
Вывод 3. В случае с гуглом обязательно повторить все что связано с деревьями (= А также необходимо помнить о важности составления TODO list из discussion страницы на литкоде.
CurrencyCloud/Visa (весна 2022, Software Engineer)
Разбавим череду бигтехов чем-то из сектора финтеха: к примеру, CurrencyCloud имеет стандартный флоу faang-собеседования, не подразумевающего проверки доменных знаний.
Screening + codings
. Различные leetcode задачи уровня easy, среди которых был поиск уникального числа в массиве и перевод римских цифр в int.System design
. В большинстве финтех компаний, где мне удалось побывать, на данном этапе предлагается разработка дизайна системы с обязательной обработкой распределенных транзакций. Как правило, все собеседующие подводят к использованию SAGA-паттерна.
Вывод 4 (самый очевидный). Повторяем Saga перед собеседованием в финтех.
Amazon (весна 2022, Software Engineer)
По моему опыту, Amazon являлся самой “хантящей” компанией в период 2020-начала 2022 года (рекрутеры весьма активно писали в Linkedin с предложениями разных локаций). Для того, чтобы получить скрининг интервью, как правило, требуется решить тест на платформе вроде hackerrank. Данный тест состоит из 2 логических частей - кодинг (может включать от одной до трех задач, тайминг от 40 минут до 2 часов) и тест с behavioral вопросами, проверяющий насколько вы соответствуете Amazon's leadership principles(выделяется отдельный блок времени, ~30-45 минут). Далее следует panel interview процесс (screening, 3 codings, 1 system design). Отличительной особенностью является отсутствие behavioral раунда, однако, абсолютно на каждом этапе вам будут задавать 2 behavioral вопроса из списка.
Screening
. Весьма популярная leetcode задача о преобразовании чисел в слова.Сoding
. Задача предполагающая обход роботом матрицы с препятствиями.Сoding
. Задача, требующая реализации одного из розыгрышей в покере. Как человеку, не особо знакомым с правилами данной игры, была весьма непросто выяснить все детали у интервьюера, так как многие моменты для него были очевидными.System design
. На данном этапе было предложено разработать систему, принимающую большое кол-во запросов с различных устройств, подразумевающую использование geo hashing подхода.
Вывод 5. Для Amazon очень важно насколько вы соответствуете его Leadership Principles, поэтому, в каких-то, случаях будет ценно заранее проработать список вышеупомянутых вопросов.
Microsoft (весна 2022, Software Engineer)
В то время Microsoft проводил собеседования по принципу one-day interview: для кандидата это значило, что все 5 этапов onsite интервью будут проходить в определенный день недели без возможности «разделить» этапы на несколько дней. Также процесс собеседования включал раунд LowLevelDesign, на котором, требовалось описать все структуры данных, необходимые для реализации той или иной фичи, декларативным языком.
Сoding
. Одна из вариаций coin change (впервые столкнулся с явной необходимостью применения dp, ставшего не очень модным среди бигтехов).Сoding
. Задача на подсчет количетсва комбинаций.LowLevelDesign
. описание классов необходимых для сервиса обработки звонков.System design
. Дизайн сервиса для снятия денег через ATM.
Вывод 6. 5 часовых раундов интервью могут даваться весьма нелегко, особенно последних 2. Необходимо предусматривать хотя бы один длинный перерыв перед “последним” рывком, а лучше все же разносить этапы на несколько дней.
Meta (лето 2022, Platform Engineer)
Изначально весной я не рассматривал позицию Platform Engineer, а шел по треку Software Engineer (признаюсь, идея зайти на низах цен RSU прельщала), но в мае случился hiring freeze. Процесс интервью - стандартный, с отличием в продолжительности каждого раунда - вместо привычного часа на раунд Meta отводит 45 минут. На позицию Platform Engineer один раунд onsite-кодинга заменяется специфичной Networking секцией, а также добавляется Linux Internals раунд.
Screening
. можно считать что не было, так как он был пройден на Software Engineer аккурат hiring freeze. Тогда мне досталась задача на построение LRU кэша.Networking
. Раунд был сконцентрирован на TCP internals, tls, причем с довольно глубоким знанием “а как оно работает внутри”.Linux internals
. Здесь были весьма стандартные вопросы по linux вроде “с помощью какой команды можно сделать это?”, отличия user и kernel space, примеры system calls и т.д.System design
. Требовалось разработать дизайн системы доставки конфигураций с мастер репозитория на остальные N тысяч серверов расположенных в разных дата центрах.
Вывод 7. Если меняете специализацию, то будьте готовы получить специфичный вопрос в рамках System design секции.
Uber (зима 2022-2023, Software Engineer)
Пока найм в faang замер, некоторые компании находятся в фазе активного роста и хайринга, убер - одна из них. Структура собеседования - абсолютно стандартная. На кодингах, впрочем, как почти во всех вышеперечисленных компаниях, требуется писать работающий безошибочный код.
Screening
. Реализация базового алгоритма игры “Cапер”. Как выяснилось позже, на данном раунде часто попадаются алгоритмы игр, например cудоку.Сoding
. Реализация специфичной структуры данных с возможностью использования стандартных языковых структур данных.Сoding
. Тематическая для Uber задача на обход графа. Судя по всевозможным ревью, на каком-либо этапе обязательно попадется что-то тематическое.System design
. дизайн некоторых фичей чата.
Вывод 8. Абсолютно все задачи, попавшиеся мне, нашлись в немногочисленной подборке от Leetcode, доступной по Premium подписке.
Wrap up
Процесс подготовки к faang-подобным собеседованиям в любом случае требует инвестирования достаточного количества времени. Однако, результат такого вложения - существенное расширение возможностей при поиске работы. На сегодняшний день существует целая индустрия, выстроенная вокруг данного процесса(всевозможные менторы, платформы, программы сопровождения). На мой взгляд, вся необходимая информация уже есть на Glassdoor, Leetcode и всевозможных Telegram-чатах (зачастую ищутся по ключевым словам faang, bigtech и т.д.), а дальше все зависит от вас.
С моей точки зрения, самое оправданное вложение - это подписка на Leetcode-премиум, открывающая доступ к спискам задач по компаниям (очень удобно пользоваться таковыми в период подготовки к интервью в определенную компанию). Выгодно приобретать на год, особенно с 30% скидкой на черную пятницу. Однако, можно обойтись и без нее, составляя TODO list на основе общедоступных Glassdoor и Leetcode фидбэков. Также рекомендую решать daily challenge на leetcode, так как там представлены весьма популярные задачи и это позволяет накопить литкоины, на которые можно купить месяц premium подписки или футболку.
Не бойтесь тренироваться «на кошках» и не только. Воспринимайте каждое собеседование, как репетиционное интервью с экспертом (знаю, что некоторые предпочитают иметь несколько mock-интервью с тренером). В случае неуспешного прохождения интервью, как правило, компании дают фидбэк. Неудача не банит кандидата навечно, обычно cooldown период занимает 6-12 месяцев.
Ответы на популярные вопросы
Как выйти на связь с компанией?
Самый надежный и быстрый способ - реферал. В телеграм чатах можно найти людей, способных зарефералить Вашу кандидатуру. (я этой опцией так и не воспользовался)
Актуальный профиль на Linkedin. Bolt, Amazon, Meta связались со мной через Linkedin.
Оповестите свой networking, что заинтересованы в крупных компаниях: случается так, что рекрутер пишет вашему знакомому, а он может дать ему Ваш контакт (в моем случае отклики в Google не работали, но мой знакомый, “отправил” написавшего ему рекрутера ко мне)
Старые добрые упорные отклики через карьерные сайты компаний. Приглашения в Lyft, Microsoft, Uber и многие другие я получил именно таким образом.
Какие компании с faang-подобным собеседованием нанимают в данный момент (апрель 2023 года)?
Klarna
Spotify
Databricks
Snowflake
Reddit
Booking
FlexPort
Uber
Datadog
Комментарии (5)
patyupin
19.04.2023 03:11-2Привет. У нас компания ищет devops инженера и c++ разработчика. Все удаленно. Английский и знание линукса важно. Можете мне на raymond(at)dcmsys.com присылать резюме/вопросы.
ValeriyPus
19.04.2023 03:11А можно вопрос дилетанта?
А вот если DreamCoder лучше Вас, несравненного Израилевича и всех остальных в алгоритмах, какой нам-то толк читать про это?
Все же сложится покруче Twitter-а (Который еще будет дожимать Илон Маск, создатель ChatGPT) :)
Usul
Спасибо за статью. Подборка информации впечатляет.
Не могли бы вы порекомендовать что-либо для изучения system design? Книги, курсы, Youtube-каналы - что угодно, чтобы можно было разобраться в теме при наличии базовых знаний. Разумеется, не с претензией "войти в FAANG" :)
philyuchkoff
https://github.com/InterviewReady/system-design-resources
https://github.com/karanpratapsingh/system-design
https://github.com/donnemartin/system-design-primer
arkashaErema Автор
На мой взгляд, вполне хорошая и реализуемая "претензия". "Войти в FAANG" так же реально, как и в другие компании с таким же процессом.
Базовая рекомендация абсолютно всех подборок - https://habr.com/ru/companies/piter/articles/309106/
"Золотой сборник" с разбором наиболее популярных систем - System Design Interview An Insider’s Guide by Alex Xu. Если основная цель подготовка к СД, можно рассмотреть этот материал как отправную точку.
https://github.com/weeeBox/mobile-system-design. Уклон на мобильные платформы, однако, очень много ценных мыслей для любого направления.