Эйч
Эйч
  • Эйч Плюс
  • Все менторы
Гайды/Machine Learning / AI/Собес в Ozon · Стажер Data Scientist (транзакционный антифрод, Ozon Банк)

Собес в Ozon · Стажер Data Scientist (транзакционный антифрод, Ozon Банк)

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

Обзор

Стажировка в команде транзакционного антифрода: данные, модели, метрики бизнеса и вывод в прод. Офис в Москве, переход в штат через ~6 месяцев.

Классификация и метрики при дисбалансе
Python и SQL для аналитики транзакций
Валидация на временных рядах
Антифрод: false positive vs пропуск фрода
Базовая математика и статистика

Фишка: Ozon Банк позиционируется как банк собственной разработки внутри Ozon Fintech: короткие циклы, мало легаси, прямой диалог с коллегами; для антифрода критична связка «модель — бизнес-метрика — прод».

ЭтапДлительностьЧто проверяют
Скрининг / HR20–40 минМотивация, график обучения в вузе, готовность к офису 40 ч/нед, срок стажировки и ожидания по переходу в штат.
Техническое интервью60–90 минML-база (классификация, метрики, дисбаланс), Python, SQL, разбор кейса по транзакциям или аномалиям.
Встреча с командой30–60 минКак рассуждаете о данных и рисках, умение задавать вопросы, интерес к антифроду и продукту банка.

Стек и темы

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

  • Python (pandas, базовые структуры данных, sklearn-уровень)
  • SQL (джойны, агрегаты, оконные функции, CTE)
  • Задачи классификации: train/val/test, переобучение
  • Метрики при сильном дисбалансе: precision, recall, PR-AUC, F1 с весами
  • Базовая теория вероятностей и линейная алгебра
  • Честная валидация на временных данных (без утечки из будущего)

Плюсом будет

  • Пет-проекты в ML (Kaggle, GitHub)
  • Опыт с anomaly detection
  • Знакомство с gradient boosting (CatBoost/LightGBM) и monotonic constraints
  • Понимание cost-sensitive learning и порогов решения
  • Базовый MLOps: воспроизводимость экспериментов, feature store на уровне идей

ML: классификация и антифрод

Расскажи, что такое задача классификации.

Объект → дискретный класс по признакам; обучение по размеченным примерам; бинарный/мультикласс; отличие от регрессии.

Что делать, если для бизнеса важнее ошибка по нулевому или первому классу?

Подобрать метрику под класс (precision/recall нужного класса), веса в loss, порог по кривой PR/ROC, cost matrix; в антифроде часто дороже пропуск фрода или ложная блокировка — уточнить у бизнеса.

Что такое monotonic constraints и зачем они нужны?

Ограничение: рост признака не уменьшает скор (или наоборот); интерпретируемость и соответствие бизнес-логике; поддержка в CatBoost/LightGBM/XGBoost.

Что такое query-by-committee?

Активное обучение: комитет моделей; разметка примеров с максимальным разногласием — экономия бюджета разметки.

Фишка: В транзакционном антифроде редко оптимизируют accuracy — готовьтесь объяснить trade-off ложных срабатываний и пропущенного фрода.

Ловушка: Случайный split по строкам транзакций даёт завышенное качество; нужен split по времени или по клиенту.

Временные ряды и валидация

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

Sliding window; train/test по времени; walk-forward; без shuffle; учёт сезонности и дрейфа; leakage через агрегаты «из будущего».

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

ASOF join / last known value: для даты без котировки брать max(date) < target; оконные функции или lookup по календарю.

Совет: Транзакции — это поток во времени: упомяните lag-фичи, rolling-агрегаты и отдельную валидацию на «хвосте» периода.

Статистика и байесовский взгляд

Что такое сопряжённые распределения и зачем они удобны?

Априор и апостериор в одном семействе (напр. бета–биномиальное); аналитическое обновление по данным без тяжёлого MCMC на простых моделях.

Совет: На стажёрском уровне достаточно связать с оценкой доли редких событий и uncertainty — без ухода в формулы.

Python

Что находится под капотом у set? Какая фундаментальная структура данных?

Хеш-таблица; O(1) amortized insert/lookup; коллизии (chaining/open addressing); set не упорядочен (в CPython 3.7+ dict сохраняет порядок, set — нет).

Ловушка: Путают сложность set и list при поиске; для больших списков id транзакций set/dict предпочтительнее.

SQL и инженерия признаков

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

GENERATED/COMPUTED column или materialized view; trade-off: на лету vs хранение; индексы на вычисляемых полях зависят от СУБД.

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

Тот же паттерн в SQL: LATERAL join, DISTINCT ON, window last_value ignore nulls.

Фишка: На собесе часто дают задачу «собери витрину признаков по транзакциям за N дней» — CTE + window functions.

Дополнительно (если успеют)

Что такое гибридный поиск в RAG?

Семантический (эмбеддинги) + keyword (BM25); rerank; баланс recall по точным терминам и по смыслу.

Что такое Arrow и где он применяется?

In-memory columnar format; zero-copy между Python/Java/Spark; ускорение ETL и ML-пайплайнов.

Совет: Вопросы про RAG/генеративный ML в Ozon Tech встречаются чаще на других направлениях; для антифрода держите фокус на табличных данных.

Задачи

Метрики при дисбалансе 1:1000

Есть бинарный классификатор мошенничества: 1 млн транзакций, 1000 фродов. Модель A: precision=0.8, recall=0.5. Модель B: precision=0.4, recall=0.9. Какую выберете для продакшена и как обоснуете? Как посчитать ожидаемое число ложных блокировок при пороге?

Выбор зависит от cost matrix: cost(FN) vs cost(FP). При высоком cost пропуска фрода — B; при дорогих ложных блокировках клиентов — A. Ожидаемые FP ≈ (TP/recall - TP) при фиксированном recall или через precision: FP = TP*(1-precision)/precision. На практике строят PR-кривую и согласуют порог с лимитом на долю заблокированных легитимных операций.

Сложность: O(1) для расчёта на агрегатах

SQL: агрегаты по клиенту за 7 дней

Таблица transactions(user_id, ts, amount, is_fraud). Для каждой транзакции добавьте признаки: сумма amount за предыдущие 7 дней (не включая текущую) и число транзакций за тот же период. Без утечки из будущего.

Оконные функции: SUM(amount) OVER (PARTITION BY user_id ORDER BY ts ROWS BETWEEN 7 PRECEDING AND 1 PRECEDING) — при необходимости заменить на RANGE по интервалу 7 days. COUNT(*) аналогично. Альтернатива: self-join с условием t2.ts BETWEEN t1.ts - interval '7 days' AND t1.ts - epsilon.

Сложность: O(n log n) при сортировке по user_id, ts

Python: порог по PR-кривой

Даны y_true и y_score (вероятности). Напишите логику выбора порога, при котором recall ≥ 0.85, а precision максимальна среди таких порогов.

from sklearn.metrics import precision_recall_curve
prec, rec, thr = precision_recall_curve(y_true, y_score)
mask = rec[:-1] >= 0.85
best = thr[mask][np.argmax(prec[:-1][mask])] if mask.any() else thr[np.argmax(rec[:-1])]

Сложность: O(n log n) из-за сортировки порогов в sklearn

System Design

  • Как бы вы построили MVP модели транзакционного антифрода от сырых логов до алерта в прод?
  • Как организовать переобучение модели при дрейфе атак?
  • Где поставить human-in-the-loop для разметки спорных кейсов?

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

  1. Уточнить объект scoring (транзакция, сессия, клиент) и SLA решения (мс vs минуты)
  2. Источники данных, витрина признаков, latency и хранение
  3. Разметка и задержка labels; стратегия валидации по времени
  4. Модель + порог + объяснимость для операторов
  5. Мониторинг: доля алертов, precision на разметке, drift признаков
  6. План отката и A/B или shadow mode перед жёсткой блокировкой

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

  • Почему антифрод в банке, а не классический ML в e-commerce?
  • Расскажите о пет-проекте или курсовой, где работали с несбалансированными данными
  • Как вы проверяете, что модель не «подглядывает» в будущее?
  • Пример, когда вы не согласились с метрикой, которую предложили — как аргументировали?
  • Готовы ли к офисному графику и как совместите со учёбой?
  • Какие вопросы хотите задать команде про стажировку и переход в штат?

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

3 дня

  • Повторить precision/recall/PR-AUC на игрушечном дисбалансе 1:100
  • Решить одну SQL-задачу с window functions (rolling 7d)
  • Прочитать описание вакансии и сформулировать 5 вопросов команде

7 дней

  • Пройти 2–3 вопроса из блоков ML и SQL вслух с таймером
  • Собрать мини-ноутбук: train CatBoost/LightGBM на публичном fraud-датасете (IEEE-CIS, Kaggle credit card — любой)
  • Отработать ответ про валидацию временных рядов и leakage

14 дней

  • Углубить anomaly detection: isolation forest vs supervised при редком фроде
  • Повторить monotonic constraints и cost-sensitive порог
  • Мок-интервью: кейс «выбор модели A vs B» + SQL витрина признаков
  • Подготовить STAR-историю про учебный/личный ML-проект
БлокГотов, если...
ML: классификация и антифродможете объяснить выбор метрики и порога при дисбалансе без формул с потолка
Временные рядыможете описать time-based split и почему shuffle вреден
Pythonобъясняете set/dict и базовый sklearn pipeline
SQLпишете rolling-агрегат по user_id без leakage
Кейсза 5 минут набросаете пайплайн антифрода от данных до мониторинга

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

  • Повторить шпаргалку метрик и типичные SQL-паттерны (CTE, window)
  • Взять ноутбук/примеры кода без секретов
  • Уточнить адрес офиса и формат (live coding vs обсуждение)

Профессия

Machine Learning / AI

Темы

Классификация и метрики при дисбалансе
Python и SQL для аналитики транзакций
Валидация на временных рядах
Антифрод: false positive vs пропуск фрода
Базовая математика и статистика

Компания

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 Сервис развития карьеры Эйч. Все права защищены.

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