Перед офером разработчиков в Яндексе ждут несколько этапов отбора, и один из них — причём вокруг которого ходит больше всего мифов — это собеседование с алгоритмическими задачами. В Яндекс Практикуме прошёл вебинар, где двое выпускников прошли тренировочное интервью, а эксперт-интервьюер дал фидбек, подсветил ошибки и дал рекомендации. Самое интересное — в этой статье.

Что это за вебинар

9 июня в Практикуме прошла встреча с участием Руслана Валиулина — тимлида команды RMS в Яндекс Финтехе и нанимающего эксперта с богатым опытом проведения алгоритмических собеседований. Большую часть встречи занял разбор задач в онлайн-редакторе.

Мы сохранили запись вебинара. Посмотрите её полностью, если хотите проверить себя или посмотреть, как проходят собеседования в Яндексе, а в этом материале мы сосредоточимся на ключевых рекомендациях — разберём, из каких этапов состоит решение задачи, на что обратить внимание при подготовке и как избежать ошибок, которые не любят интервьюеры.

Из каких этапов состоит процесс найма

Алгоритмическое собеседование — это лишь один из стандартизированных этапов найма в Яндексе. Разберём процесс на примере трудоустройства джуниора-разработчика.

Сначала кандидат проходит скрининг у рекрутера. Это краткая беседа-знакомство без сложных вопросов. На этом этапе проблем обычно не возникает.

Далее идёт код-специфичная секция — техническое интервью с практикой, где эксперты с нашей стороны проверяют, как кандидат ориентируется в коде и насколько хорошо знает свой язык программирования.

Затем кандидата приглашают на алгоритмическое собеседование. Оно может быть сложным, но и к нему можно подготовиться, если знать, чего ожидать.

«На алгоритмической секции или, если корректнее, АА-секции (as appropriate) кандидат решает задачи, чтобы показать общую подготовку. 

Представьте, что вы устраиваетесь на работу спасателем, и вам дают задание пробежать 10 километров за 40 минут. Придётся ли вам столько бегать на работе? Вряд ли. Но так вы покажете, что у вас есть общая подготовка. Так и на АА-секции»

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

А заключительная стадия — это «финалы». На этом этапе кандидат знакомится с будущей командой или командами. Стороны проверяют, есть ли у них «мэтч», обсуждают софтскилы и опыт. Если в команде есть своя специфика, могут быть дополнительные технические вопросы.

Получается, что решение алгоритмических задач — это далеко не всё, что придётся пройти на старте. Но именно этот этап часто не даётся без подготовки даже опытному разработчику.

Как устроено алгоритмическое собеседование

Цель на этом этапе — решить две задачи. Каждая разбирается по плану, где кандидат:

  • получает задачу в онлайн-редакторе. В ней есть базовые вводные и примеры, как код должен сработать при тех или иных параметрах;

  • обсуждает условия, задаёт дополнительные вопросы и уточняет краевые значения;

  • придумывает решение и обсуждает его с интервьюером. Первый подход не всегда бывает оптимальным. Этот этап помогает обсудить целевое решение заранее, чтобы не писать код, который всё равно не примет интервьюер;

  • оценивает сложность алгоритма, рассчитывая её по Big O Notation;

  • пишет код, проверяет его — и сдаёт интервьюеру. Если интервьюер находит ошибку, кандидат должен её исправить.

Чтобы пройти дальше, нужно решить оба задания и достичь обозначенного порога, который зависит от роли.

«На вебинаре мы решаем относительно лёгкие задачи, на настоящем интервью сложнее. Например, я пользуюсь LeetCode, и уровень задач на собеседовании — примерно Middle»

Некоторые задачи кажутся легче, чем они есть на самом деле, и у кандидата может возникнуть соблазн пропустить одну из стадий. Например, сразу перейти к коду. Или сдать его без проверки, когда ответ кажется очевидным. Это почти всегда приведёт к ошибке и потере баллов у интервьюера.

Как решать задачи, чтобы пройти собеседование

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

Задавать дополнительные вопросы

Условия задачи не всегда включают все необходимые данные. Правильный вопрос поможет избежать ошибки и сэкономить время — самый ценный ресурс кандидата на собеседовании.

Вот первая задача вебинара, которую решала выпускница курса «Python-разработчик» Наталья:

И пример грамотного подхода — уточняющие вопросы, которые Наталья задала интервьюеру Руслану:

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

Получив ответы, Наталья решила задачу:

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

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

Всплыла ошибка: Сергей не уточнил, что будет, если передать некорректные параметры. Решение пришлось адаптировать. По словам Руслана, это ещё не худший расклад:

«Я довольно быстро показал пример, чтобы поправить Сергея, но на реальном интервью такого может не случиться. Например, я бы мог попросить поискать ошибку самостоятельно. Поэтому важно в самом начале убедиться, что вы точно учли все краевые значения и параметры, которые можно передать на ввод»

То, что Сергей допустил ошибку, не означает, что он не прошёл бы дальше. Но чем больше недочётов, тем больше времени уходит на проверку и исправления.

Размышлять вслух

Даже когда решение утверждено с интервьюером, важно объяснять ход мыслей и комментировать свои действия в онлайн-редакторе. Руслан объясняет это так:

«Признаюсь, мне часто хочется помочь кандидату. Но если он молчит, то сделать это невозможно. Поэтому, когда вы рассуждаете вслух, вы подталкиваете интервьюера вам помочь, поправить, если что-то не так»

Интервьюер не всегда принимает первое решение. Это нормально — значит, есть вариант лучше, и его не так сложно найти.

Проверять решение до сдачи

Если сдать задачу с ошибками, интервьюер вернёт вас на следующий этап, пока код не сработает так, как описано в задаче. 

Каждая проверка занимает время, и если кандидат сдаёт несколько решений подряд без проверки, то часто исправляет одни ошибки — и допускает при этом другие, и это может продолжаться очень долго.

Не искать единственное верное решение

Задачи на интервью часто можно решить несколькими способами, и если асимптотика у них совпадает, то подходы будут считаться эквивалентными. А ещё на алгоритмических собеседованиях допустимы опечатки в синтаксисе:

«Самое главное — в принципе решить обе задачи. Забытая точка с запятой или return в конце функции — мелочи, которые легко поправит компилятор. Правда, код должен всё-таки быть аккуратным: если синтаксических ошибок слишком много, интервьюер будет дольше валидировать результат»

А вот что действительно важно, так это умение работать со стандартными конструкциями языка, которые используются практически в каждой задаче, и верно оценивать асимптотику — непопадание в оценку будет равноценно ошибке.


Алгоритмическое собеседование — сложный, но стандартизированный этап найма. К нему можно подготовиться: с помощью задач в открытом доступе или, например, бесплатного курса «Подготовка к алгоритмическому собеседованию», где вы разберёте алгоритмы, которые нужно знать для прохождения интервью в Яндексе. Курс подойдёт опытным разработчикам, которые ещё не изучали алгоритмы или хотят подтянуть навык.

Комментарии (32)


  1. dlkmoon
    30.07.2026 07:09

    Спасибо за статью! Очень нравятся такие доклады, которые раскрывают все тонкости и нюансы собесов


  1. funca
    30.07.2026 07:09

    Как Наталья попала на интервью Сергея?


  1. AndronNSK
    30.07.2026 07:09

    На самом деле, этот этап решает всего одну задачу-уменьшить количество кандидатов не выходя за рамки законодательства.

    Если заменить этот этап на фильтр только имени Сергей, то итог будет тот же самый - рандомных фильтр сработает.


    1. FlyingDutchman2
      30.07.2026 07:09

      На самом деле, этот этап решает всего одну задачу-уменьшить количество кандидатов не выходя за рамки законодательства.

      Тоже так думаю. Вообще, в такие кампании, как Яндекс, всегда хотят устроиться так много кандидатов, что можно просто отобрать, допустим, 10 лучших резюме, а из уже можно брать любого, безо всяких собеседований.


      1. Artyomcool
        30.07.2026 07:09

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

        Пишу как относительно давно бывший сотрудник.


        1. AndronNSK
          30.07.2026 07:09

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


          1. Artyomcool
            30.07.2026 07:09

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


    1. Artyomcool
      30.07.2026 07:09

      Есть очень много причин для таких этапов и их количество, и это совсем не отсев. Но все эти причина действительно далеки от того, что хотелось бы называть адекватным.

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

      Вследствие этого и уволиться эмоционально может быть сложнее в будущем.


      1. ALEX_k_s
        30.07.2026 07:09

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


        1. Artyomcool
          30.07.2026 07:09

          Ну речь не про объективные плюсы и минусы, а про эксплуатации когнитивных искажений.

          Официальное, насколько я помню, объяснение связано с тем, чтобы максимально снизить влияние субъективных факторов. Как по мне, выходит так себе)


  1. Sobakaa
    30.07.2026 07:09

    Хотеть в яндекс в 2026 это конечно особое извращение.


  1. Kovurr
    30.07.2026 07:09

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


  1. EasyGame
    30.07.2026 07:09

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


    1. randomsimplenumber
      30.07.2026 07:09

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


      1. EasyGame
        30.07.2026 07:09

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


    1. ALEX_k_s
      30.07.2026 07:09

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


      1. WLMike
        30.07.2026 07:09

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


        1. ALEX_k_s
          30.07.2026 07:09

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


          1. WLMike
            30.07.2026 07:09

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


            1. ALEX_k_s
              30.07.2026 07:09

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


              1. WLMike
                30.07.2026 07:09

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


                1. ALEX_k_s
                  30.07.2026 07:09

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


                  1. WLMike
                    30.07.2026 07:09

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


  1. Lampadov
    30.07.2026 07:09

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


  1. 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()

    Кто мне скажет "что-то ты окунулся в детали реализации на конкретном языке", - ну так иммутабельность строк и мутабельность списка - это тоже особенность конкретного языка.


    1. OldNileCrocodile
      30.07.2026 07:09

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


      1. Artyomcool
        30.07.2026 07:09

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


  1. pesh1983
    30.07.2026 07:09

    Ох уж сколько таких статей было) Зачем ещё одна? Неужели что-то поменялось?


  1. purrmeow
    30.07.2026 07:09

    Несколько раз собеседовался с Яндексом.

    1. Прошел все собесы и попал на этап подбора команды. Команду не нашлась и отправили в кулдаун на 6 месяцев.

    2. Написал рекрутер и сказали что они обновили процесс. Прошел новую секцию на кодинг и попал на этап подбора команды. С тех пор прошло несколько месяцев и несмотря на 500 открытых вакансий у меня не было ни одной встречи с командами.

    Ну и зачем Яндекс это делает?


    1. RulenBagdasis
      30.07.2026 07:09

      Есть такой бородатый анекдот.

      Не ладилось у одного иностранца с русскими специфическими “числительными”.
      Приезжает он в колхоз и спрашивает у первого встречного тракториста:
      – Что есть такое: до$$я?
      – А… Ну, это… Видишь поле? Его нужно вспахать до вечера. Это и будет - до$$я.
      – А вот это поле и еще одно - это будет: два до$$я?
      – Не… Это уже будет “до$$$ни матери”!
      – А вот это поле, еще одно, и во-о-о-он то, за речкой?
      – А вот то поле, за речкой, будет “до п$$$ы”… Потому что там уже другой колхоз.

      Нанимающая бригада выполнила KPI, провела собеседования, нашла кандидата и получила премию. А дальше уже поле другого колхоза.


  1. pyrozhok
    30.07.2026 07:09

    Вот бы сейчас в яндекс хотеть попасть...


  1. OwenEwansSweetGifts
    30.07.2026 07:09

    а у вас можно браузер поревресить?