Подготовка к алгоритмическим задачам

Алгоритмическое собеседование в Яндекс и Google: формат и задачи
Коротко
| Яндекс | ||
|---|---|---|
| Этапов с алгоритмами | 2–3 | 4–5 |
| Уровень задач | medium, реже hard | medium и hard |
| Формат | контест + секции | секции с интервьюером |
| Что ценится | скорость и точность | процесс рассуждения |
| Срок подготовки | 1.5–2 месяца | 3–4 месяца |
Общее для обеих компаний
Обе компании проверяют одно и то же ядро: базовые структуры данных, умение оптимизировать наивное решение и способность объяснять ход мысли.
Что спрашивают чаще всего:
- массивы и хеш-таблицы;
- строки;
- деревья и графы (обходы, поиск пути);
- динамическое программирование;
- два указателя и скользящее окно.
Экзотику вроде суффиксных автоматов не спрашивают почти никогда. Ставка идёт на уверенное владение базой, а не на редкие приёмы.
Яндекс: формат
Отборочный контест. Часто первый этап — автоматический контест на 2–4 задачи с ограничением по времени. Проверяется только результат: прошли тесты или нет. Здесь важна скорость и корректность, объяснять ничего не нужно.
Алгоритмические секции. Одна-две секции по часу с интервьюером. Задачи уровня medium, иногда две подряд. Пишете код в общем редакторе, проговариваете решение.
Секция по специализации. Вопросы по вашему стеку — язык, фреймворки, опыт.
Финальная секция с руководителем: обсуждение опыта, мотивации, поведенческие вопросы.
Особенность Яндекса — контест как фильтр. Он отсеивает до половины кандидатов ещё до живого общения, и подготовка к нему отличается: нужно быстро писать корректный код без подсказок и без обсуждения.
Google: формат
Скрининг по телефону. Одна задача medium за 45 минут в общем документе, часто без запуска кода.
Onsite: 4–5 секций. Три-четыре алгоритмические плюс секция по системному дизайну (для позиций выше junior) и поведенческое интервью.
Комитет по найму. Решение принимает не интервьюер, а отдельный комитет по письменным отчётам. Из-за этого важно, чтобы интервьюер мог написать про вас конкретику: как рассуждали, какие варианты рассмотрели.
Особенность Google — оценивается процесс, а не только результат. Кандидат, который не дописал код, но чётко разобрал подходы и обосновал выбор, может пройти. Кандидат, который молча выдал правильное решение, — не обязательно.
Что оценивают
Формально критерии в обеих компаниях похожи.
Понимание задачи. Уточнили ли вы условие, спросили ли про крайние случаи, поняли ли ограничения.
Выбор подхода. Начали ли с наивного решения, нашли ли узкое место, обосновали ли оптимизацию.
Качество кода. Читаемость, осмысленные имена, отсутствие дублирования. Не идеальность, но и не каша.
Тестирование. Проверили ли решение на примере, подумали ли про пустой ввод, один элемент, дубликаты.
Коммуникация. Насколько понятно вы объясняли и как реагировали на подсказки.
Последний пункт часто недооценивают. Интервьюер обычно даёт подсказку, если вы застряли, — и то, как вы её принимаете, тоже оценивается. Услышать и развить мысль лучше, чем проигнорировать и продолжать своё.
Как готовиться к контесту Яндекса
Отдельный навык, отличающийся от подготовки к живой секции.
Тренируйте скорость. Задача должна решаться за 20–25 минут вместе с отладкой. Практикуйтесь с таймером.
Отработайте ввод-вывод. В контестах часто нестандартный формат чтения данных. Потерять время на этом обидно.
Пишите сразу правильно. Отладчика может не быть, тесты закрытые. Привычка проверять код глазами перед отправкой окупается.
Считайте ограничения. Если в условии n = 10⁵, решение за O(n²) не пройдёт. Оценивайте сложность до написания кода — это экономит попытки.
Как готовиться к секциям Google
Проговаривайте всё. Молчание в течение минуты уже читается как затык. Даже когда думаете — озвучивайте: «рассматриваю вариант с хеш-таблицей, но здесь важен порядок, значит не подойдёт».
Начинайте с наивного решения. Всегда. Это показывает, что вы поняли задачу, и даёт точку отсчёта для оптимизации.
Задавайте вопросы. Уточнение условия — часть оценки. Могут ли данные не помещаться в память? Есть ли дубликаты? Отсортированы ли входные данные?
Готовьтесь к системному дизайну для позиций от middle. Это отдельная секция со своей подготовкой.
Пишите код руками. В Google часто пишут в документе без подсветки и автодополнения. Потренируйтесь писать без IDE — обнаружится много привычек, на которые вы полагались.
Реалистичные сроки
Яндекс: 1.5–2 месяца при часе-двух в день. Порядка 120–150 задач, упор на скорость решения medium.
Google: 3–4 месяца. 200+ задач, включая часть hard, плюс отдельная подготовка по системному дизайну и поведенческой секции.
Если готовитесь в обе компании, база общая — различается только последний месяц: для Яндекса тренируйте скорость в формате контеста, для Google — проговаривание и системный дизайн.
Чего не стоит делать
Заучивать решения конкретных задач. Обе компании ведут внутренние списки «засвеченных» задач и меняют формулировки. Заученное решение к изменённому условию не применяется, и это заметно.
Игнорировать поведенческую секцию. В Google она имеет право вето. В Яндексе финальная секция с руководителем нередко решает исход.
Готовиться только к алгоритмам. Секция по специализации в Яндексе и системный дизайн в Google — полноценные этапы, и провал на них закрывает оффер.
Считать, что нужно решить идеально. Частичное решение с внятным разбором часто оценивается выше, чем полное молча.
Что запомнить
- Ядро подготовки общее: массивы, хеши, строки, деревья, графы, динамика, два указателя.
- Яндекс начинает с автоматического контеста — там важна скорость и корректность без объяснений.
- Google оценивает процесс рассуждения; молчаливое правильное решение может не пройти.
- Всегда начинайте с наивного решения и уточняющих вопросов.
- Экзотические алгоритмы не спрашивают — проверяют уверенное владение базой.
Решай алгоритмические задачи как профи

