Получить доступ
Собеседования · 12 мин

Алгоритмическая секция и секция на кодинг: какие задачи дают и как их решать вслух

Темы и классические задачи — от двух сумм до слияния интервалов, план часа на секции, практические задачи вроде LRU-кэша и пула воркеров и тренажёр с таймером.

Почти в любой крупной IT-компании технических секций две разновидности. Алгоритмическая — абстрактная задача на структуры данных, где важны идея и сложность. Секция на кодинг — практическая задача, похожая на работу: классы, тесты, обработка ошибок, иногда многопоточность. Готовиться к ним нужно по-разному. Ниже — как обе проходят в Яндексе, Т-Банке, Сбере, Авито и VK, какие задачи встречаются чаще всего и как вести себя на секции.

Алгоритмическая секция: что это

КомпанияФормат
Яндекс«Проверка базовых технических навыков»: две задачи за час в онлайн-редакторе, независимо от языка. Нужно обосновать выбор методов и их стоимость.
Т-БанкОтдельная секция на 60 минут: абстрактные задачи, оценка сложности, ясный код.
VK30 минут алгоритмов в связке с 30 минутами технических вопросов.
АвитоСекция «Программирование»: 1–2 задачи в онлайн-редакторе, можно писать на псевдокоде и пользоваться библиотечными функциями.
СберЗадача уровня easy или ревью кода на техническом интервью; лайвкодинг 15–30 минут.

Общее у всех: уровень — easy и medium по классификации LeetCode, олимпиадные задачи не нужны. Код обычно пишут без запуска и без подсказок IDE, поэтому проверять его придётся головой — прогоном на примере.

Какие темы спрашивают

Яндекс прямо перечисляет теги, по которым стоит тренироваться: массивы, строки, деревья, бинарный поиск, хеш-таблицы, обход в глубину и в ширину, два указателя, стек, перебор с возвратом. У Т-Банка список почти тот же: строки, списки, деревья, ассоциативные массивы, поиск в коллекциях, обход деревьев, сортировки, динамическое программирование и О-нотация. Отсюда карта тем:

ТемаПриёмКлассические задачиРазобраться
Хеш-таблицыпосчитать, найти пару, сгруппировать за O(n)Две суммы, анаграммыхеш-таблица
Два указателяотсортированный массив, сжатие на местеконтейнер с водой, переместить нули
Скользящее окноподстрока или подмассив с условиемподстрока без повторов
Интервалысортировка по началу + один проходслияние интервалов, пересечениесортировки
Стекпарность, «ближайший больший»скобки, стек с минимумом
Бинарный поискотсортированные данные, поиск границыбинарный поискбинарный поиск
Деревьярекурсия, обход, границы значенийпроверить BST, обход по уровнямдерево поиска
ГрафыBFS/DFS, посещённые вершиныострова, расписание курсовобход в ширину и глубину
Кучаtop-K, слияние потоковтоп-K частыхкуча
Динамикаответ из ответов на меньшие задачилестницадинамическое программирование

На страницах Acody в правой колонке — интерактивные модели: можно пошагово посмотреть, как работают хеш-таблица, бинарный поиск, обход графа или куча. И везде пригодится оценка сложности: что такое O-нотация.

Пример: слияние интервалов

Одна из самых узнаваемых задач: дан список отрезков [[1,3],[2,6],[8,10],[15,18]], нужно слить пересекающиеся — получится [[1,6],[8,10],[15,18]]. На ней хорошо видно, как выглядит хороший ответ на секции.

  1. Уточнить. Отрезки отсортированы? Касание [1,2] и [2,3] — это пересечение? Может ли список быть пустым? Можно ли менять входной список?
  2. Идея. Если отсортировать отрезки по началу, пересекающиеся окажутся рядом. Дальше один проход: если начало следующего не больше конца текущего — расширяем конец, иначе начинаем новый отрезок.
  3. Сложность. Сортировка — O(n log n), проход — O(n); память — O(n) на ответ.
  4. Код и прогон. Пишем и проверяем руками на примере и на крайних случаях.
def merge(intervals: list[list[int]]) -> list[list[int]]:
    result = []
    for start, end in sorted(intervals):
        if result and start <= result[-1][1]:
            result[-1][1] = max(result[-1][1], end)   # пересекается — расширяем
        else:
            result.append([start, end])              # новый отрезок
    return result

Частая ошибка — написать result[-1][1] = end вместо max(...): тогда на [[1,10],[2,3]] отрезок «сожмётся» до [1,3]. Именно такие места интервьюер ждёт, что вы найдёте сами при прогоне. Родственные задачи — вставка интервала, непересекающиеся интервалы, диапазоны в массиве.

Как вести себя на секции

Как распределить час алгоритмической секции
060 мин
  • Уточнить условие · 5 мин
    входные данные, ограничения, крайние случаи, пара примеров
  • Идея и сложность · 10 мин
    наивное решение, потом лучше; оценка по времени и памяти — до кода
  • Код · 25 мин
    проговаривая шаги; понятные имена, без лишних оптимизаций
  • Проверка · 10 мин
    прогон на примере вручную, крайние случаи, исправления
  • Вторая задача или усложнение · 10 мин
    часто дают вторую задачу или новую версию первой

Ориентир, а не правило: на секциях с двумя задачами каждую стоит укладывать в 25–30 минут.

  • Не начинайте с кода. Пять минут на вопросы по условию почти никогда не бывают лишними: кандидат, рассказавший на Хабре о собеседованиях в Яндекс и VK, называет пропущенные уточнения своей главной ошибкой.
  • Сначала наивное решение, потом лучше. Скажите вслух решение «в лоб» и его сложность, затем улучшайте. Это показывает ход мысли и страхует, если оптимальное не придёт.
  • Думайте вслух. Об этом прямо просят Яндекс, Сбер и Авито: оценивают не только ответ, но и путь к нему. Молча написанный верный код оценят ниже.
  • Принимайте подсказки. Подсказка интервьюера — не провал, а приглашение к диалогу. Сбер прямо пишет, что эксперты помогают, если кандидат ушёл не туда.
  • Проверьте крайние случаи: пустой ввод, один элемент, дубликаты, отрицательные числа, всё одинаковое, уже отсортированное, переполнение.

Секция на кодинг: практическая задача

Здесь проверяют не знание алгоритмов, а то, как вы пишете рабочий код: интерфейсы, структуры данных, обработку ошибок, тесты, иногда конкурентность. Что обещают компании:

  • Яндекс — 1,5 часа, задача, близкая к повседневной работе: написать код с нуля или доработать существующий. Java и Python — в своей IDE с демонстрацией экрана (для Java — обычно несколько классов и unit-тесты; для Python — автотесты на pytest, фича, оптимизация или исправление ошибок). Go — в онлайн-редакторе: горутины, пакет sync, каналы. Если останется время, дадут усложнение.
  • Т-Банк — секция по языку и платформе: ревью кода и доработка под бизнес-задачу, разбор сценария сбоя, исправление многопоточного кода, задача на SQL. Для Go — асинхронная задача и примитивы языка.
  • Сбер — ревью кода или небольшая задача на техническом интервью.
  • VK — секция на кодинг в формате, похожем на яндексовский.

Типичные задачи такой секции, которые полезно уметь написать с тестами за час:

  • LRU-кэш с ограничением по размеру — словарь плюс двусвязный список (условие).
  • Хранилище «ключ — значение» с TTL: запись, чтение, истечение срока, очистка.
  • Ограничитель запросов (rate limiter): token bucket или скользящее окно — подборка по highload.
  • Пул воркеров с ограничением числа одновременных задач и корректным завершением — для Go и Java.
  • Параллельный обход: например, обойти ссылки сайта не больше чем в N потоков и правильно понять, когда работа закончилась. Похожую задачу описывает кандидат на Хабре по собеседованию в Яндекс.
  • Небольшой сервис в памяти с несколькими методами: добавить запись, обновить, получить топ — с обсуждением, как он поведёт себя на больших данных.

Что подготовить заранее:

  • Пустой проект в IDE, где собираются и запускаются тесты (JUnit, pytest, go test) — Яндекс советует это прямо.
  • Привычка писать тест сразу после первой рабочей версии, а не в конце.
  • Уверенное знание стандартной библиотеки своего языка: коллекции, работа со временем, потоки и примитивы синхронизации.
  • Выключенные AI-подсказки в IDE: на секциях Яндекса, Сбера и VK они запрещены, а Т-Банк пишет, что их использование заметно.

Тренажёр: случайная задача и таймер

Получите задачу, нажмите «Старт» и решайте вслух — на бумаге или в редакторе без автодополнения. Таймер подскажет, чем заняться на каждом отрезке. Лучше всего — с другом в роли интервьюера.

Где тренироваться

Решать вслух — отдельный навык

Задачи можно решать в одиночку, а объяснять решение — только собеседнику. Проведите пробную секцию с другом: он читает условие и задаёт вопросы, вы решаете вслух. sotto распознает разговор и после звонка разберёт, где объяснение было ясным, а где вы поплыли.

Как устроен разбор

Как устроены собеседования целиком — в обзоре «Как проходят собеседования в Яндекс, Т-Банк, Сбер, Авито, VK и Ozon». В каких программах их проводят — в статье о Телемосте, SaluteJazz и других сервисах.

Источники и дата проверки

Проверено 16 октября 2026.

← Все статьи