Мета-урок: как пройти собеседование

Алгоритмы — половина успеха; вторая половина — как вы себя ведёте у доски.

Алгоритмическое собеседование — это проверка не только правильного кода, но и того, как вы рассуждаете, общаетесь и реагируете на подсказки.

Правильный порядок действий

Интервьюер оценивает процесс, а не только финальный код. Двигайтесь по шагам:

  1. Уточните условие. Спросите про размер входа, диапазон значений, дубликаты, пустой вход, отрицательные числа. Это сразу показывает зрелость.
  2. Проговорите примеры. Разберите 1–2 примера вручную, включая граничные (пустой массив, один элемент).
  3. Озвучьте наивное решение. Даже если оно O(n^2) — это база, от которой улучшаетесь.
  4. Улучшите и обоснуйте. Назовите приём (хеш, два указателя, DP) и его сложность.
  5. Кодьте, проговаривая. Объясняйте, что пишете.
  6. Протестируйте. Прогоните код на примерах и граничных случаях вслух.

Думать вслух — это навык

Молчание у доски — худшее, что можно сделать. Даже когда вы застряли, говорите: «Я думаю, поможет ли здесь хеш-таблица... нет, потому что...». Интервьюер не телепат — он оценивает то, что слышит. Если зашли в тупик, проговорите тупик: часто подсказка приходит именно так.

Шаблон оценки сложности

В конце всегда называйте две цифры — время и память — и какой это случай:

«Решение работает за O(n) по времени:
 один проход по массиву.
 Память O(n) — храним хеш виденных элементов.
 Это худший случай; в среднем хеш даёт O(1) на операцию.»

Как работает под капотом: что оценивают на самом деле

Сильные компании оценивают по нескольким осям: решение задачи (нашли ли вы рабочий алгоритм), качество кода (читаемость, имена, отсутствие багов), коммуникация (уточняете ли, объясняете ли), реакция на подсказки (берёте ли намёк или упрямитесь). Кандидат, который не дописал, но ясно рассуждал и оценил сложность, нередко проходит лучше того, кто молча написал рабочий, но необъяснённый код.

Частые ошибки кандидатов

  • Начать кодить сразу, не уточнив условие — и решить не ту задачу.
  • Молчать в тупике вместо того, чтобы проговорить ход мысли.
  • Не проверить граничные случаи: пустой вход, один элемент, переполнение, дубликаты.
  • Игнорировать подсказки интервьюера, цепляясь за свой первый план.
  • Не назвать сложность — даже верное решение выглядит незавершённым.
  • Спорить или нервничать вслух — это читается как неумение работать в команде.

План подготовки

  • Прорешайте по 2–3 задачи на каждый приём из этого курса, проговаривая вслух.
  • Решайте по таймеру (35–45 минут на задачу), как на реальном собеседовании.
  • Записывайте себя или решайте с напарником — чтобы тренировать именно речь, а не только код.
  • После каждой задачи проговаривайте сложность по времени и памяти.

Итог

  • Сначала уточните условие и примеры, только потом кодьте.
  • Думайте вслух — оценивают рассуждение, а не только итог.
  • Всегда называйте сложность по времени и памяти и тестируйте на граничных случаях.
  • Берите подсказки и сохраняйте спокойствие — это часть оценки.
Проверьте себя
1. Что стоит сделать в первую очередь, услышав задачу на собеседовании?
AСразу начать писать код
BУточнить условие: размер входа, дубликаты, граничные случаи
CНазвать сложность
DПопросить другую задачу
2. Почему важно думать вслух, даже когда вы застряли?
AЧтобы потянуть время
BИнтервьюер оценивает ход мысли и может дать подсказку
CЭто требование всех компаний по закону
DЧтобы запутать интервьюера
3. Чем нередко завершается интервью для кандидата, написавшего рабочий код, но молча и без оценки сложности?
AГарантированным прохождением
BОн может проиграть тому, кто рассуждал ясно, но не дописал
CАвтоматическим отказом
DЭто не влияет на результат