В новом переводе от команды Spring АйО Пунит Патвари недавно принял предложение о работе в Atlassian на должность ведущего инженера-программиста (Principal Software Engineer). За три месяца он прошёл более 60 собеседований в 11 компаниях, как он мне рассказал, и отказался ещё от трёх процессов после того, как согласился на предложение от Atlassian — включая собеседование в Meta*. После всего этого он сравнил процессы собеседований в крупнейших компаниях:
Компания + Целевой уровень |
Тип собеседования |
Выводы Пунита |
Google – Старший инженер (L5) |
Технический скрининг: 2 глубоких алгоритмических задачи (например, кольцевой буфер и эффективное слияние деревьев) |
«Иногда нужно сначала показать широту знаний, а не глубину». |
Uber – Старший инженер (L5A) |
Технический скрининг: 2 сложных алгоритмических задачи (включая динамическое программирование и оптимизацию затрат) |
«Не каждое интервью бывает справедливым, но приходится играть с теми картами, что раздали». |
Amazon – Ведущий инженер (L6) |
Кодинг-интервью: высокий порог сложности, много конкретики. Принципы лидерства включены во все интервью. |
«На этом уровне хотят понять, будете ли вы тем, кто движет изменения, а не просто пишет код». |
Walmart – Ведущий инженер |
Кодинг: достаточно базовый уровень. Архитектура: внимание к низко- и высокоуровневым аспектам. |
«Предугадывать, что может пойти не так, и показывать мышление в серых зонах — это оказалось полезным». |
Atlassian – Принципал-инженер |
Кодинг: основные структуры данных и алгоритмы. Акцент на проектирование масштабируемых решений. |
«Они ценят целостное, сквозное мышление, а не только техническую корректность». |
Salesforce – Ведущий технический специалист (LMTS) |
Скрининг: HackerRank. Архитектурные интервью были более сложными. |
«Можно почувствовать, когда компании действительно важно понять, как ты думаешь». |
Confluent – Старший инженер-программист 2 |
Очень интеллектуально напряжённое интервью: несколько раундов по алгоритмам, архитектуре, совместимости с культурой. Глубокое погружение в отказоустойчивость, узкие места, масштабируемость. |
«Важно не один раз выстрелить, а быть стабильно сильным на всех этапах». |
Deliveroo – Ведущий инженер |
Скрининг: HackerRank. Кодинг: спроектировать ограничитель скорости. Архитектурное интервью в глубину. |
«Хотя я нервничал, подробное объяснение своих мыслей всё изменило. Хорошие интервью — это когда тебя понимают». |
Ещё несколько наблюдений, которыми Пунит поделился со мной:
Amazon: раунд с руководителем найма в Amazon был одним из самых необычных, которые я когда-либо проходил. Мы так увлеклись обсуждением, что собеседование длилось 160 минут вместо запланированных 60! Нам пришлось сделать перерыв в процессе интервью.
Atlassian: раунды, посвящённые лидерству и ценностям компании (Leadership Craft и Values), сыграли ключевую роль в принятии решения о присвоении мне уровня Principal. Конечно, собеседование по системному проектированию также было важным. В Atlassian большое внимание уделяется лидерским качествам на уровне Principal.
Salesforce: раунд по системному проектированию был напрямую связан с реальными задачами на будущей должности. Это была задача по миграции, в которой интервьюер хотел понять, смогу ли я взять на себя ответственность за проект от начала до конца, поставив в центр внимания клиента.
Комментарий от Евгения Сулейманова
Миграции - прекрасная задача для Principal, которая крайне хорошо может показать уровень кандидата.
Вариант "скелета ответа", который я бы ожидал на уровне PSE:
- стратегия: Strangler Fig, поэтапный backfill, canary deployment;
- совместимость: версия контрактов/схем (semver/AVRO/DDL), dual-read/dual-write, идемпотентность и дедупликация;
- данные: CDC/Outbox, порядок событий, reindex/ретрай-политики, политика TTL;
- надежность: SLO, план отката;
- наблюдаемость: метрики/логирование/трейсы для "старого/нового" пути, сравнение отклонений;
- операционка: окна запуска, нагрузочное тестирование до/после, оценка TCO.
Confluent: когда я говорю, что это было самое интеллектуально напряжённое собеседование, я имею в виду, что каждая навык проверялся в двух раундах! То есть: два раунда по структурам данных и алгоритмам (DSA), два по системному проектированию и два поведенческих интервью.
Я не могу переоценить важность поведенческих собеседований на уровнях Staff и выше. Успешное прохождение этих интервью стало определяющим фактором в получении офферов на позиции Staff и Principal. Разумеется, важно также показать хорошие результаты в кодинге и системном проектировании, но, по моим ощущениям, именно поведенческие раунды становились решающими при определении уровня и принятии решения о предложении.
Вот несколько моментов, которые особенно выделяются в рассказе Пунита о собеседованиях в ведущих технологических компаниях:
Алгоритмические интервью по программированию есть везде! На позиции уровня Senior и выше необходимо быть в них действительно сильным, включая сложные темы, такие как динамическое программирование. В статье «Как опытные инженеры выходят из тупика на кодинговых интервью» мы подробно разбираем, как успешно проходить такие раунды.
Комментарий от Евгения Сулейманова
На уровнях Senior/Staff/Principal цель кодинга - не столько "знать алгоритмы", сколько показать инженерное мышление под давлением: формулирование ограничений, декомпозиция и обоснованные компромиссы.
Я бы добавил мини-рубрику "как демонстрировать зрелость на кодинге":
- начать с проговаривания требований/границ (N, latency/memory budget, детерминизм);
- быстро накидать базовое решение и как минимум один альтернативный путь с явной сложностью O(..)/памятью;
- озвучить риски/edge-cases (дубликаты, переполнения, пустые входы, порядок, стабильность);
- связать прием с прод-паттерном (k-way merge -> слияние логов/фидов и т.д.). Это даст сигнал о системном мышлении кандидата, даже на чистых DSA.
Собеседования сложные и отнимают много времени. Даже после того как Пунит получил офферы, ни одна компания не сократила для него процесс собеседований. Ему пришлось отказаться ещё от трёх — включая Meta* — потому что к тому моменту, когда до них дошла бы очередь, он уже принял предложение от Atlassian.
Даже в сложные времена топ-кандидаты остаются востребованными. Мы уже писали о том, насколько непрост рынок труда в сфере технологий для соискателей, но Пунит прошёл собеседования в 11 компаниях и получил 6 предложений. Его резюме должно было производить сильное впечатление, чтобы пройти отбор: более 10 лет опыта и позиция Senior Software Engineer в Microsoft. К тому же он пришёл на собеседования очень хорошо подготовленным.
Неудача может настигнуть в любой момент. Опыт Пунита на собеседовании в Uber, похоже, был просто неудачным: интервьюер показался негибким и не настроенным на диалог. Возможно, у него был тяжёлый день или он просто хотел поскорее закончить. А может быть, это был пример так называемого «антицикла интервьюера», о котором писал Стив Йегги.
Поздравляем Пунита с новой позицией в Atlassian и спасибо ему за то, что поделился этими ценными наблюдениями!
* Meta признана экстремистcкой организацией в России

Присоединяйтесь к русскоязычному сообществу разработчиков на Spring Boot в телеграм — Spring АйО, чтобы быть в курсе последних новостей из мира разработки на Spring Boot и всего, что с ним связано.
micbal
"показать инженерное мышление под давлением" - На марс отправлять будете? :)