Эйч
Эйч
  • Эйч Плюс
  • Все менторы
Гайды/Data Scientist/Собес в Ozon · Senior Data Scientist, Anti-Fraud

Собес в Ozon · Senior Data Scientist, Anti-Fraud

Материал Эйч · Опубликовано 21 июля 2026

Обзор

Подготовка к собеседованию в команду антифрода Ozon Банка: ML-модели на кредитных продуктах, графовая аналитика, мониторинг в проде и бизнес-метрики

Антифрод и скоринг
Градиентный бустинг и метрики
SQL и большие данные
MLOps и мониторинг моделей
Графовая аналитика
Python
Поведенческие вопросы

Фишка: Команде важны end-to-end ownership: от фича-инжиниринга и R&D графовой аналитики до деплоя realtime-сервисов, мониторинга дрейфа и расчёта экономического эффекта модели для кредитных продуктов банка с 35+ млн клиентов

ЭтапДлительностьЧто проверяют
HR-скрининг30–45 минОпыт в антифроде/скоринге, мотивация, формат работы (офис/удалёнка), зарплатные ожидания, готовность к финтех-темпу
Техническое интервью с DS/тимлидом60–90 минML-алгоритмы, метрики классификации при дисбалансе классов, feature engineering, SQL, Python, кейсы из антифрода и кредитного скоринга
Практический кейс / домашнее задание1–3 часа (иногда take-home)Построение модели на табличных данных, выбор метрик, интерпретация результатов, расчёт бизнес-эффекта
Интервью с заказчиком / hiring manager45–60 минСамостоятельность, работа с бизнесом, интеграция внешних скоров, опыт доведения проектов до прода, коммуникация с юристами и закупками

Стек и темы

Обязательный минимум

  • Python (pandas, scikit-learn, XGBoost/LightGBM/CatBoost)
  • SQL с оконными функциями, сложные JOIN и агрегации
  • Классификация при сильном дисбалансе классов (fraud detection)
  • Precision, Recall, ROC-AUC, PR-AUC, KS, Gini
  • Feature engineering для транзакционных и онбординговых моделей
  • Полный ML lifecycle: train → deploy → monitor (MLflow или аналог)
  • ClickHouse / Vertica / Spark для больших данных
  • Мониторинг моделей: data drift, concept drift, алерты
  • Бизнес-метрики: fraud rate, false positive rate, экономический эффект

Плюсом будет

  • Realtime ML-сервисы (latency < 100ms)
  • Графовые методы и графовые БД (Neo4j, GraphFrames)
  • Интеграция внешних скоров (телеком, БКИ)
  • Регуляторика ЦБ в части антифрода
  • Rule-based системы и гибрид ML + эвристики
  • Опыт наставничества junior DS

Антифрод и скоринг

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

При дисбалансе (fraud < 1%) PR-AUC и Recall@fixed FPR важнее ROC-AUC. Считай cost matrix: стоимость пропущенного фрода vs ложного блокирования. KS/Gini — для скоринга.

Что важнее — precision или recall — для блокировки транзакции vs отправки на ручную проверку?

Автоблок → высокий precision (минимум false positive). Ручная модерация → можно поднять recall, precision менее критичен. Порог подбирается по бизнес-cost.

Как борешься с дисбалансом классов в антифроде?

Undersampling majority, SMOTE (осторожно с leakage), class weights, focal loss, anomaly detection (Isolation Forest, Autoencoder), метрики на imbalanced data.

Чем отличаются онбординговые и транзакционные модели?

Онбординг — скоринг при открытии продукта (мало данных о клиенте, внешние скоры). Транзакционные — scoring в момент операции (behavioral features, velocity, device fingerprint).

Как оцениваешь экономический эффект модели?

Saved fraud losses − operational costs (manual review, false blocks) − model maintenance. A/B или backtesting на out-of-time выборке.

Фишка: Ozon Банк ожидает умение переводить precision/recall в язык бизнеса: сколько сэкономили, сколько клиентов заблокировали зря.

Ловушка: Не используй accuracy как основную метрику — при fraud rate 0.1% модель «всё ок» даст 99.9% accuracy.

Совет: Подготовь 1–2 кейса: как нашёл паттерн мошенничества, как довёл модель до прода, как реагировал на инцident/drift.

Машинное обучение

Как работает градиентный бустинг?

Последовательно добавляет деревья, каждое обучается на residual (градиент loss). Регуляризация: learning rate, max_depth, subsample. CatBoost/LightGBM/XGBoost — основа в антифроде.

В чём разница в реализации между XGBoost и LightGBM?

XGBoost — level-wise рост деревьев. LightGBM — leaf-wise (быстрее, риск overfit). LightGBM — GOSS, EFB для категорий. CatBoost — ordered target encoding.

Что такое регуляризация в машинном обучении?

Штраф сложности модели: L1 (sparse features), L2 (smooth weights), dropout, early stopping, max_depth, min_samples_leaf.

В чём разница между L1 и L2 регуляризацией?

L1 → разреженные веса, feature selection. L2 → малые равномерные веса, устойчивость. Elastic Net = L1 + L2.

Какие плюсы и минусы древовидных моделей?

+ интерпретируемость, работа с нелинейностями, не нужен scaling. − overfit, плохая экстраполяция, нестабильность при drift.

Как коллинеарность признаков влияет на Random Forest?

RF устойчив к коллинеарности (importance размывается между коррелированными). Для линейных моделей — проблема. SHAP/permutation importance для интерпретации.

Как выполняется кросс-валидация для временных данных?

Time-based split, expanding/rolling window. Нельзя random K-Fold — leakage из будущего. Out-of-time validation обязательна в антифроде.

Что является таргетом для бустинга?

Negative gradient of loss function (pseudo-residuals). Для MSE — разность y − prediction. Для logloss — y − p.

Совет: В антифроде почти всегда бустинг (CatBoost/LightGBM) — знай гиперпараметры и как их тюнить на imbalanced data.

Ловушка: Random K-Fold на транзакционных данных = data leakage через будущие транзакции того же клиента.

Метрики и оценка моделей

Что такое precision?

TP / (TP + FP). Доля реальных фродов среди заблокированных. Высокий precision = мало ложных срабатываний.

Для чего используются различные метрики классификации?

Accuracy — сбалансированные классы. Precision/Recall — trade-off. ROC-AUC — ранжирование. PR-AUC — imbalanced. F1 — баланс P/R. Business KPI — fraud saved.

Какие метрики используешь для оценки качества модели?

Offline: PR-AUC, Recall@FPR=1%, KS, Gini. Online: fraud rate, approval rate, manual review rate, $ saved. Calibration — для скоринга.

Какая алгоритмическая сложность вычисления ROC-AUC?

O(n log n) — сортировка по score + один проход. PR-AUC — аналогично по precision-recall curve.

Что такое доверительный интервал?

Диапазон, в котором истинный параметр с вероятностью 1−α. Bootstrap или Wilson interval для метрик на hold-out.

Фишка: На собесе могут попросить выбрать порог по ROC/PR curve и обосновать через cost matrix.

Feature Engineering и данные

Какие знаешь методы кодирования категориальных признаков?

One-Hot (линейные модели), Target/Mean encoding (бустинг, риск leakage — CV encoding), CatBoost ordered encoding, Frequency encoding, Hashing.

Какие способы кодирования категориальных признаков существуют?

Label, One-Hot, Target, Leave-One-Out, Weight of Evidence (WoE) для скоринга, Embedding для high-cardinality.

Как отбираешь признаки при их большом количестве?

Filter (correlation, IV/WoE), Wrapper (RFE), Embedded (L1, feature importance, SHAP). В антифроде — domain knowledge + velocity features.

Как классифицировать возраст по бинам с шагом 5 лет?

pd.cut() с bins=[0,5,10,...] или SQL CASE WHEN age BETWEEN x AND y. WOE-бинning для монотонности в скоринге.

Для каких моделей предпочтителен One-Hot Encoding, а для каких нет?

Линейные/логрег — OHE. Деревья/бустинг — не нужен, CatBoost/LightGBM обрабатывают категории нативно.

Совет: Velocity features (кол-во транзакций за N минут, сумма за час, geo-jump) — ключевые в транзакционном антифроде.

Ловушка: Target encoding без CV — leakage. Всегда fit на train fold, transform на val.

SQL и Big Data

Работал ли со Spark?

PySpark DataFrame API, Spark SQL, UDF. Альтернативы: Polars, DuckDB, ClickHouse для OLAP. В Ozon — ClickHouse/Vertica/Spark/Hadoop.

Что можно использовать как альтернативу PySpark?

Polars, DuckDB, Dask, ClickHouse SQL, BigQuery. Выбор зависит от объёма и latency.

Напиши SQL: топ-3 мерчанта по сумме транзакций за последние 7 дней с оконной функцией

SUM(amount) OVER (PARTITION BY merchant ORDER BY date ROWS 7 PRECEDING) или CTE + RANK() OVER (PARTITION BY ... ORDER BY sum DESC).

Как детектировать аномалии в SQL на больших объёмах?

Z-score/percentile по агрегатам, window functions для velocity, HAVING COUNT > threshold, approximate quantiles в ClickHouse.

Фишка: Ozon Банк работает с ClickHouse — знай ARRAY JOIN, approximate functions, materialized views.

MLOps и мониторинг

Как мониторишь модель в проде?

Data drift (PSI, KS на фичах), concept drift (метрики на labeled subset), latency, throughput, score distribution, alert thresholds.

Что такое PSI (Population Stability Index)?

Σ (actual% − expected%) × ln(actual%/expected%). PSI > 0.25 — значимый drift. Считается по score bins или фичам.

Как реагируешь на инцident с моделью?

Rollback/champion-challenger, rule-based fallback, root cause (data pipeline? drift? fraud pattern change?), retrain pipeline.

Опыт с MLflow?

Experiment tracking, model registry, staging → production, artifact storage. Аналоги: Weights & Biases, ClearML, Kubeflow.

Фишка: В вакансии явно указан мониторинг: алерты, drift analysis, incident response — подготовь пример из опыта.

Python

Какие знаешь неизменяемые типы данных в Python?

int, float, str, tuple, frozenset, bytes. list/dict/set — mutable.

В чём разница между = и оператором is в Python?

= — присваивание. is — identity (same object in memory). `a is b` vs `a == b` (value equality).

Что такое метод Copy vs DeepCopy в Python?

copy.copy() — shallow (вложенные объекты shared). copy.deepcopy() — рекурсивная копия. Важно для pandas DataFrame.

Какая сложность сортировки списка?

O(n log n) — Timsort в Python. sorted() vs .sort() — второй in-place.

Совет: Могут дать live-coding: группировка транзакций, расчёт velocity features, парсинг JSON-логов.

Графовая аналитика (nice-to-have)

Как графовые методы помогают в антифроде?

Fraud rings: shared device/IP/card/phone между аккаунтами. Community detection (Louvain), PageRank, connected components, link prediction.

Какие графовые БД знаешь?

Neo4j (Cypher), Amazon Neptune, GraphFrames (Spark). Хранение edges: (user)→(device)→(merchant).

Как строишь граф для fraud detection?

Nodes: users, devices, cards, IPs, merchants. Edges: transaction, login, registration. Features: degree, clustering coefficient, betweenness.

Фишка: Ozon Банк активно развивает graph analytics в антифроде — даже без глубокого опыта покажи понимание fraud rings.

Задачи

Расчёт velocity features для транзакций

Дан DataFrame транзакций: user_id, timestamp, amount, merchant_id. Напиши код, который для каждой транзакции считает: (1) количество транзакций пользователя за последний час, (2) сумму транзакций за последний час, (3) число уникальных merchant_id за последние 24 часа.

import pandas as pd

def add_velocity_features(df: pd.DataFrame) -> pd.DataFrame:
    df = df.sort_values(['user_id', 'timestamp'])
    df['ts'] = pd.to_datetime(df['timestamp'])
    
    result = []
    for user_id, group in df.groupby('user_id'):
        g = group.set_index('ts')
        g['txn_count_1h'] = g.rolling('1h').count()['amount']
        g['txn_sum_1h'] = g.rolling('1h').sum()['amount']
        g['unique_merchants_24h'] = g.rolling('24h')['merchant_id'].apply(lambda x: x.nunique(), raw=False)
        result.append(g.reset_index())
    
    return pd.concat(result, ignore_index=True)

# SQL-альтернатива (ClickHouse):
# SELECT *,
#   count() OVER (PARTITION BY user_id ORDER BY timestamp RANGE BETWEEN INTERVAL 1 HOUR PRECEDING AND CURRENT ROW) AS txn_count_1h,
#   sum(amount) OVER (PARTITION BY user_id ORDER BY timestamp RANGE BETWEEN INTERVAL 1 HOUR PRECEDING AND CURRENT ROW) AS txn_sum_1h
# FROM transactions

Сложность: O(n log n) per user due to rolling window

Выбор порога классификации по cost matrix

Модель антифрода выдаёт score ∈ [0,1]. Cost matrix: пропущенный фрод = 500₽, ложная блокировка = 50₽. Средний чек фрода = 5000₽. Напиши функцию, которая по массивам y_true, y_score находит оптимальный порог, минимизирующий total cost.

import numpy as np
from sklearn.metrics import confusion_matrix

def optimal_threshold(y_true, y_score, cost_fn=500, cost_fp=50):
    thresholds = np.sort(np.unique(y_score))
    best_cost, best_t = float('inf'), 0.5
    
    for t in thresholds:
        y_pred = (y_score >= t).astype(int)
        tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()
        cost = fn * cost_fn + fp * cost_fp
        if cost < best_cost:
            best_cost, best_t = cost, t
    
    return best_t, best_cost

# На собесе: объясни, что при cost_fn >> cost_fp оптимальный порог ниже (больше recall)

Сложность: O(n × k) где k — число уникальных порогов

Расчёт PSI для мониторинга drift

Реализуй функцию PSI между expected (train) и actual (prod) распределениями скоров. Разбей на 10 equal-frequency bins по train.

import numpy as np

def calculate_psi(expected, actual, n_bins=10):
    breakpoints = np.percentile(expected, np.linspace(0, 100, n_bins + 1))
    breakpoints[0], breakpoints[-1] = -np.inf, np.inf
    
    expected_pct = np.histogram(expected, bins=breakpoints)[0] / len(expected)
    actual_pct = np.histogram(actual, bins=breakpoints)[0] / len(actual)
    
    # Smoothing для избежания log(0)
    expected_pct = np.clip(expected_pct, 1e-4, None)
    actual_pct = np.clip(actual_pct, 1e-4, None)
    
    psi = np.sum((actual_pct - expected_pct) * np.log(actual_pct / expected_pct))
    return psi

# Интерпретация: PSI < 0.1 — OK, 0.1-0.25 — мониторить, > 0.25 — retrain

Сложность: O(n log n) для percentile + O(n) для histogram

System Design

  • Спроектируй realtime-систему скоринга транзакций с latency < 100ms: от получения события до решения (approve/review/block)
  • Как построить гибридную систему антифрода: ML-модели + rule engine + graph analytics?
  • Как организовать champion/challenger framework для A/B тестирования моделей в проде?
  • Спроектируй pipeline мониторинга: data drift → alert → auto-retrain → rollback

Каркас ответа

  1. Уточни требования: latency, throughput (TPS), SLA, regulatory constraints
  2. Опиши data flow: event stream (Kafka) → feature store (online + offline) → scoring service → decision engine
  3. ML layer: model serving (Triton/MLflow/custom), caching features, fallback rules
  4. Decision layer: score thresholds, rule engine (Drools/custom), manual review queue
  5. Monitoring: metrics (Prometheus), drift detection, alerting (PagerDuty), model registry
  6. Обсуди trade-offs: consistency vs availability, batch vs realtime features, cost of false positives

Поведенческое

  • Расскажи о своём опыте в антифроде / кредитном скоринге
  • Опиши проект, который ты довёл от идеи до прода самостоятельно
  • Как ты работал с заказчиком / бизнесом? Приведи пример перевода технических метрик на язык денег
  • Расскажи про инцident с моделью в проде — как реагировал?
  • Опыт интеграции внешних данных (БКИ, телеком-скоры)? Как оценивал ROI?
  • Как ты приоритизируешь задачи, когда несколько проектов параллельно?
  • Почему Ozon Банк / антифрод?
  • Готов ли работать в офисе / гибрид / удалёнка?

План подготовки

3 дня

  • Повторить метрики imbalanced classification: PR-AUC, Recall@FPR, cost matrix
  • Разобрать 2–3 кейса из своего опыта в антифроде/скоринге по STAR
  • Повторить gradient boosting: XGBoost vs LightGBM vs CatBoost, ключевые гиперпараметры
  • Решить задачу на velocity features (Python/SQL)
  • Изучить описание вакансии: графовая аналитика, внешние скоры, мониторинг

7 дней

  • Всё из days_3
  • SQL: оконные функции, сложные JOIN, ClickHouse-специфика
  • MLOps: PSI, drift detection, MLflow workflow
  • System design: нарисовать realtime fraud scoring pipeline на доске
  • Повторить feature engineering: WoE, target encoding без leakage, velocity/behavioral features
  • Подготовить вопросы к интервьюеру про стек, команду, метрики успеха

14 дней

  • Всё из days_7
  • Графовые методы: fraud rings, community detection, graph features
  • Регуляторика ЦБ: 161-ФЗ, 369-ФЗ — базовое понимание требований к антифроду
  • Практика: построить end-to-end pipeline на public dataset (IEEE-CIS Fraud Detection на Kaggle)
  • Mock interview: объясни модель бизнес-заказчику за 5 минут
  • Изучить продукты Ozon Банка: карта Ozon, рассрочка, кредит — понимание контекста
БлокГотов, если...
Антифрод и скорингможешь выбрать метрики для fraud detection, объяснить trade-off precision/recall и посчитать cost matrix
Gradient Boostingможешь объяснить как работает бустинг, чем отличаются XGB/LGBM/CatBoost, и как тюнить на imbalanced data
SQL и Big Dataможешь написать запрос с оконными функциями для velocity features и знаешь основы ClickHouse/Spark
MLOpsможешь описать pipeline мониторинга: PSI, drift, alerting, incident response, MLflow
Feature Engineeringможешь перечислить методы encoding категорий, velocity features и избежать data leakage
System Designможешь нарисовать realtime scoring pipeline с feature store, model serving и decision engine
Behavioralесть 2–3 STAR-кейса с измеримым бизнес-результатом в антифроде/финтехе

В день собеседования

  • Повторить свои ключевые кейсы (2–3 штуки) — цифры и результаты
  • Освежить формулы: precision, recall, PR-AUC, PSI
  • Подготовить вопросы: стек команды, размер, текущие вызовы, метрики команды
  • Проверить связь/камеру если онлайн
  • Настроиться: Ozon ценит самостоятельность и end-to-end ownership

Профессия

Data Scientist

Темы

Антифрод и скоринг
Градиентный бустинг и метрики
SQL и большие данные
MLOps и мониторинг моделей
Графовая аналитика
Python
Поведенческие вопросы

Компания

OzonOzon

Сопроводим до оффера

Умножим шансы на каждом этапе поиска и поможем получить выгодный оффер

Узнать больше

🍪 Мы используем cookie и Яндекс Метрику, чтобы сайт работал и становился лучше. Подробнее в политике.

Сервис развития карьеры

Контактыteam@h.careers@hcareers
TelegramVKYouTubeLinkedIn
Сервисы
AI поиск работы newПоиск вакансий newПоиск компаний newКонструктор резюме newВопросы с собеседований newЗадачи с собеседований newГайды к собеседованиям newПроверятор резюме newГенератор сопроводительных new
Поиски себя
Войти в ITКарьерная стратегияПовысить доходПрофориентация
Работа в России
Сопровождение до оффера Найти работу в РоссииРевью портфолиоРевью резюмеТестовое собеседование
Работа за рубежом
Найти работу за границейПомощь в оформлении LinkedInРевью резюме на английскомТестовое собеседование на английском
Навыки
Личный брендОценка навыковРазвитие навыков и компетенций
Поддержка
ВыгораниеОтношения с коллективомОтношения с руководителемСиндром самозванцаСложное увольнение
Для бизнеса
Аудит процессов компанииВыступление на внутреннем мероприятии компанииКонсалтинг бизнеса
Профессии
HRАдминистрированиеАналитикаДизайнИнформационная безопасностьИскусственный интеллектИсследованияКонсалтингКонтентМаркетингМенеджментНаука и образованиеОфисПоддержкаПредпринимательство
Компания
С чем помогаемОтзывы Вопросы и ответыСертификатыВебинарыСтать ментором

Услуги оказывает ООО «Эйч Карьера»
ИНН 9710095807 ОГРН 1227700077340
Адрес: 127006, г. Москва, Старопименовский пер., д. 18, стр. 2, помещ./ком./этаж I/19/2
Платформа принадлежит ООО «Эйч Карьера»

Copyright © 2020-2025 Сервис развития карьеры Эйч. Все права защищены.

Политика конфиденциальностиПользовательское соглашениеОферта