К обычному разбору
Тренировка по собеседованиюФидбек после собеседованияT-Bank2025-09-30

Т-Банк: Техническое собеседование

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

Шагов
5
Вопросов
5
Задач
0
1Вопрос10 мин

Переранжирование и разнообразие в fashion-рекомендациях item-to-item

Fashion item-to-item рекомендации возвращают много почти одинаковых вещей. Как разделить ответственность retrieval, ranking и reranking, чтобы сохранить релевантность и добавить разнообразие?

Ответьте без подсказки

Сначала проговорите ответ вслух или тезисами.

Запишите черновик

Формулы, план решения, риски и примеры.

Сравните с разбором

Откройте разбор только после своей попытки.

Показать разбор

Короткий ответ

Retrieval должен отвечать за recall, ранкер - за релевантность и бизнес-сигналы, а финальный reranking - за явные list-level ограничения: coverage категорий, штраф за дубликаты, MMR или похожие правила.

Подробный разбор

Начните с разделения стадий. Retrieval-модель находит совместимые кандидаты по embeddings или атрибутным фильтрам. Ранкер сортирует их по предсказанной релевантности или бизнес-ценности. Финальный слой reranking уже навешивает ограничения, которые неудобно учить pointwise-моделью: не показывать много почти одинаковых вещей, сохранять баланс категорий и выполнять продуктовые правила.

Для diversity сначала определите, что именно должно быть разнообразным. В fashion это могут быть категории в образе, цвета, бренды, ценовые сегменты или визуальная похожесть. Практические методы: штрафовать кандидатов, слишком близких к уже выбранным; использовать MMR; выбирать из category buckets; добавлять coverage constraints; обучать ранкер с diversity-aware признаками.

Оценивайте и релевантность, и качество списка. Candidate recall@K и NDCG недостаточно, если финальная выдача выглядит повторяющейся. Добавьте coverage, category entropy, intra-list similarity, serendipity или доменную метрику полноты образа, а затем проверьте online через бизнес-метрики и guardrails.

Типичные ошибки

  • Считать reranking еще одним pointwise-классификатором.
  • Мерить только recall и игнорировать почти одинаковые повторы.
  • Определять diversity без связи с продуктовой семантикой.
  • Пытаться засунуть все бизнес-правила в retrieval-модель.

Как сказать на собеседовании

  • Назовите один конкретный метод reranking и одну diversity-метрику.
  • Объясните, почему retrieval, ranking и reranking оптимизируют разные цели.
2Вопрос10 мин

Офлайн-метрики рекомендаций: recall@K, precision@K, coverage и NDCG

Сравните recall@K, precision@K, coverage и NDCG для candidate generation и ранжирования. Как эти метрики ведут себя при изменении K?

Ответьте без подсказки

Сначала проговорите ответ вслух или тезисами.

Запишите черновик

Формулы, план решения, риски и примеры.

Сравните с разбором

Откройте разбор только после своей попытки.

Показать разбор

Короткий ответ

Recall@K показывает, какая доля релевантных объектов попала в top K; precision@K - какая доля top K релевантна; coverage - какую часть каталога или пользователей покрывает система; NDCG учитывает релевантность с дисконтом по позиции.

Подробный разбор

Recall@K - это число релевантных объектов, найденных в top K, деленное на все релевантные объекты для запроса или пользователя. Для candidate generation это часто главная offline-метрика: следующая стадия уже не восстановит кандидатов, которых retrieval не достал. При росте K recall не убывает.

Precision@K - число релевантных объектов в top K, деленное на K. Она отражает концентрацию хороших объектов наверху списка и часто падает при росте K, потому что дальние позиции сложнее удерживать релевантными.

Coverage - отдельное семейство метрик. Это может быть catalog coverage, user coverage, покрытие известных positives у candidate generator или покрытие бизнес-правил после фильтров. Всегда называйте denominator: coverage чего именно вы считаете.

NDCG учитывает и релевантность, и позицию. Высоко релевантные объекты наверху дают больший вклад, чем те же объекты ниже, потому что DCG применяет логарифмический discount по позиции, а NDCG нормирует результат на идеальный ranking.

Типичные ошибки

  • Путать denominator у recall и precision.
  • Считать, что precision обязана монотонно расти или падать при изменении K.
  • Говорить coverage без уточнения, coverage чего именно.
  • Использовать NDCG, не определив binary или graded relevance labels.

Как сказать на собеседовании

  • Явно напишите формулы recall@K и precision@K.
  • Скажите, что offline-метрики все равно нужно валидировать online через A/B.
3Вопрос12 мин

Обучение pointwise-ранкера без утечек и перекоса в популярные товары

Вы обучаете boosting-ранкер для рекомендаций по кликам и связкам образов. Как собрать датасет, сделать train/validation/test split и не переобучиться на популярные товары и старые показы?

Ответьте без подсказки

Сначала проговорите ответ вслух или тезисами.

Запишите черновик

Формулы, план решения, риски и примеры.

Сравните с разбором

Откройте разбор только после своей попытки.

Показать разбор

Короткий ответ

Соберите примеры из реально показанных user-item или item-item пар, делайте temporal train/validation/test split, тюньте только по validation и проверяйте, что модель не тащит наверх только популярные товары из старых логов показов.

Подробный разбор

Для pointwise-ранкера каждая строка должна описывать решение, которое система реально могла принять: user-item или source-item-candidate пару, признаки, доступные на serving-time, контекст показа и label вроде click, outfit membership, purchase или weighted engagement. Негативы по возможности берите из показанных, но не кликнутых кандидатов; случайные негативы полезны, но могут сделать задачу слишком легкой.

Делите по времени, чтобы модель училась на прошлом и оценивалась на будущем. Минимум нужны train, validation и test: гиперпараметры подбираются по validation, а финальные метрики один раз считаются на held-out test. Если тюнить и репортить качество на одном и том же будущем fold, метрика будет оптимистичной.

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

После обучения отдельно посмотрите, не стала ли выдача однообразной: сколько разных категорий и непопулярных товаров попадает в рекомендации, не просели ли новые товары и узкие сегменты. Финальную проверку все равно делайте в A/B-тесте: офлайн-метрика может выглядеть хорошо, даже если пользователю показывают одни и те же популярные вещи.

Типичные ошибки

  • Тюнить гиперпараметры и репортить финальное качество на одном validation fold.
  • Использовать только случайные негативы и игнорировать товары, которые показали, но по ним не кликнули.
  • Учить модель на популярности товара и называть это персонализацией.
  • Делить данные случайно по времени и случайно использовать будущие признаки каталога или будущую популярность товара.

Как сказать на собеседовании

  • Явно скажите: train, validation и test split по времени.
  • Скажите простыми словами: в логах есть только показанные товары, а популярные товары получают больше показов и кликов, поэтому модель может переучиться на старую выдачу.
4Вопрос12 мин

Генераторы кандидатов и ALS для implicit-feedback рекомендаций

Какие генераторы кандидатов можно использовать в рекомендательной системе? Где в этом стеке находится ALS по implicit feedback, в чем его сильные стороны и ограничения?

Ответьте без подсказки

Сначала проговорите ответ вслух или тезисами.

Запишите черновик

Формулы, план решения, риски и примеры.

Сравните с разбором

Откройте разбор только после своей попытки.

Показать разбор

Короткий ответ

Используйте несколько генераторов: popularity, правила, full-text, content embeddings, item-to-item, collaborative filtering, ALS/LightFM и two-tower retrieval. ALS факторизует user-item feedback в embeddings и достает объекты с высоким dot product.

Подробный разбор

В production recommender обычно смешивают несколько источников кандидатов. Popularity и freshness - сильные fallback-и. Full-text и атрибутные фильтры покрывают явный intent. Content embeddings достают семантически похожие объекты. Item-to-item генераторы стартуют от объекта из истории пользователя. Collaborative methods достают то, что нравилось похожим пользователям. Two-tower модели учат user и item embeddings для быстрого ANN retrieval.

ALS - конкретный алгоритм matrix factorization внутри семейства collaborative filtering. Для implicit feedback строится user-item матрица из views, clicks, likes, comments, shares или purchases, часто как weighted confidence, а не как чистые binary labels. ALS по очереди оптимизирует user factors при фиксированных item factors и item factors при фиксированных user factors.

Сильные стороны ALS - простота, масштабируемость и полезный collaborative signal. Слабые - cold start, ограниченная выразительность linear dot product, зависимость от истории interactions и чувствительность к popularity/exposure bias. Часто это baseline или один generator, а не вся рекомендательная система.

Типичные ошибки

  • Считать ALS и collaborative filtering синонимами.
  • Использовать один generator и пропустить cold-start или content cases.
  • Смешивать разные feedback actions, не определив веса.
  • Забывать, что ALS не умеет представлять новых пользователей и новые items без дополнительных признаков.

Как сказать на собеседовании

  • Перечислите generators по источнику сигнала: popularity, content, collaborative и neural retrieval.
  • Объясните ALS как alternating optimization факторизованной interaction matrix.
5Вопрос10 мин

SASRec и база Transformer для рекомендательных систем

Объясните SASRec как последовательную рекомендательную модель, устройство self-attention в Transformer и отличие SASRec от BERT4Rec.

Ответьте без подсказки

Сначала проговорите ответ вслух или тезисами.

Запишите черновик

Формулы, план решения, риски и примеры.

Сравните с разбором

Откройте разбор только после своей попытки.

Показать разбор

Короткий ответ

SASRec - causal self-attention sequential recommender, который предсказывает следующий item по предыдущим. BERT4Rec bidirectional и обычно обучается через masked-item prediction.

Подробный разбор

SASRec представляет последовательность взаимодействий пользователя как tokens и применяет Transformer self-attention, чтобы предсказать следующий item. Обычно это decoder-style или causal setup: каждая позиция должна attend только на предыдущие позиции, чтобы модель не видела будущее во время обучения.

В scaled dot-product attention каждый token порождает queries, keys и values. Dot products между query и key оценивают, какие предыдущие tokens важны; деление на квадратный корень из key dimension стабилизирует logits; softmax превращает scores в веса; weighted sum по values дает contextualized representations. Multi-head attention повторяет это в нескольких subspaces.

BERT4Rec использует BERT-like bidirectional encoder и masked-item training: часть items скрывается, а модель предсказывает их по левому и правому контексту. SASRec ближе к autoregressive next-item prediction. Выбор зависит от serving objective и от того, доступен ли future context в training task.

Типичные ошибки

  • Разрешить модели attend на будущие items в next-item setup.
  • Объяснять attention только как “смотрим на важные токены” без Q/K/V.
  • Путать causal training в SASRec и masked training в BERT4Rec.
  • Игнорировать serving-time latency и ограничения candidate retrieval.

Как сказать на собеседовании

  • Упомяните causal mask для SASRec.
  • Используйте Q, K, V и scaled softmax при объяснении attention.