К обычному разбору
Тренировка по собеседованиюТехническое собеседованиеConstructor2026-01-19

Constructor ML System Design: candidate generation и ranking для e-commerce search

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

Шагов
6
Вопросов
6
Задач
0
1Кейс8 мин

Быстрый baseline ранжирования лучше random

Есть релевантные кандидаты поиска, но финальный порядок случайный. Какое простое решение можно запустить быстро?

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

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

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

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

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

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

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

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

Начать с popularity/business baseline: продажи, клики, add-to-cart, рейтинг, availability и свежесть.

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

MVP не обязан требовать обучения. Можно посчитать item popularity score по свежему окну, добавить availability, категорию, регион и business boosts, затем использовать это как deterministic reranking. Такой baseline быстро лучше random, дает контрольную точку для A/B и помогает оценить, сколько value приносит сложная модель.

Важно не превращать baseline в вечный костыль: сразу логировать impressions и downstream labels, чтобы перейти к learning-to-rank.

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

  • Сразу строить сложный ranker.
  • Не учитывать freshness/availability.
  • Оптимизировать только clicks.

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

  • Явно скажи: сначала baseline, затем ML.
  • Назови срок запуска и риски.
2Вопрос12 мин

Target для learning-to-rank из implicit feedback

Как построить target для реранкера товаров, если есть логи показов, кликов, корзины и покупок?

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

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

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

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

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

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

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

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

Использовать показы как базу, positives из click/cart/purchase, покупки весить сильнее; target может быть binary, weighted или pairwise/listwise.

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

Единица обучения - query-user-item-impression. Негативы лучше брать из показанных, но не выбранных товаров, с поправкой на position/exposure bias. Сигналы можно взвесить: click меньше add-to-cart, add-to-cart меньше purchase, purchase можно домножать на margin или contribution profit.

После target design нужно проверить, что label доступен без leakage и что offline metric коррелирует с бизнес-целью хотя бы на исторических экспериментах.

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

  • Брать все непокупки как negatives.
  • Игнорировать position bias.
  • Смешивать цели покупки и маржи без явной функции.

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

  • Проговори unit of training data.
  • Скажи, почему нужны именно impression logs.
3Вопрос10 мин

Фичи для marketplace search ranker

Какие признаки подать в модель ранжирования товаров в поиске маркетплейса?

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

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

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

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

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

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

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

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

Фичи нужно группировать по query, item, user, context и cross-сигналам; отдельно проверить availability, freshness, leakage и latency.

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

Единица скоринга - query-user-item в конкретном request context. Query features: нормализованный текст, tokens, intent/category, spelling, query frequency, lexical BM25 score, dense query-item similarity. Item features: category, brand, price, discount, availability, delivery SLA, rating, reviews, sales velocity, returns, margin, freshness, текстовые и image embeddings. User features: регион, устройство, сегменты интересов, история категорий, price sensitivity, средний чек, недавние действия.

Самые сильные признаки часто cross-features: query-item relevance, user-category affinity, user-brand affinity, item availability для региона, matching размера/цвета/категории, session intent, похожесть к последним viewed/cart items. Для marketplace search важно не забыть business и quality constraints: наличие, доставка, дубликаты, promoted items, diversity, adult/safety filters.

Перед добавлением признака нужно ответить: доступен ли он online в момент ранжирования, не смотрит ли в будущее, как часто обновляется, сколько стоит по latency, что делать при пропуске. Тяжелые embeddings и агрегаты лучше precompute в feature store, а online оставлять только быстрые lookups и compact scores.

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

  • Перечислить только user/item без query и context.
  • Добавить фичи, которые доступны только после показа или покупки.
  • Не оценить freshness, latency и fallback при missing values.

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

  • Группируй фичи по query/item/user/context/cross.
  • Сразу говори, какие считаются offline, nearline и online.
  • Отдельно проверь leakage и request-path latency.
4Кейс15 мин

Online serving архитектура реранкера

Как встроить ML-реранкер в существующий поиск, если candidate generation уже возвращает itemIds?

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

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

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

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

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

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

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

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

Добавить reranking service: принять userId/query/itemIds, достать фичи, batch-score моделью, отсортировать и вернуть top-N.

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

Сервис лучше держать отдельным при ясном API и latency budget. Он должен score-ить кандидатов batch-wise, иметь feature store/cache, fallback на baseline, мониторинг качества/скорости и версионирование моделей. Для популярных товаров часть item features и scores можно precompute.

Если кандидатов много, перед реранкером нужен дешевый pre-ranking/top-K cap, иначе тяжелая модель попадет в request path на слишком большом множестве объектов.

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

  • Скорить по одному item.
  • Передавать тяжелые признаки через API.
  • Не иметь fallback и p95/p99 latency.

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

  • Нарисуй data flow.
  • Назови границы сервисов и budget на scoring.
5Вопрос12 мин

Миллион кандидатов перед реранкером

Запрос вроде "книга" возвращает миллион релевантных товаров. Как не скорить весь миллион тяжелой моделью?

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

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

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

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

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

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

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

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

Ввести pre-ranking/top-K cap перед реранкером: lexical/semantic score, popularity, diversity/dedup, clustering или sampling.

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

Pipeline должен иметь дешевый этап отбора до ML-реранкера: retrieval score, business/popularity score, availability, category constraints и dedup. Затем можно обеспечить diversity по категориям или embedding clusters и скорить только допустимый K по latency budget.

K выбирается не на глаз: он связан с latency, стоимостью модели и качеством top-N выдачи.

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

  • Скорить все.
  • Брать random sample без quality guarantees.
  • Забыть coverage/diversity.

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

  • Свяжи K с p95 latency и качеством выдачи.
6Вопрос10 мин

Оптимизировать прибыль, а не только покупки

Модель учится на purchase target и поднимает дешевые товары со скидками. Как ранжировать так, чтобы больше зарабатывать?

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

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

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

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

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

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

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

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

Включить margin/profit в objective: weight label на expected margin, использовать expected profit = P(purchase) * margin, добавить guardrails.

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

Можно переопределить label/value через цену, маржу или contribution profit, обучать модель на expected business value, либо делать post-ranking rerank с margin multiplier. Важно не сломать conversion, availability, customer experience и долгосрочную лояльность.

Формула expected value обычно сильнее, чем просто "добавим цену в фичи": модель должна оптимизировать ценность действия, а не только вероятность действия.

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

  • Домножать на цену без маржи.
  • Игнорировать скидки/returns.
  • Резко уронить конверсию ради дорогих товаров.

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

  • Скажи expected value = probability * value.
  • Отдельно назови guardrails.