К обычному разбору
Тренировка по собеседованиюТехническое собеседованиеRaiffeisen Bank2026-04-09

Raiffeisen ML Coding: метрики, ML theory и SQL Top-K

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

Шагов
7
Вопросов
6
Задач
1
1Вопрос8 мин

Как понять, что ML-фича принесла пользу

Интервьюер спрашивает: какие метрики отслеживали и как понимали, что внедренное ML-решение действительно приносит пользу?

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

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

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

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

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

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

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

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

Нужно связать offline metrics с product/business metrics: recall/nDCG/precision для модели, CTR/conversion/GMV/acceptance rate для продукта, guardrails по latency, качеству и негативу.

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

Хороший ответ начинается с типа задачи. Для рекомендаций offline можно смотреть recall@k, nDCG, hit rate, precision@k. Для классификации — precision/recall/F1/ROC-AUC/PR-AUC. Но это только proxy: они показывают качество модели на данных, а не бизнес-эффект.

Дальше нужны online/product metrics. Для рекомендаций это CTR, conversion, GMV, доля успешных действий, retention, средний чек или другой бизнес target. Для moderation — доля автоматизированных решений, нагрузка на ручную модерацию, false positive/false negative и complaints.

Сильный ответ обязательно добавляет A/B или controlled rollout, guardrails, сегментный анализ и проверку, что offline uplift действительно переносится в online поведение.

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

  • Говорить только про nDCG или AUC.
  • Не назвать бизнес-метрику.
  • Не обсудить A/B и guardrails.

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

  • Разделяй offline, online и business metrics.
  • Добавь пример из домена: рекомендации, модерация, поиск или агент.
2Вопрос10 мин

Линейная регрессия и проблемы аналитического решения

Как объяснить линейную регрессию, MSE и почему аналитическое решение через матрицу не всегда удобно?

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

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

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

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

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

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

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

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

Линейная регрессия минимизирует MSE; normal equation требует работы с X^T X, что дорого и нестабильно на больших или плохо обусловленных данных.

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

Модель строит прогноз как линейную комбинацию признаков и обычно оптимизирует сумму квадратов ошибок. Аналитически можно решить через normal equation, но инверсия или решение системы с X^T X может быть дорогим и численно нестабильным.

Проблемы возникают при больших матрицах, мультиколлинеарности и плохо обусловленных признаках. Поэтому часто используют gradient descent, регуляризацию, QR/SVD или готовые численно устойчивые solver-ы.

3Вопрос6 мин

Чем логистическая регрессия похожа на линейную

Интервьюер спрашивает: если рассматривать логистическую регрессию, чем она похожа на линейную и чем отличается?

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

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

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

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

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

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

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

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

Обе модели считают линейную комбинацию признаков. Линейная регрессия предсказывает число, а логистическая пропускает linear score через sigmoid и интерпретирует результат как вероятность класса.

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

Общая часть — линейный скор: w*x + b. В линейной регрессии этот скор напрямую является прогнозом вещественного target. В логистической регрессии скор проходит через sigmoid, поэтому результат лежит от 0 до 1 и может интерпретироваться как вероятность положительного класса.

Отличается и функция потерь. Для линейной регрессии часто используют MSE, для логистической — log loss / binary cross-entropy. Decision boundary у логистической регрессии при пороге 0.5 все равно линейная в пространстве признаков.

Важно не говорить, что логистическая регрессия — это просто линейная регрессия с округлением. Это классификационная вероятностная модель с другой функцией потерь.

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

  • Сказать, что logistic regression предсказывает классы напрямую.
  • Забыть про sigmoid и log loss.
  • Путать regression в названии с регрессионной задачей.

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

  • Формула: sigmoid(w*x + b).
  • Назови отличие target, output range и loss.
4Вопрос10 мин

ROC AUC как качество ранжирования

Что означает ROC AUC и почему его можно понимать как метрику ранжирования?

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

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

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

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

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

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

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

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

ROC AUC - вероятность, что случайный positive получит score выше случайного negative; поэтому это threshold-free метрика порядка объектов.

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

ROC строит TPR против FPR при разных thresholds. AUC не зависит от одного выбранного порога и показывает качество порядка объектов по score.

Полезная интерпретация: вероятность, что случайный positive окажется выше случайного negative. При сильном дисбалансе классов ROC AUC может выглядеть слишком оптимистично, поэтому для rare positives часто дополнительно смотрят PR-AUC, precision@K или recall@K.

5Вопрос10 мин

Precision или Recall на разных этапах рекомендаций

В recommender system где важнее recall, а где precision?

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

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

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

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

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

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

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

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

На candidate generation важнее recall, на финальном ранжировании и выдаче сильнее важны precision, nDCG и качество top-K.

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

Первый этап должен не потерять хорошие варианты, поэтому оптимизирует coverage и recall@K. Если early stage потерял объект, ranker уже не сможет его восстановить.

Финальный ranker работает с меньшим набором и должен поставить лучшие объекты наверх: precision@K, nDCG, CTR, add-to-cart или conversion. В production рядом держат guardrails: latency, diversity, novelty, empty recommendations и бизнес-ограничения.

6Вопрос10 мин

Градиентный бустинг против Random Forest

Чем gradient boosting отличается от Random Forest и где в бустинге появляется градиент?

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

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

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

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

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

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

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

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

Random Forest строит независимые деревья и усредняет их, boosting строит деревья последовательно, исправляя ошибки текущего ансамбля.

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

В Random Forest деревья обучаются параллельно на bootstrap samples и случайных подмножествах признаков, поэтому усреднение снижает variance.

В gradient boosting новая модель аппроксимирует антиградиент функции потерь по текущим предсказаниям. Для MSE это похоже на обучение по residuals, для logloss - по градиентам logloss. Boosting часто точнее, но чувствительнее к learning rate, depth, leakage и переобучению.

7SQL-задачаMedium

Top-50 товаров на пользователя

Условие

Есть таблица candidates с ответами рекомендательной модели.

Схема

CREATE TABLE candidates (
  user_id INTEGER NOT NULL, -- пользователь
  item_id INTEGER NOT NULL, -- товар
  score REAL NOT NULL       -- релевантность, чем выше тем лучше
);

Для каждого пользователя оставьте top-50 товаров по score.

Результат должен содержать user_id, item_id, score и быть отсортирован по user_id ASC, затем score DESC, затем item_id ASC.

Решение прямо на странице

Напишите код, запустите проверки и только потом открывайте разбор.

Проверка решения

Нажмите «Запустить проверки» или Ctrl+Enter.

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

Подсказки

  • Оконная функция

    Нужен ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY score DESC).

  • Фильтр top-k

    Заверните оконную функцию в CTE или подзапрос и отфильтруйте rn <= 50.

Идея решения

Используем ROW_NUMBER() с разбиением по пользователю и сортировкой по score DESC.

После этого оставляем строки с rn <= 50. Для стабильного результата добавляем item_id ASC в сортировку.

Эталонный код

WITH ranked AS (
  SELECT
    user_id,
    item_id,
    score,
    ROW_NUMBER() OVER (
      PARTITION BY user_id
      ORDER BY score DESC, item_id ASC
    ) AS rn
  FROM candidates
)
SELECT
  user_id,
  item_id,
  score
FROM ranked
WHERE rn <= 50
ORDER BY user_id ASC, score DESC, item_id ASC;
Сложность
Время: O(n log n). Память: O(n).
Оконная функция требует сортировки строк внутри пользовательских групп.