Перед офером разработчиков в Яндексе ждут несколько этапов отбора, и один из них — причём вокруг которого ходит больше всего мифов — это собеседование с алгоритмическими задачами. В Яндекс Практикуме прошёл вебинар, где двое выпускников прошли тренировочное интервью, а эксперт-интервьюер дал фидбек, подсветил ошибки и дал рекомендации. Самое интересное — в этой статье.
Что это за вебинар
9 июня в Практикуме прошла встреча с участием Руслана Валиулина — тимлида команды RMS в Яндекс Финтехе и нанимающего эксперта с богатым опытом проведения алгоритмических собеседований. Большую часть встречи занял разбор задач в онлайн-редакторе.
Мы сохранили запись вебинара. Посмотрите её полностью, если хотите проверить себя или посмотреть, как проходят собеседования в Яндексе, а в этом материале мы сосредоточимся на ключевых рекомендациях — разберём, из каких этапов состоит решение задачи, на что обратить внимание при подготовке и как избежать ошибок, которые не любят интервьюеры.
Из каких этапов состоит процесс найма
Алгоритмическое собеседование — это лишь один из стандартизированных этапов найма в Яндексе. Разберём процесс на примере трудоустройства джуниора-разработчика.
Сначала кандидат проходит скрининг у рекрутера. Это краткая беседа-знакомство без сложных вопросов. На этом этапе проблем обычно не возникает.
Далее идёт код-специфичная секция — техническое интервью с практикой, где эксперты с нашей стороны проверяют, как кандидат ориентируется в коде и насколько хорошо знает свой язык программирования.
Затем кандидата приглашают на алгоритмическое собеседование. Оно может быть сложным, но и к нему можно подготовиться, если знать, чего ожидать.
«На алгоритмической секции или, если корректнее, АА-секции (as appropriate) кандидат решает задачи, чтобы показать общую подготовку.
Представьте, что вы устраиваетесь на работу спасателем, и вам дают задание пробежать 10 километров за 40 минут. Придётся ли вам столько бегать на работе? Вряд ли. Но так вы покажете, что у вас есть общая подготовка. Так и на АА-секции»
Следом могут идти дополнительные этапы, количество и содержание которых зависит от роли. Но обычно это актуально для более высоких позиций и кандидатов с большим опытом.
А заключительная стадия — это «финалы». На этом этапе кандидат знакомится с будущей командой или командами. Стороны проверяют, есть ли у них «мэтч», обсуждают софтскилы и опыт. Если в команде есть своя специфика, могут быть дополнительные технические вопросы.
Получается, что решение алгоритмических задач — это далеко не всё, что придётся пройти на старте. Но именно этот этап часто не даётся без подготовки даже опытному разработчику.
Как устроено алгоритмическое собеседование
Цель на этом этапе — решить две задачи. Каждая разбирается по плану, где кандидат:
получает задачу в онлайн-редакторе. В ней есть базовые вводные и примеры, как код должен сработать при тех или иных параметрах;
обсуждает условия, задаёт дополнительные вопросы и уточняет краевые значения;
придумывает решение и обсуждает его с интервьюером. Первый подход не всегда бывает оптимальным. Этот этап помогает обсудить целевое решение заранее, чтобы не писать код, который всё равно не примет интервьюер;
оценивает сложность алгоритма, рассчитывая её по Big O Notation;
пишет код, проверяет его — и сдаёт интервьюеру. Если интервьюер находит ошибку, кандидат должен её исправить.
Чтобы пройти дальше, нужно решить оба задания и достичь обозначенного порога, который зависит от роли.
«На вебинаре мы решаем относительно лёгкие задачи, на настоящем интервью сложнее. Например, я пользуюсь LeetCode, и уровень задач на собеседовании — примерно Middle»
Некоторые задачи кажутся легче, чем они есть на самом деле, и у кандидата может возникнуть соблазн пропустить одну из стадий. Например, сразу перейти к коду. Или сдать его без проверки, когда ответ кажется очевидным. Это почти всегда приведёт к ошибке и потере баллов у интервьюера.
Как решать задачи, чтобы пройти собеседование
Кроме хорошей подготовки, полезно знать правила — понимать, что действительно важно, чему можно не уделять внимания и на что рассчитывает интервьюер, принимая задачу.
Задавать дополнительные вопросы
Условия задачи не всегда включают все необходимые данные. Правильный вопрос поможет избежать ошибки и сэкономить время — самый ценный ресурс кандидата на собеседовании.
Вот первая задача вебинара, которую решала выпускница курса «Python-разработчик» Наталья:

И пример грамотного подхода — уточняющие вопросы, которые Наталья задала интервьюеру Руслану:
«Правильно ли я понимаю, что ничего сортировать не нужно? А может ли быть пустая строка на входе? Как мне нужно будет организовать решение — мне нужно будет input считать? А если оба массива пустой длины?»
Получив ответы, Наталья решила задачу:

А вот вторая задача, которая досталась выпускнику курса «Go-разработчик» Сергею:

Сергей уверенно реализовал и сдал решение, но на новом примере код сломался:

Всплыла ошибка: Сергей не уточнил, что будет, если передать некорректные параметры. Решение пришлось адаптировать. По словам Руслана, это ещё не худший расклад:
«Я довольно быстро показал пример, чтобы поправить Сергея, но на реальном интервью такого может не случиться. Например, я бы мог попросить поискать ошибку самостоятельно. Поэтому важно в самом начале убедиться, что вы точно учли все краевые значения и параметры, которые можно передать на ввод»
То, что Сергей допустил ошибку, не означает, что он не прошёл бы дальше. Но чем больше недочётов, тем больше времени уходит на проверку и исправления.
Размышлять вслух
Даже когда решение утверждено с интервьюером, важно объяснять ход мыслей и комментировать свои действия в онлайн-редакторе. Руслан объясняет это так:
«Признаюсь, мне часто хочется помочь кандидату. Но если он молчит, то сделать это невозможно. Поэтому, когда вы рассуждаете вслух, вы подталкиваете интервьюера вам помочь, поправить, если что-то не так»
Интервьюер не всегда принимает первое решение. Это нормально — значит, есть вариант лучше, и его не так сложно найти.
Проверять решение до сдачи
Если сдать задачу с ошибками, интервьюер вернёт вас на следующий этап, пока код не сработает так, как описано в задаче.
Каждая проверка занимает время, и если кандидат сдаёт несколько решений подряд без проверки, то часто исправляет одни ошибки — и допускает при этом другие, и это может продолжаться очень долго.
Не искать единственное верное решение
Задачи на интервью часто можно решить несколькими способами, и если асимптотика у них совпадает, то подходы будут считаться эквивалентными. А ещё на алгоритмических собеседованиях допустимы опечатки в синтаксисе:
«Самое главное — в принципе решить обе задачи. Забытая точка с запятой или return в конце функции — мелочи, которые легко поправит компилятор. Правда, код должен всё-таки быть аккуратным: если синтаксических ошибок слишком много, интервьюер будет дольше валидировать результат»
А вот что действительно важно, так это умение работать со стандартными конструкциями языка, которые используются практически в каждой задаче, и верно оценивать асимптотику — непопадание в оценку будет равноценно ошибке.
Алгоритмическое собеседование — сложный, но стандартизированный этап найма. К нему можно подготовиться: с помощью задач в открытом доступе или, например, бесплатного курса «Подготовка к алгоритмическому собеседованию», где вы разберёте алгоритмы, которые нужно знать для прохождения интервью в Яндексе. Курс подойдёт опытным разработчикам, которые ещё не изучали алгоритмы или хотят подтянуть навык.
Комментарии (32)

AndronNSK
30.07.2026 07:09На самом деле, этот этап решает всего одну задачу-уменьшить количество кандидатов не выходя за рамки законодательства.
Если заменить этот этап на фильтр только имени Сергей, то итог будет тот же самый - рандомных фильтр сработает.

FlyingDutchman2
30.07.2026 07:09На самом деле, этот этап решает всего одну задачу-уменьшить количество кандидатов не выходя за рамки законодательства.
Тоже так думаю. Вообще, в такие кампании, как Яндекс, всегда хотят устроиться так много кандидатов, что можно просто отобрать, допустим, 10 лучших резюме, а из уже можно брать любого, безо всяких собеседований.

Artyomcool
30.07.2026 07:09Да если бы. Люди приходят очень разные, и в Яндекс тоже. Бывают офигенные. Бывают такие, с которыми не хотелось бы находиться в одном помещении. И результат найма от этого не зависит)
Пишу как относительно давно бывший сотрудник.

AndronNSK
30.07.2026 07:09Судя по странному интервьюеру, который со мной проводил алгоритмическую секцию (и не мог даже правильно изложить условия задачи) эти "не хочется с ними находиться в комнате" успешно в яндекс попадают.

Artyomcool
30.07.2026 07:09Как я и сказал: результат не зависит от того, что думает интервьюер) Утрирую, очевидно, но не прям уж сильно. И это не баг - это фича.

Artyomcool
30.07.2026 07:09Есть очень много причин для таких этапов и их количество, и это совсем не отсев. Но все эти причина действительно далеки от того, что хотелось бы называть адекватным.
Например: ловушка невозвратных потерь. Когда прошел через 10 этапов собеседований, а тебе в конце дают офер на 20% ниже ожиданий, но с какой-то сложной и непрозрачной системой мотивации, ты можешь с хорошим шансом согласиться. Не зря же потратил так много сил.
Вследствие этого и уволиться эмоционально может быть сложнее в будущем.

ALEX_k_s
30.07.2026 07:09Это как раз минус таких компаний, где ты не являешься ценным сотрудником или твоя ценность настолько мала, что смысла может быть соглашаться то и нет.

Artyomcool
30.07.2026 07:09Ну речь не про объективные плюсы и минусы, а про эксплуатации когнитивных искажений.
Официальное, насколько я помню, объяснение связано с тем, чтобы максимально снизить влияние субъективных факторов. Как по мне, выходит так себе)

Kovurr
30.07.2026 07:09"Как пройти алгоритмическое собеседование в Яндексе" - да никак. Обходить десятой дорогой и сэкономить массу нервов и времени. Многоэтажный алгодроч оправдан только если идете в гугл, и то под вопросом.

EasyGame
30.07.2026 07:09Более бессмысленной статьи представить сложно. Все алгодрочеры давно уже там, демонстрируют как надо писать стабильный и незабагованный софт. А унылые завистники стоят за забором и яростно наяривают литкод, чтобы попасть в великую компанию мечты, хотя бы на собеседование (нет).

randomsimplenumber
30.07.2026 07:09А правда что желающий попасть в Я разработчиком должен одолеть в поединке нынешнего разработчика?

EasyGame
30.07.2026 07:09Ходит такой слух, но по поверьям такая возможность открывается на 17 и 32 этапах собесов и только для кандидатов вызубривших наизусть RFC 8881.

ALEX_k_s
30.07.2026 07:09Умение решать литкод вообще не гарантирует того, что человек в принципе способен нормально решать действительно сложные задачи.

WLMike
30.07.2026 07:09Так нет процедур которые гарантируют. Есть ряд исследований, которые сравнивают разные методы оценки. Обычно побеждают тесты на условно интеллект и структурированный опросы, как наиболее связанные с фактическим профессионализмом - корреляция около 30% у обоих, в сочетании дают около 50%. Литкод вполне подходит под первый пункт

ALEX_k_s
30.07.2026 07:09На нормальных позициях обычно резюме гарантирует и чем оно больше, тем проще оценить. В общем литкод ноль чего показывает)

WLMike
30.07.2026 07:09По-моему резюме вообще ничего не гарантирует, учитывая, что сейчас кучу специалистов, которые тебе помогут его написать как надо

ALEX_k_s
30.07.2026 07:09Если ты никто и нечего продемонстрировать, то мб, в остальных случаях оно показательно

WLMike
30.07.2026 07:09Я говорю как раз об обратном - бумага все стерпит, любое вранье. Нарисовать красивое резюме можно без реального опыта, что многие активно делают. Как такого человека отличить от специалиста с реальным опытом только по резюме не очень понятно

ALEX_k_s
30.07.2026 07:09как можно подделать публикации в журналах, выигранные конкурсы с призовым фондом и код в github ?

WLMike
30.07.2026 07:09Про конкурсы вполне можно писать - их огромное количество, хрен проверишь, если это не какие-то супер топовые. Про гитхаб в общем тоже. Ну, а главное большинство пишут про работу, а это не проверяемо. Если вы какой-то известный человек в комьюнити - да это сильный поинт и резюме тут не важно, но большинство людей просто работу работают и их резюме не проверяемо

Lampadov
30.07.2026 07:09TL;DR: «Как пройти алгособес в Яндексе» = «купи наш курс, а то без него сам не догадаешься спросить про краевые случаи»

nickolaym
30.07.2026 07:09Решение про чередующиеся строки - эмм, неэффективное.
Для фигак-продакшена (спортивного программирования на собесе), может быть, и зайдёт. Я, например, когда на литкоде решал, то смотрел - если фигак влезает в ожидания по скорости, то и чОрт с ним. Но вот, будучи интервьюером, обязательно поинтересовался бы, - а чем мы тут платим за лаконичность. А мы - платим.
Список - это +O(n) по памяти. Проверки на каждом такте - это +O(n) по времени.
def interleave(a:Str, b:Str) -> Str: len_a, len_b = len(a), len(b) # краевые случаи if len_a == 0: return b if len_b == 0: return a if len_a == 1: return a + b # общее решение len_mix = min(len_a, len_b) buf = array.array('u', '_'*(len_a + len_b)) # копируем перемежающуюся часть for i in range(len_mix): buf[i*2] = a[i] buf[i*2+1] = b[i] # копируем хвосты for i in range(len_mix, len_a): buf[i+len_mix] = a[i] for i in range(len_mix, len_b): buf[i+len_mix] = b[i] # готово return buf.tounicode()Кто мне скажет "что-то ты окунулся в детали реализации на конкретном языке", - ну так иммутабельность строк и мутабельность списка - это тоже особенность конкретного языка.

OldNileCrocodile
30.07.2026 07:09Для проверки на производительность есть такая вкладка "Performance" в хроме. Гугл умные, дали возможность замедлить CPU, чтобы оценить приблизительно, как эта фича будет работать на смартфоне с дешёвым мобильным процессором.
Можно тупо задавать вопрос: "Как замедлить CPU?" И смотреть, как кучу народа отваливается с собеседования, ибо НИКТО не смотрит туда. Интересно, в Яндексе подобное есть, или это технология только для аннунаков, любителей фурри и техножрецов?

Artyomcool
30.07.2026 07:09Ну я иногда занимаюсь производительностью, и вот такой способ замедления - очень так себе для многих сценариев с реальной нагрузкой. Я не к тому, что вы не правы и инструмент плохой, я к тому, что на вашем вопросе я бы тоже прям подвис, потому что все разные варианты замедления дают разные побочные эффекты (на конвеер, на брэнч предиктор, на переключения контекстов, на системные вызовы и блокировки и т.п.). Я бы предпочитал не замедлять, а проверять на целевых устройствах напрямую.

purrmeow
30.07.2026 07:09Несколько раз собеседовался с Яндексом.
1. Прошел все собесы и попал на этап подбора команды. Команду не нашлась и отправили в кулдаун на 6 месяцев.
2. Написал рекрутер и сказали что они обновили процесс. Прошел новую секцию на кодинг и попал на этап подбора команды. С тех пор прошло несколько месяцев и несмотря на 500 открытых вакансий у меня не было ни одной встречи с командами.
Ну и зачем Яндекс это делает?
RulenBagdasis
30.07.2026 07:09Есть такой бородатый анекдот.
Не ладилось у одного иностранца с русскими специфическими “числительными”.
Приезжает он в колхоз и спрашивает у первого встречного тракториста:
– Что есть такое: до$$я?
– А… Ну, это… Видишь поле? Его нужно вспахать до вечера. Это и будет - до$$я.
– А вот это поле и еще одно - это будет: два до$$я?
– Не… Это уже будет “до$$$ни матери”!
– А вот это поле, еще одно, и во-о-о-он то, за речкой?
– А вот то поле, за речкой, будет “до п$$$ы”… Потому что там уже другой колхоз.Нанимающая бригада выполнила KPI, провела собеседования, нашла кандидата и получила премию. А дальше уже поле другого колхоза.
dlkmoon
Спасибо за статью! Очень нравятся такие доклады, которые раскрывают все тонкости и нюансы собесов