SprintCode.pro

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

Super

Алгоритмическое собеседование в Яндекс и Google: формат и задачи

12 мин чтения
собеседование
подготовка
карьера

Коротко

ЯндексGoogle
Этапов с алгоритмами2–34–5
Уровень задачmedium, реже hardmedium и 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 оценивает процесс рассуждения; молчаливое правильное решение может не пройти.
  • Всегда начинайте с наивного решения и уточняющих вопросов.
  • Экзотические алгоритмы не спрашивают — проверяют уверенное владение базой.
Пройди собеседование в топ-компанию
Платформа для подготовки

Решай алгоритмические задачи как профи

✓ Популярные алгоритмы✓ Разбор решений✓ AI помощь
Начать сейчас
Программист за работой

Задачи по теме

Сумма трёх чисел

Два указателя
Средне

Найдите все уникальные тройки чисел в массиве, сумма которых равна нулю. Функция должна вернуть массив троек чисел, где каждая тройка содержит три различных элемента, дающих в сумме ноль.

#Массивы#Сортировка#Два курсора
Алгоритмические контестыПродуктовые компанииИнтенсивная подготовкаСовременные задачи
30 мин

Поиск слова

Поиск с возвратом
Средне

В двумерной сетке символов найдите, можно ли составить заданное слово, двигаясь по соседним ячейкам горизонтально или вертикально. Каждую ячейку можно использовать только один раз.

#Массивы
Алгоритмические контестыИнтенсивная подготовкаСовременные задачи
30 мин

Минимальное окно подстроки

Скользящее окно
Сложно

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

#Строки#Хеш-таблицы#Два курсора
Алгоритмические контестыИнтенсивная подготовка
30 мин