сеньорчикОткрыть в Telegram
← все компаниивопросы для собеседований · Яндекс

Вопросы на собеседовании в Яндексе

Яндекс гоняет кандидатов по самой строгой связке: живой кодинг на алгосекциях, ML и статистика на секциях по специальности, SQL и System Design ближе к финалу. Ниже — вопросы того же формата и уровня из банка Сеньорчика: срез тем, которые чаще всего всплывают у кандидатов в Яндекс.

76 вопросов с тегом «Яндекс»·ниже разбор 9
срез тем:#llm ×15#classic_ml ×10#algorithms ×8#ml_system_design ×7#sql ×7#classic_nlp ×5#deep_learning ×5#statistics ×5
  1. #ab_testing1 / 9

    Что такое A/A-тест и зачем его гонять?

    A)Обе группы получают одинаковый опыт — проверка сплита и метрик
    B)Тест, где на пользователей одновременно катят сразу две разные фичи
    C)Специальный приём, позволяющий ровно удвоить статистическую мощность
    D)Эксперимент, запускаемый строго на одном проценте всего трафика
    показать ответ и разбор
    +A)Обе группы получают одинаковый опыт — проверка сплита и метрик

    // разбор: A/A ловит битый сплит (неслучайное разделение, пересечение юзеров, sample ratio mismatch), баги логирования и некорректные тесты (например, обычный t-test на ratio-метрике с зависимостями). Если на сотнях симулированных A/A p < 0.05 выпадает заметно чаще 5% — платформе верить нельзя. Дёшево и обязательно перед доверием к A/B-инфре.

  2. #ab_testing2 / 9

    Что такое sample ratio mismatch (SRM) и почему при нём результаты теста нельзя интерпретировать?

    A)Разная длительность экспозиции групп, которая лечится продлением теста
    B)Несовпадение значений одной метрики между разными аналитическими дашбордами
    C)Разница в размере наблюдаемого эффекта между отдельными сегментами юзеров
    D)Фактическое соотношение групп значимо ≠ заданному — попадание неслучайно
    показать ответ и разбор
    +D)Фактическое соотношение групп значимо ≠ заданному — попадание неслучайно

    // разбор: SRM проверяется хи-квадратом на счётчиках попаданий; «крошечный» перекос на миллионах юзеров — почти наверняка систематическая потеря части трафика в одной группе (например, тяжёлая фича отваливает слабые устройства до логирования). Любой вывод при SRM — мусор: сначала найти и починить причину. В зрелых платформах SRM-алерт автоматический.

  3. #algorithms3 / 9

    Почему использовать список Python как очередь через pop(0) — плохая идея на больших объёмах?

    A)pop(0) сдвигает все оставшиеся элементы на одну позицию — это O(n), и очередь деградирует до O(n²)
    B)Pop(0) вообще не работает и бросает исключение
    C)List физически не способен хранить больше миллиона элементов и упадёт с ошибкой памяти в одной непрерывной области оперативной памяти процесса
    D)Pop(0) меняет тип списка на кортеж
    показать ответ и разбор
    +A)pop(0) сдвигает все оставшиеся элементы на одну позицию — это O(n), и очередь деградирует до O(n²)

    // разбор: list — динамический массив: удаление с начала (pop(0)) требует сдвинуть все последующие элементы влево, это O(n). В цикле на n элементов получаем O(n²). Для FIFO нужен collections.deque — popleft() у него O(1), потому что это блочная структура с дешёвыми концами.

  4. #algorithms4 / 9

    Алгоритм A — O(n log n), алгоритм B — O(n²). Когда осторожничать с выводом «A всегда быстрее»?

    A)Ни при каком: асимптотика обеспечивает, что A быстрее на входе и железе
    B)Ровно при n = 0, в остальных случаях A строго быстрее
    C)При больших n, где именно B внезапно становится быстрее A
    D)При малых n: у A больше константа, и на практике B может обгонять
    показать ответ и разбор
    +D)При малых n: у A больше константа, и на практике B может обгонять

    // разбор: Асимптотика — про поведение при n→∞. На малых n младшие члены и константы решают: алгоритм с худшим классом роста, но малой константой (вставки) часто быстрее «умного». Поэтому гибридные сортировки (Timsort) переключаются на вставки для коротких кусков. Вывод «лучший класс = всегда быстрее» верен лишь начиная с некоторого n₀.

  5. #algorithms5 / 9

    Почему сортировка сравнениями не может быть быстрее O(n log n) в худшем случае?

    A)Из-за ограничений оперативной памяти
    B)Так исторически договорились программисты
    C)Потому что n log n — это и есть линейное время
    D)Есть n! возможных перестановок, и дерево сравнений глубиной ≥ log(n!) ≈ n log n
    показать ответ и разбор
    +D)Есть n! возможных перестановок, и дерево сравнений глубиной ≥ log(n!) ≈ n log n

    // разбор: Любая сортировка сравнениями различает n! перестановок входа. Каждое сравнение даёт 1 бит (двоичный исход), значит нужно минимум log₂(n!) сравнений. По формуле Стирлинга log₂(n!) ≈ n log n — это нижняя граница. Обойти её можно, лишь отказавшись от сравнений (counting/radix sort используют структуру ключей).

  6. #algorithms6 / 9

    Проверить правильность расстановки скобок в строке «([]{})». Какая структура естественна?

    A)Куча по приоритету, где каждой скобке присвоен свой числовой вес важности
    B)Стек: открывающую кладём, закрывающую снимаем и сверяем пару
    C)Хеш-таблица частот символов
    D)Отсортированный массив
    показать ответ и разбор
    +B)Стек: открывающую кладём, закрывающую снимаем и сверяем пару

    // разбор: Скобки — вложенная структура: последняя открытая должна закрыться первой, это чистый LIFO. Идём по строке: открывающую пушим в стек; встретив закрывающую — снимаем верх и проверяем, что это парная ей открывающая. В конце стек должен быть пуст. O(n) времени.

  7. #algorithms_advanced7 / 9

    Обход графа/дерева «в ширину» (BFS) естественно реализуется с помощью...

    A)очереди (FIFO): соседей в конец, обрабатываем с начала — по уровням
    B)Стека (LIFO)
    C)Кучи по приоритету
    D)Хеш-таблицы, которая сама по себе заменяет обход графа целиком
    показать ответ и разбор
    +A)очереди (FIFO): соседей в конец, обрабатываем с начала — по уровням

    // разбор: BFS обходит вершины по слоям удаления от старта: очередь хранит фронт, мы вынимаем вершину, кладём её непосещённых соседей в конец. FIFO гарантирует, что ближние уровни обработаются раньше дальних — поэтому BFS находит кратчайший путь по числу рёбер в невзвешенном графе. Стек дал бы DFS (в глубину).

  8. #classic_ml8 / 9

    Признак «среднее число заказов юзера в день» посчитан по всей истории и приклеен к каждой обучающей строке. Модель предсказывает отток на месяц вперёд. В чём беда?

    A)Среднее — слишком грубая статистика, нужна медиана по неделям
    B)Утечка из будущего: агрегат включает события после момента предсказания; фичи считают только по данным до него
    C)Беды нет: агрегаты по юзеру безопасны — они описывают поведение самого человека, а не таргет конкретной обучающей строки
    D)Признак дублирует таргет, его надо просто удалить
    показать ответ и разбор
    +B)Утечка из будущего: агрегат включает события после момента предсказания; фичи считают только по данным до него

    // разбор: Для строки «юзер в январе» агрегат по всей истории уже знает февраль и март — в том числе, ушёл ли юзер. Оффлайн-метрики взлетают, прод проваливается. Правильно: каждая строка получает фичи, посчитанные строго по данным до её момента предсказания — point-in-time корректность, ради которой фичсторы и городят time-travel join.

  9. #classic_ml9 / 9

    Почему L1-регуляризация (Lasso) зануляет часть весов, а L2 (Ridge) — только уменьшает их?

    A)L1 штрафует большие веса заметно сильнее, чем L2, поэтому наименее полезные веса быстро затухают до полного нуля
    B)L2 несовместима с градиентным спуском, поэтому веса лишь плавно уменьшаются
    C)L1 применяется к признакам с низкой дисперсией и выкидывает остальные
    D)У ограничения L1 есть «углы» на осях координат: оптимум часто попадает в вершину, где часть весов — ноль
    показать ответ и разбор
    +D)У ограничения L1 есть «углы» на осях координат: оптимум часто попадает в вершину, где часть весов — ноль

    // разбор: Геометрия: множество ограничений L1 — ромб с вершинами на осях, и линии уровня лосса чаще касаются его именно в вершине, где часть весов ровно ноль. У L2 ограничение — сфера без углов, поэтому веса сжимаются, но не зануляются. Отсюда Lasso как встроенный отбор признаков.

это девять из 76

Ещё 67 вопросов уровня Яндекс — внутри тренажёра.

Они входят в общий банк Сеньорчика: 2899 вопросов по 44 темам. Выбираете роль, тренируетесь ежедневными сессиями, а движок повторения возвращает темы, где вы плывёте, — как раз те, на которых валят секции. Начать можно бесплатно.