К обычному разбору
Тренировка по собеседованиюСкринингGamerAM2025-08-11

GamerAM: Скрининг

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

Шагов
5
Вопросов
5
Задач
0
1Вопрос10 мин

Rich-get-richer bias в matching-рекомендациях

В dating или matching продукте топ-профили получают львиную долю показов, а остальные растворяются. Как диагностировать и смягчить этот перекос, не убив вовлеченность?

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

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

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

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

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

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

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

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

Сначала измерьте концентрацию показов: Gini/entropy, долю показов у top 1/10%, покрытие и метрики по exposure buckets. Затем добавьте контролируемый exploration, ограничения на показы, diversity/fairness constraints и cold-start boosts с guardrails по engagement и match quality.

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

Диагностика начинается с распределения показов: сколько impressions получает каждый профиль, какая доля у top 1% и 10%, Gini/entropy exposure, coverage long tail, exposure by cohort и conversion по exposure buckets. Нужно отделить реальное качество профиля от feedback loop: популярные профили могут быть сильными, но система не должна бесконечно усиливать только их.

Смягчение должно быть контролируемым. Подходы: exploration slots, freshness/cold-start boosts, per-profile exposure caps, diversity constraints, multi-objective ranking или re-ranking, который балансирует expected engagement и coverage. Для matching важно оптимизировать reciprocal outcomes, а не только one-sided likes.

Нельзя просто рандомизировать всю выдачу. Нужен A/B test с guardrails: sessions, likes, messages, retention, complaints/reports, match quality и latency. Цель - расширить здоровое покрытие, не разрушая relevance.

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

  • Смотреть только CTR/like rate и не смотреть exposure concentration.
  • Слишком сильно рандомизировать выдачу.
  • Оптимизировать только one-sided likes в reciprocal matching.

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

  • Назовите Gini или entropy для распределения показов.
  • Предложите exploration плюс guardrail A/B test.
2Вопрос10 мин

Метрики удовлетворенности контентом в ленте

Как понять, что пользователям нравится контент в новостной ленте? Какие данные мониторить и какие смещения могут искажать эти метрики?

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

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

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

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

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

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

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

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

Смотрите позитивные и негативные сигналы вовлечённости, retention и downstream actions по сегментам. Учитывайте position bias, popularity bias, selection bias, clickbait, cold-start группы и то, что общая метрика может скрывать просадку нишевых сегментов.

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

Для ленты нужна не одна метрика, а набор сигналов. Positive engagement: clicks, dwell time, likes, comments, shares, saves, follows, profile visits. Negative signals: hides, skips, quick backs, reports, unfollows, session exits. Для социального продукта могут быть важнее downstream outcomes: новые связи, диалоги, возвращаемость и качество community.

Метрики нужно смотреть в разрезах: новые/старые пользователи, география, язык, игровые интересы, creator size, content type, cold-start users. Глобальная метрика может расти, пока маленькие communities или новые пользователи получают хуже.

Главные искажения: position bias, popularity bias, selection bias от старого ranker-а, survivorship bias, short-term clickbait и неоднозначность dwell time. Поэтому полезны randomized exploration buckets, counterfactual logging, long-term retention, qualitative review и guardrails по negative feedback.

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

  • Использовать CTR как единственную метрику.
  • Не смотреть negative feedback и long-term retention.
  • Оценивать только глобально и пропустить проблемы сегментов.

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

  • Разделите positive, negative и long-term signals.
  • Явно назовите position/popularity/selection bias.
3Вопрос8 мин

Что делать, если Airflow DAG тормозит или зависает

Что вы делаете, когда Airflow DAG-и тормозят, зависают или не укладываются в scheduled window?

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

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

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

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

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

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

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

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

Сначала отделите задержку scheduler/очереди от узкого места выполнения. Посмотрите историю duration, логи, ресурсы, объём данных, retries и внешние зависимости; затем оптимизируйте IO, shuffle/joins, partitioning, parallelism, timeouts, идемпотентные retries и freshness alerts.

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

Начинать нужно с фактов: какие tasks стали медленнее, где queue time, где execution time, что в scheduler/worker logs, какие CPU/RAM/disk/network/GPU metrics, не вырос ли объем данных и не появилась ли внешняя задержка. Часто проблема не в Airflow, а в Spark job, базе, object storage, API или выросшем input.

Дальше проверяем форму вычислений: не читаем ли всю историю вместо incremental slice, не фильтруем ли после большого join, нет ли skew, лишних shuffle, маленьких файлов, non-idempotent retries или зависших sensors. Исправления: partitioning, predicate pushdown, caching reused data, batch/chunk parallelism, resource pools, retries/timeouts и backfill policy.

Для надежности нужны SLA/freshness alerts, row-count checks, task duration alerts, runbook и owner. Если DAG уже не помещается в окно даже после оптимизации, нужно либо split/staged publish, либо пересмотреть product freshness requirement.

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

  • Сразу добавлять ресурсы без локализации bottleneck.
  • Игнорировать queue time и retries.
  • Мониторить success DAG-а, но не freshness результата.

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

  • Начните с logs, duration history и resource metrics.
  • Назовите data-volume drift и join/filter порядок как частые причины.
4Вопрос8 мин

Когда нужен batch ETL, а когда streaming

Когда стоит использовать классический batch ETL, а когда streaming для рекомендаций, аналитики или ML-фичей?

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

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

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

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

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

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

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

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

Batch проще и дешевле, если допустима задержка и нужны backfills. Streaming нужен, когда свежесть в секунды или минуты меняет продуктовое действие: real-time personalization, fraud/risk, counters, triggers или online features.

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

Batch ETL подходит для регулярных training datasets, offline recommendations, отчетов, агрегатов, периодических feature tables и задач, где freshness в часы или день приемлема. Он проще для отладки, дешевле в эксплуатации и лучше поддерживает backfill.

Streaming оправдан, когда задержка прямо влияет на продукт или риск: свежие клики в ленте, fraud/rate-limit реакции, near-real-time counters, notifications, online features, мониторинг эксперимента или события, которые быстро устаревают. Но streaming добавляет ordering, late events, replay, state management, exactly-once/at-least-once semantics и сложный monitoring.

В production часто нужен hybrid: streaming обновляет свежие фичи и реакции, batch пересчитывает canonical datasets, чинит late data и обучает модели. Выбор надо делать по freshness SLA, correctness requirements, объему, команде и цене эксплуатации.

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

  • Использовать streaming для данных с daily freshness.
  • Забыть про late events и replay.
  • Считать, что streaming отменяет batch backfills.

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

  • Сначала спросите freshness SLA и product impact.
  • Дайте hybrid batch плюс streaming как типичный ответ.
5Вопрос8 мин

Что значит надежный ML/data pipeline

Что для вас надежный pipeline и как проверить, что он действительно надежен?

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

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

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

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

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

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

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

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

Надёжный pipeline корректен, идемпотентен, наблюдаем, восстановим и понятен другим людям. Проверяйте его тестами, data-quality checks, freshness alerts, monitoring, backfill/replay drills, rollback и документацией/runbook.

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

Надежность - это не только зеленый DAG. Pipeline должен стабильно производить корректный результат, безопасно переживать retries, иметь владельца, метрики, alerts, понятный recovery path и документацию. Если его может чинить только один человек, он не надежен организационно.

Проверки нужны на нескольких уровнях: unit tests для transformations, integration tests для зависимостей и schemas, data-quality checks для row counts/nulls/duplicates/distributions/freshness, monitoring для task duration, queue time, failure rate, artifact size и publish status. Для ML добавляются feature schema compatibility, model metric regression, prediction distribution, drift и latency.

Хороший pipeline умеет backfill/replay, не портит данные при повторном запуске, логирует версии входов/выходов и имеет rollback к предыдущему артефакту. Runbook должен объяснять, что делать при падении, stale data и просадке качества.

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

  • Считать, что зеленый Airflow task означает хорошие данные.
  • Не делать data-quality checks.
  • Оставить pipeline без owner, runbook и rollback.

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

  • Перечислите tests, monitoring, alerts, backfill и rollback.
  • Скажите, что green DAG не гарантирует good data.