Ко всем темам
Тематический маршрут

Рекомендательные системы

Какие собеседования показывают разные типы рекомендаций: корзина, лента и marketplace?

Candidate generation, ranking, метрики, cold start, feedback bias и production на трёх разных продуктовых доменах.

3 реальных собеседования28 вопросов6 подтем

Маршрут из трёх собеседований

Проходите по порядку: база → глубина → применение.

Начать отсюдамарт 2026 г.

Собирает основу темы и задаёт правильную структуру ответа.

GRII RED: ML System Design

GRII RED

Последовательно проходит путь от item-item baseline до персонализации, ANN и serving рекомендаций в корзине.

Middle / Senior Аудио · 62 мин 11 ключевых этапов 14 шагов практики

После прохождения

  • Построить сильный baseline для корзины
  • Понять границу между похожестью, комплементарностью и персонализацией
Цели и метрикиОтбор кандидатовРанжированиеХолодный стартЭксплуатация
Углубитьсяоктябрь 2025 г.

Добавляет сложные follow-up и проверяет глубину понимания.

Т-Банк: ML System Design

T-Bank

Глубокая лента: hybrid baseline, ANN, two-tower, negative sampling, cold start, drift и retraining.

Senior Аудио · 58 мин 8 ключевых этапов 9 шагов практики

После прохождения

  • Разложить архитектуру feed RecSys по стадиям
  • Объяснить обучение ranker на смещённом feedback
Цели и метрикиОтбор кандидатовРанжированиеХолодный стартОбратная связь и смещенияЭксплуатация
Закрепить на практикемарт 2026 г.

Переводит знания в coding или законченный прикладной кейс.

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

OLX

Прикладной marketplace-кейс связывает признаки, validation, карусель рекомендаций, revenue и A/B.

Middle / Senior Аудио · 90 мин 9 ключевых этапов 13 шагов практики

После прохождения

  • Связать offline-метрики с продуктовым эффектом
  • Спроектировать эксперимент без смешения эффектов
Цели и метрикиРанжированиеОбратная связь и смещенияЭксплуатация

Что покрывает каждое интервью

Матрица построена по конкретным вопросам и этапам, а не по совпадению слов в заголовке.

ПодтемаНачать отсюдаУглубитьсяЗакрепить на практике
Цели и метрикиБизнес-цель, оценка на исторических данных и продуктовые метрики.Рабочее пониманиеРабочее пониманиеГлубоко
Отбор кандидатовПохожие объекты, коллаборативные методы, ANN и двухбашенные модели.ГлубокоГлубоко
РанжированиеЦелевые переменные, функции потерь, признаки и переранжирование.Рабочее пониманиеГлубокоРабочее понимание
Холодный стартНовые пользователи, товары и контент.Рабочее пониманиеГлубоко
Обратная связь и смещенияИстория показов, исследование новых вариантов и смешивающие факторы.ГлубокоГлубоко
ЭксплуатацияВывод модели, переобучение, мониторинг и ограничения.ГлубокоРабочее пониманиеРабочее понимание

Отдельная практика по теме

Раскрывайте вопросы и сверяйте ответы прямо здесь. Задачи открываются отдельно в редакторе.

Ключевые вопросы маршрута

Формулировка

Нужно сделать блок рекомендаций в корзине для 10 млн пользователей и 100 тыс. товаров. Как сформулировать цель, ограничения и MVP?

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

Цель блока задается через add-to-cart/order/AOV, а MVP строится на item-item co-occurrence и category/popular fallback с фильтрами availability и already-in-cart.

Cart recommendations отличаются от обычной главной ленты: пользователь уже выразил intent через текущую корзину. Цель можно задать через incremental add-to-cart, order conversion, AOV/GMV, margin и отсутствие негативного UX. CTR сам по себе вторичен.

При 100 тыс. товаров полный online перебор не нужен. MVP: offline считать top-N соседей для item-item co-occurrence, хранить candidates в low-latency storage, на запросе агрегировать кандидатов товаров из корзины, фильтровать уже добавленные и недоступные, затем применять category/business rules.

Ограничения фиксируются сразу: latency budget, freshness каталога, cold start, fallback cascade, diversity, compatibility categories и мониторинг empty response/fallback share.

Полная карточка: теория, ошибки и прогресс

Формулировка

Какие offline, online и guardrail-метрики подходят для блока рекомендаций в корзине, если клики не равны покупке?

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

Online primary лучше связывать с add-to-cart, order conversion, AOV/GMV или margin. Guardrails: complaints, repeated category, returns, latency, coverage и diversity.

CTR полезен как диагностический сигнал, но для корзины он может обманывать. Пользователь может кликнуть на любопытный товар и не купить, либо купить без клика, если товар добавляется прямо из блока. Поэтому primary metric должна быть ближе к бизнес-действию: incremental add-to-cart, order conversion, items per order, AOV, GMV, margin или retention.

Offline можно считать recall@K/nDCG на co-purchase или add-to-cart labels, но важно помнить про bias старых показов и популярность. Нужны slice metrics: новые товары, long-tail, категории, регионы, price bands.

Guardrails: уже добавленные товары, unavailable items, diversity, repeated category rate, complaints/hide, returns/cancellations, latency, empty response rate, fallback share и coverage каталога.

Полная карточка: теория, ошибки и прогресс

Формулировка

Нужно сделать рекомендации товаров в блоке корзины: 10 млн пользователей и 100 тыс. товаров. Как построить простой baseline через совместные покупки?

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

Baseline: считать item-item co-occurrence по заказам/сессиям, хранить top-N соседей на товар, для корзины агрегировать соседей товаров из корзины, исключать уже добавленные и сортировать по score.

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

На offline этапе строим sparse item-item matrix или top-N neighbors per item: score может быть count, lift, PMI, cosine over item vectors или normalized co-occurrence. На online этапе берем товары из корзины, достаем соседей для каждого, агрегируем scores, выкидываем уже добавленные товары и показываем top-K.

Обязательно нужны freshness и ограничения: пересчет раз в день/несколько часов, фильтр availability, stock, price, category, business rules и fallback на popular/top sellers, если соседей мало.

Полная карточка: теория, ошибки и прогресс

Формулировка

В item-item рекомендациях для корзины может не быть соседей: новый товар, редкий товар, новый пользователь или корзина из многих товаров. Какие fallback предусмотреть?

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

Нужна cascade fallback: item-item neighbors, category-level popular, global popular, персональные favorites/history, business-curated complements, с фильтром наличия и исключением уже купленного/добавленного.

Система должна быть robust: пользователь не должен увидеть пустой блок только потому, что товар новый или редкий. Поэтому строим каскад.

Первый уровень — item-item соседи товаров из корзины. Второй — популярные товары в категориях, связанных с корзиной. Третий — глобальные top sellers или personalized popular по истории пользователя. Для нового пользователя можно использовать контекст: гео, магазин, устройство, время, текущая категория.

Если корзина большая, нужно не только набрать кандидатов, но и исключить уже присутствующие товары, дедуплицировать, ограничить повторяющиеся категории и не показывать несовместимые товары. Для каждого fallback стоит логировать причину, чтобы мониторить долю fallback traffic.

Полная карточка: теория, ошибки и прогресс

Формулировка

Какие слабые места появляются у item-item co-occurrence baseline для корзины: long tail, новые товары, популярность и novelty?

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

Co-occurrence усиливает популярные товары, плохо покрывает новые/редкие items и может снижать novelty. Нужны normalization, category fallback, exploration и content features.

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

Снижение проблем: использовать lift/PMI/cosine вместо raw counts, ограничивать dominant popular items, добавлять category-level и content-based candidates, учитывать availability, вводить diversity/novelty reranking и оставлять exploration traffic для long-tail.

Метрики должны смотреть не только общий CTR, но и coverage каталога, долю long-tail показов, novelty, repeated category rate и качество на cold-start товарах.

Полная карточка: теория, ошибки и прогресс

Формулировка

Как использовать уже существующую матричную модель или ALS в задаче рекомендаций к текущей корзине, не потеряв постановку item-to-cart?

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

ALS может дать item/user embeddings и candidates, но cart surface требует score от текущей корзины: aggregation item vectors, user context и фильтры complements/availability.

ALS обычно учит user и item factors по implicit feedback. Для корзины есть два варианта использования. Первый - item-to-item: похожесть item embeddings помогает находить соседей товаров из корзины. Второй - персональный слой: user embedding добавляет предпочтения пользователя поверх текущего cart intent.

Граница постановки важна. Если просто показывать top items для пользователя, система может игнорировать текущую корзину. Для cart recommendations score должен учитывать товары в корзине: агрегировать их embeddings, взвешивать последние добавления, применять category complementarity и фильтровать already-in-cart.

ALS стоит сравнивать с co-occurrence baseline по offline labels и online uplift, отдельно контролируя latency, freshness и cold-start, где content/category fallback часто надежнее.

Полная карточка: теория, ошибки и прогресс

Формулировка

Если пользователь добавил кольцо, стоит ли рекомендовать еще кольца? Как сформулировать цель и ограничения для рекомендаций в корзине?

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

Для корзины часто нужны complements, а не substitutes. Нужно добавить category/business constraints: не повторять уже представленную категорию, рекомендовать совместимые категории и контролировать diversity.

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

Это можно учесть на candidate generation или reranking. В генерации строим item-to-item neighbors с учетом complementary categories. В ранжировании добавляем признаки: category of cart items, candidate category, category compatibility, price ratio, material, style, occasion. После ранжирования применяем diversity constraints.

Важно обсуждать business rules и availability: нельзя рекомендовать отсутствующие товары, несовместимые пары, слишком дорогие/дешевые outliers без причины. Метрики: add-to-cart, conversion, AOV/GMV, diversity, repeated category rate, complaints/negative feedback.

Полная карточка: теория, ошибки и прогресс

Формулировка

Как наложить ограничения по категориям и комплементарности, если candidates достаются через ANN по embeddings?

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

Ограничения можно применять pre-filter в индексе, post-filter после retrieval или category-aware reranking. Обычно комбинируют shortlist побольше и hard/soft constraints.

ANN возвращает ближайшие embeddings, но близость не гарантирует допустимую категорию или complementarity. Есть несколько уровней контроля. Pre-filter применяет category/availability constraints внутри индекса или через отдельные per-category indices. Это быстрее после retrieval, но может снизить recall, если фильтр слишком жесткий.

Post-filter берет shortlist больше K, удаляет недоступные и неподходящие категории, затем reranker выбирает top-K. Category-aware reranker добавляет признаки cart category, candidate category, compatibility score, price ratio и diversity penalties. Для важных hard rules нужен deterministic слой, который нельзя перебить model score.

Мониторинг: доля кандидатов, удаленных фильтрами, empty results после constraints, latency, coverage категорий и online uplift по complements.

Полная карточка: теория, ошибки и прогресс

Формулировка

При обучении MLP или бустинга для корзины какие признаки подавать: user, item, item-to-cart или category features?

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

Строка ranker обычно описывает candidate в контексте корзины и пользователя: item features, cart aggregate, user history, cross-features и business constraints.

Для cart ranker единица скоринга - candidate item в конкретном cart/user context. Item features описывают сам candidate: category, price, brand, availability, margin, embeddings, popularity. Cart features агрегируют текущую корзину: категории, сумма, последние добавленные товары, price range, embeddings и уже покрытые needs.

User features добавляют персонализацию: история категорий, брендов, средний чек, price sensitivity, регион, размеры, recent views. Самые сильные признаки часто cross-level: candidate-category compatibility with cart, candidate price vs cart price, user affinity to candidate category и item already bought recently.

Модель может быть MLP, GBDT или two-stage ranker, но train/serving parity важнее типа модели. Все признаки должны быть доступны на момент показа и иметь latency/freshness budget.

Полная карточка: теория, ошибки и прогресс

Формулировка

После baseline и ranker нужно объяснить production: где считаются кандидаты, где хранятся фичи, как часто пересчитывать рекомендации при изменении корзины?

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

Offline считаем item-item neighbors, item/user/category features и обучаем ranker. Online при изменении корзины достаем candidates, обогащаем cached features, скорим ranker и возвращаем top-K с throttling/cache.

Архитектура обычно двухконтурная. Offline: ETL собирает события, заказы, каталог и availability; считает item-item candidates, popular lists, user/item/category features; обучает ranker и публикует артефакты.

Online: cart service вызывает recommendation service при значимом изменении корзины. Сервис берет товары корзины, достает candidates из low-latency storage, фильтрует unavailable/already-in-cart, обогащает признаками из feature store/cache, скорит ranker и возвращает top-K.

Нужны latency budget, throttling и cache: не пересчитывать каждую секунду, а пересчитывать на add/remove item, смену магазина/адреса или через короткий TTL. Мониторинг: latency, empty response rate, fallback share, CTR, conversion, revenue, drift фичей и freshness каталога.

Полная карточка: теория, ошибки и прогресс

На страницах собеседований есть ещё 18 связанных вопросов.

Задачи из этих интервью

В выбранных интервью эта тема проверяется устно и через system design. Отдельных coding-задач в маршруте пока нет.

Повторить теорию перед практикой