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

GamerAM: Техническое собеседование

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

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

Как из продуктовой идеи получить ML-задачу

Как выглядит типичная задача от бизнеса или продукта? Что вы уточняете, если приходит верхнеуровневая идея вроде поднять метрику или автоматизировать решение?

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

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

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

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

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

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

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

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

Сначала уточните бизнес-цель, действие в продукте, текущий baseline, пользователей, данные, метрику успеха и цену ошибок. Потом проверьте, нужен ли ML вообще, или задачу дешевле закрыть правилами, аналитикой или продуктовым изменением.

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

Начинать нужно с перевода идеи в измеримое решение: что именно должно измениться в продукте, кто пользователь решения, какое действие будет принимать система и какая метрика должна сдвинуться. Если формулировка размытая, надо отдельно уточнить baseline, ограничения, источники данных, момент принятия решения и то, как будут получаться labels.

Дальше проверяется реализуемость: есть ли сигнал в данных, не возникает ли leakage, можно ли наблюдать target до момента решения, насколько дорого ошибаться и какой no-ML baseline уже есть. Часто правильный первый шаг - не модель, а быстрый data audit или простое правило, чтобы понять масштаб эффекта.

Хороший итог такого обсуждения - короткая спецификация: objective metric, guardrails, label definition, candidate data sources, первый baseline, способ валидации и план rollout/A-B теста. Если данных или product value не хватает, это тоже нормальный результат: лучше остановиться рано, чем строить модель для плохо поставленной задачи.

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

  • Сразу соглашаться строить модель без проверки product value.
  • Не уточнить, какое действие будет менять предсказание.
  • Определять target и labels уже после начала обучения.

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

  • Начните с вопроса: какое решение в продукте должна изменить модель?
  • Назовите no-ML baseline и быстрый data audit.
2Вопрос14 мин

Рекомендательная система с нуля

Нужно спроектировать рекомендательную систему или ML-платформу с нуля. Как выбирать архитектуру, данные, candidate generation и ranking?

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

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

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

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

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

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

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

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

Отталкивайтесь от поверхности продукта и доступных сигналов. Обычно нужен простой baseline, затем двухэтапная схема: candidate generation для recall и reranking/business rules для точности, разнообразия и ограничений.

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

Сначала фиксируется продуктовая поверхность: feed, matching, похожие товары, игры, подборки или другая рекомендация. От нее зависят labels, окно истории, negative sampling, offline metrics и guardrails. Для новой системы полезно начать с простого baseline: популярное, item-to-item, content-based похожесть или ручные правила.

Практичная архитектура обычно двухэтапная. Candidate generation достает сотни или тысячи кандидатов через collaborative signals, content embeddings, item-to-item similarity, graph methods, popularity или user history. Reranker дальше использует более тяжелые признаки, business constraints, diversity, freshness и safety rules.

Самая рискованная часть - данные. Нужны interaction logs, exposure logs, user/item attributes, timestamps и понятное определение positive/negative. Для холодного старта систему можно запускать через контентные признаки, popularity и exploration, а затем улучшать на online feedback.

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

  • Начать с deep model без baseline и data audit.
  • Игнорировать exposure bias и negative sampling.
  • Забыть про latency, freshness и fallback.

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

  • Используйте схему candidate generator плюс reranker.
  • Явно назовите источники данных, labels и online validation.
3Вопрос10 мин

Airflow-пайплайн для обучения и inference

Как устроить Airflow-пайплайн для регулярного переобучения и offline inference модели? Какие компоненты, артефакты и оптимизации нужны?

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

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

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

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

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

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

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

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

Разделите сбор данных, training, validation, inference и publish на отдельные idempotent tasks. CPU-heavy подготовку и GPU-heavy обучение держите в разных контейнерах, версионируйте артефакты и мониторьте freshness, длительность, ресурсы и качество.

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

ML DAG лучше строить как набор явных стадий: extract, validate, feature/build dataset, train, evaluate, offline inference, publish и notify. Подготовка данных обычно CPU/Spark-heavy, а training или embedding inference требуют GPU, поэтому эти стадии не должны держать один и тот же дорогой ресурс.

Каждая стадия должна писать явный артефакт: датасет, feature snapshot, checkpoint, метрики, prediction file, manifest или publish marker. Это делает retries безопаснее и позволяет откатиться к предыдущей версии. Для регулярного переобучения важно не только запустить модель, но и проверить, что свежие данные реально дошли, схемы совместимы, а метрики не просели.

Оптимизация идет через partitioning, chunk-level parallelism, кэширование повторно используемых данных, контроль concurrency и устранение лишних shuffle/IO. Monitoring должен показывать duration по task, queue time, freshness, row counts, artifact sizes, GPU usage, failed publishes и model quality regression.

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

  • Склеить data prep, training и publish в одну большую задачу.
  • Занимать GPU во время чистой подготовки данных.
  • Мониторить только green DAG, но не freshness и качество артефактов.

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

  • Разведите CPU и GPU стадии.
  • Говорите через artifacts, retries, validation и rollback.
4Вопрос10 мин

Как offline-предсказания попадают в production

Если embeddings, scores или recommendation lists считаются offline и лежат в S3/DWH, как безопасно передать эти результаты backend/serving-слою?

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

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

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

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

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

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

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

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

Публикуйте model artifacts и predictions как версионированные артефакты: пишите в новый путь, валидируйте counts/coverage/metrics, затем атомарно переключайте active pointer или manifest. Consumers должны уметь читать только активную версию и откатываться.

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

Offline serving - это не просто “модель посчитала файл”. Нужно договориться о publish contract: куда пишутся предсказания, какая схема, как backend понимает активную версию, как проверяются полнота и свежесть, что происходит при partial failure. Для рекомендаций это может быть DWH/table, Redis/KV, vector index или manifest в object storage.

Безопасный паттерн: записать данные в versioned path, прогнать validation, проверить row counts, coverage пользователей/items, метрики и размер артефакта, а затем переключить маленький pointer или manifest. Online service не должен читать файлы, которые еще пишутся. Для модели отдельно хранят checkpoint, feature schema, preprocessing version, training snapshot и совместимость с consumer code.

После публикации нужны monitoring и rollback: freshness, missing users/items, latency чтения, fallback rate, business KPI и версия активного артефакта. Если новая версия плохая, откат должен быть переключением pointer на предыдущую, а не ручным поиском старых файлов.

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

  • Перезаписывать файлы на месте, пока backend их читает.
  • Не хранить schema/model/version metadata.
  • Не проверять coverage и freshness предсказаний.

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

  • Используйте формулировку “versioned artifact плюс active pointer”.
  • Отделяйте deploy service code от publish model/data artifact.
5Вопрос10 мин

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

Как выбрать FAISS, HNSW-based CPU индекс, Redis, Qdrant или Elasticsearch для поиска ближайших embedding? Какие параметры и метрики смотреть?

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

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

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

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

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

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

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

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

Выбор зависит от latency, recall, масштаба, update pattern, фильтров, memory cost и того, кто будет поддерживать инфраструктуру. Проверять нужно recall@K против exact search, p95 latency, build/update time, memory и downstream candidate coverage.

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

Сначала формулируется access pattern: сколько vectors, какой K, какой QPS, нужны ли filters, как часто обновляются embeddings, нужна ли persistence, GPU или CPU, batch search или online запросы. FAISS силен для high-performance ANN и GPU/batch сценариев. HNSW на CPU часто удобен для low-latency retrieval. Vector DB вроде Qdrant добавляют persistence, filters и operational API. Redis хорош, если уже используется как low-latency store. Elasticsearch полезен, когда vector search надо смешать с text search и фильтрами.

Сравнивать нужно эмпирически. Берем exact nearest-neighbor sample как baseline и меряем recall@K, p95/p99 latency, memory, build time, update cost и degradation при фильтрах. Для рекомендаций отдельно смотрим candidate coverage и downstream ranking/online metrics, потому что ANN recall сам по себе не гарантирует хороший продукт.

Для HNSW важны M, efConstruction и efSearch: они двигают trade-off memory/build time/recall/latency. Distance metric должна соответствовать обучению embedding: cosine для normalized vectors, dot product или L2 - если так задан objective.

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

  • Выбрать библиотеку без benchmark на своих embeddings.
  • Смотреть только recall и забыть p95 latency и memory.
  • Игнорировать filters и частоту обновлений.

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

  • Скажите, как построите exact-search baseline для оценки recall@K.
  • Назовите efSearch как online ручку recall/latency для HNSW.
6Вопрос7 мин

Как Redis обрабатывает команды и сохраняет атомарность

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

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

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

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

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

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

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

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

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

Классический Redis выполняет команды для shard через single-threaded event loop: одна команда меняет in-memory состояние до конца, потом берется следующая. Но multi-command workflow все равно требует Lua, MULTI/EXEC, WATCH или idempotency.

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

Redis хранит данные в памяти и обрабатывает команды последовательно в event loop. Поэтому отдельная команда вроде SET, HSET или INCR не interleave-ится с другой mutating командой и выглядит атомарной для клиента. Это объясняет, почему простые операции не создают race внутри одного shard.

Но из этого не следует, что любой бизнес-процесс автоматически консистентен. Если клиент делает read-modify-write несколькими командами, между ними может вмешаться другой клиент. Для таких случаев нужны atomic commands, MULTI/EXEC, Lua scripts, optimistic locking через WATCH или application-level idempotency.

В распределенном Redis дополнительно появляются replication lag, failover и cluster sharding. Single-threaded execution объясняет локальную атомарность команды, но не решает все вопросы consistency между репликами и shard-ами.

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

  • Говорить, что в Redis вообще не бывает race conditions.
  • Забывать про read-modify-write из нескольких команд.
  • Игнорировать replication и cluster semantics.

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

  • Приведите INCR как пример atomic command.
  • Для нескольких шагов сразу назовите Lua или transactions.
7Вопрос12 мин

Spark: RDD, DataFrame, Dataset и оптимизация job

Чем отличаются RDD, DataFrame и Dataset в Spark? Почему DataFrame обычно быстрее, и как использовать repartition, coalesce, cache и persist?

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

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

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

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

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

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

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

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

RDD - низкоуровневая распределенная коллекция, DataFrame - schema-aware таблица с оптимизацией Catalyst/Tungsten, Dataset добавляет typed API в JVM. Repartition делает shuffle под новое число partitions, coalesce чаще уменьшает partitions дешевле, cache/persist материализуют переиспользуемые данные.

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

RDD дает низкоуровневый контроль над распределенной immutable коллекцией, но Spark хуже понимает структуру вычисления. DataFrame представляет данные как таблицу со schema и column operations, поэтому Catalyst может оптимизировать logical plan: pushdown filters, pruning columns, reorder joins, выбрать физический план и code generation. Dataset в основном важен для Scala/Java как typed API поверх оптимизируемого плана.

DataFrame обычно быстрее не потому, что у него “есть индексы как в базе”, а потому что Spark видит колонки, predicates, aggregations и joins. Это позволяет убирать лишнюю работу и эффективнее исполнять pipeline.

Repartition создает новое распределение partitions и обычно вызывает shuffle; его используют для увеличения parallelism, перераспределения skew или подготовки к join/aggregation. Coalesce чаще уменьшает число partitions с меньшим shuffle, например перед записью. Cache и persist нужны только для reused intermediate datasets; persist позволяет выбрать storage level: memory, disk, serialized.

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

  • Объяснять скорость DataFrame индексами, которых по умолчанию нет.
  • Вызывать repartition без понимания shuffle cost.
  • Cache-ить данные, которые используются один раз.

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

  • Назовите Catalyst/Tungsten при объяснении DataFrame.
  • Сравните repartition и coalesce через shuffle и число partitions.
8Вопрос10 мин

Python GIL, multiprocessing и garbage collection

Что такое GIL в CPython, когда использовать multiprocessing вместо multithreading и как работает garbage collection?

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

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

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

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

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

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

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

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

GIL не дает нескольким threads одновременно исполнять Python bytecode в CPython. Threads полезны для I/O, процессы - для CPU-bound Python. Память в CPython в основном освобождается reference counting, а cyclic GC добирает reference cycles.

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

GIL защищает внутреннее состояние CPython interpreter, поэтому несколько Python threads не исполняют Python bytecode параллельно. Это не значит, что threads бесполезны: они хорошо подходят для network/disk/database waits и native extensions, которые release GIL.

Для CPU-bound pure Python задач лучше использовать multiprocessing, vectorized native libraries, compiled extensions или distributed execution. Multiprocessing запускает отдельные interpreter processes с отдельной памятью, поэтому использует несколько cores, но платит serialization, IPC и memory overhead.

CPython освобождает большинство объектов через reference counting: когда счетчик ссылок падает до нуля, объект можно удалить. Отдельно есть cyclic garbage collector для циклов ссылок, которые reference counting сам не разорвет. В других runtime встречаются tracing collectors: mark-and-sweep, generational GC и похожие схемы.

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

  • Говорить, что Python вообще не умеет concurrency.
  • Использовать threads для тяжелого pure Python CPU workload.
  • Свести garbage collection только к “переменная больше не нужна”.

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

  • Сразу разделите I/O-bound и CPU-bound.
  • Упомяните reference counting и cyclic GC.
9Вопрос10 мин

A/B-тесты рекомендательной модели

Как проводить offline и online эксперименты для рекомендательной модели? Что важно в A/B-тесте: MDE, p-value, выборка, сетевые эффекты и метрики?

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

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

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

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

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

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

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

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

Offline experiment проверяет модель на historical data, но online A/B нужен для продуктового эффекта. До запуска фиксируют primary metric, guardrails, MDE, alpha/power, duration и traffic split; после запуска смотрят статистическую значимость, сегменты и возможные interference/network effects.

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

Offline эксперимент полезен для быстрой фильтрации моделей: метрики ranking/retrieval, regression set, latency и cost. Но он не доказывает продуктовый эффект, потому что historical logs собраны старой policy. Для новой рекомендации нужен online A/B или аккуратный rollout.

Перед A/B фиксируют гипотезу, primary metric, guardrails, MDE, alpha, power, traffic split, duration и правила остановки. MDE нужен, чтобы понять, какой минимальный эффект реально обнаружить при доступном трафике и дисперсии. p-value сам по себе не отвечает на вопрос бизнес-важности эффекта.

Для social/recsys продуктов важны сетевые эффекты и interference: изменение выдачи одному пользователю может менять поведение другого, supply exposure или creator ecosystem. Поэтому нужны guardrails: retention, complaints/reports, diversity/coverage, latency, match quality, long-term metrics и сегментный анализ.

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

  • Запустить A/B без заранее заданного MDE и duration.
  • Смотреть только p-value и не смотреть effect size.
  • Игнорировать network effects в социальном продукте.

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

  • Назовите MDE, alpha/power и guardrails.
  • Для рекомендаций отдельно скажите про exposure, diversity и interference.
10Вопрос10 мин

Online и offline рекомендации под latency constraints

Какие подходы к рекомендациям можно использовать и как выбирать между offline precompute и online inference, если важны latency, RPS и качество?

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

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

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

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

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

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

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

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

Offline подходит для тяжелых моделей, больших feature sets и заранее посчитанных candidate lists. Online нужен для свежего контекста, но требует latency/RPS budget, легких моделей, caching и ограниченного числа кандидатов.

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

В рекомендациях часто есть несколько семейств подходов: popularity/item-to-item, collaborative filtering, content-based embeddings, graph models, two-tower retrieval, transformer/sequential models и reranking. Production-архитектура обычно делит систему на candidate generator и reranker.

Выбор online/offline начинается с freshness и latency. Offline precompute позволяет использовать тяжелые модели, посчитать embeddings/features заранее, сделать сложные reranking heuristics и положить результат в DWH/KV/vector index. Но он хуже реагирует на текущую сессию, новые items и быстрые изменения интересов.

Online inference дает свежий контекст, но ограничен p95 latency, RPS, memory и cost. Поэтому в online часто берут легкие models, small candidate sets, caching, approximate retrieval, feature store и graceful fallback. Хороший ответ на интервью должен явно назвать latency budget и объяснить, какие признаки и модели можно перенести offline.

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

  • Выбрать самую сильную модель без latency budget.
  • Предполагать, что offline precompute всегда достаточно свежий.
  • Не иметь fallback, если online model недоступна.

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

  • Сначала спросите про freshness SLA и p95 latency.
  • Разделите candidate generation, feature precompute и reranking.
11Вопрос8 мин

GraphSAGE, GCN и графовые рекомендации

Как использовать графовые модели в рекомендациях? В чем отличие GCN от GraphSAGE и neighbor sampling подходов?

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

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

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

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

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

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

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

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

В RecSys граф обычно строится из user-item или item-item interactions. GCN агрегирует признаки соседей слоями по графу, а GraphSAGE учит агрегатор и sampling соседей, что удобнее для больших и новых графов.

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

Графовая постановка в рекомендациях появляется естественно: users, items, games, posts или tags становятся nodes, а interactions - edges. Разные типы действий можно хранить как разные edge types или графы. Цель - получить embeddings, которые учитывают не только признаки объекта, но и структуру соседей.

GCN делает message passing: на каждом слое node агрегирует информацию от соседей, поэтому после нескольких слоев representation содержит более широкий graph context. GraphSAGE похож по духу, но делает sampling соседей и учит aggregation function, поэтому лучше масштабируется на большие графы и может работать inductively для новых nodes с признаками.

Для рекомендаций важно сравнивать такие модели с простыми baselines: item-to-item, matrix factorization, two-tower, sequential/transformer recommender. Графовая модель не обязана выиграть, если interactions sparse, граф шумный или latency/complexity слишком высоки.

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

  • Считать graph model автоматически лучше matrix factorization.
  • Не различать transductive и inductive сценарии.
  • Игнорировать edge types, sampling bias и serving cost.

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

  • Объясните user-item graph и message passing простыми словами.
  • Сравните GCN и GraphSAGE через aggregation и neighbor sampling.
12Вопрос6 мин

Receptive field: одна 5x5 свертка или две 3x3

Что такое receptive field в CNN? Какой receptive field у одной свертки 5x5 и у двух последовательных 3x3, и где меньше параметров?

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

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

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

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

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

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

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

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

Receptive field - область входа, влияющая на output activation. При stride 1 две последовательные 3x3 свертки дают effective receptive field 5x5, но параметров меньше: 18C^2 против 25C^2 для одинаковых channels без учета bias.

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

Receptive field показывает, какую область исходного входа “видит” конкретная activation после одного или нескольких слоев. У одной 5x5 convolution при stride 1 receptive field равен 5x5. У одной 3x3 - 3x3.

Если поставить две 3x3 свертки подряд со stride 1 и padding, effective receptive field становится 5x5: каждый output второго слоя зависит от 3x3 activation первого слоя, а каждая из них зависит от своего 3x3 окна во входе. Если stride больше 1 или есть dilation, формула меняется.

По параметрам две 3x3 часто легче одной 5x5 при одинаковом числе input/output channels: 2 * 3 * 3 * C * C = 18C^2 против 25C^2. Плюс между двумя слоями можно поставить nonlinearity, что повышает выразительность.

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

  • Считать receptive field только числом пикселей, забывая spatial shape.
  • Игнорировать stride, dilation и padding.
  • Сравнивать параметры без учета channels.

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

  • Сначала дайте интуицию receptive field, потом посчитайте 5x5 против 3x3+3x3.
  • Уточните assumption: stride 1, одинаковые channels.
13Вопрос10 мин

Cold start в рекомендациях для нового пользователя

Как решать cold start для нового пользователя в ленте рекомендаций? Когда использовать popularity, user-based, item-based и content-based подходы?

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

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

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

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

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

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

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

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

Для нового пользователя можно начать с popular/trending, onboarding interests, демографических или контекстных признаков, похожих пользователей и content-based candidates. Затем быстро обновлять рекомендации по первым просмотрам, лайкам и пропускам.

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

Cold start означает, что у пользователя или item мало истории. Для нового пользователя базовый fallback - popular или trending content, но он быстро усиливает popularity bias. Лучше добавить onboarding: выбранные игры/жанры, язык, регион, platform, explicit dislikes или несколько стартовых вопросов.

User-based подход использует похожих пользователей по meta attributes или ранним событиям. Item/content-based подход использует признаки постов: game tag, текст, image embeddings, creator, language, freshness. Для ленты практично смешивать несколько источников кандидатов и давать exploration, чтобы быстро собрать индивидуальный сигнал.

После первых interactions систему надо быстро адаптировать: session features, recent likes/skips, dwell time, negative feedback. Важно не путать unseen с negative и не переобучать cold-start блок на старых heavy users, у которых уже много истории.

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

  • Показывать только global top и усиливать rich-get-richer эффект.
  • Не собирать первые explicit/implicit signals.
  • Считать отсутствие реакции надежным negative без exposure context.

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

  • Разделите новый user и новый item cold start.
  • Назовите onboarding interests, content features и exploration.
14Вопрос8 мин

Переобучение, синтетика и разбиение данных

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

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

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

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

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

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

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

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

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

Борьба с overfitting: регуляризация, early stopping, контроль емкости модели, больше качественных данных, аугментации, корректный validation split и проверка leakage. Синтетика опасна, если не похожа на real distribution.

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

Классический набор против переобучения: L1/L2 или weight decay, dropout, early stopping, уменьшение capacity, data augmentation, больше real data, аккуратные features и проверка leakage. Для деревьев и бустинга это depth, min samples, learning rate, subsampling и регуляризация листьев; для нейросетей - weight decay, dropout, augmentation, normalization как optimization helper и validation-based early stopping.

Синтетические данные могут помочь, но опасны distribution mismatch: модель учится на артефактах генератора, которых нет в продакшене. Поэтому синтетику надо валидировать отдельно, смешивать осторожно, смотреть метрики на real validation/test и проверять slice quality.

Validation split нужен для оценки качества на unseen data, выбора hyperparameters, thresholds и момента early stopping. Split должен повторять production setting: time-based для временных задач, group/user split для избежания leakage, одинаковая population и label availability.

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

  • Добавить synthetic data без проверки на real validation.
  • Использовать random split там, где нужен time или group split.
  • Путать train quality с production-readiness.

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

  • Разделите методы регуляризации, данные и validation protocol.
  • Обязательно скажите про leakage и production-like split.
15Вопрос8 мин

Когда переписывать ML/inference платформу из-за техдолга

Когда накопившийся технический долг оправдывает переписывание сервиса или ML-платформы с нуля, а когда лучше улучшать систему итеративно?

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

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

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

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

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

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

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

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

Переписывание оправдано, если техдолг измеримо ломает надежность, скорость разработки, стоимость эксплуатации или business-critical SLA сильнее, чем стоит миграция. По умолчанию лучше incremental migration с метриками, ownership и rollback.

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

Решение о rewrite должно начинаться с измеримого ущерба: частые incidents, невозможность деплоить модели, отсутствие monitoring, высокая latency/cost, долгий onboarding, постоянные ручные операции, плохая testability или риск для critical business path. “Код некрасивый” сам по себе не аргумент.

Нужно сравнить стоимость текущего состояния со стоимостью миграции: сколько developer time уходит на поддержку, какие product initiatives блокируются, насколько сложно обеспечить compatibility и кто будет владеть новой платформой. Если система стабильна и редко меняется, точечные улучшения могут быть дешевле.

Безопасный путь - не big bang, а strangler pattern: выделить target interfaces, обернуть старый сервис, перенести один workflow, запустить old/new параллельно, сравнить метрики и держать rollback. Success criteria должны быть заранее: latency, failure rate, deployment frequency, incident time, model rollout time или cost.

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

  • Переписывать стабильную систему только из-за старого кода.
  • Не оценить migration risk и compatibility.
  • Не определить success metrics для нового решения.

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

  • Говорите через reliability, developer time и business risk.
  • Предложите incremental migration вместо big bang по умолчанию.
16Вопрос15 мин

Эмбеддинги пользователей для matching-рекомендаций

Как обучить эмбеддинги пользователей для matching: какую архитектуру, loss и target выбрать, если пользователям рекомендуются другие пользователи?

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

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

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

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

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

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

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

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

Подходит two-tower/siamese или metric learning: encode каждого пользователя, score пары через dot/cosine или learned head. Target лучше строить не только по one-sided likes, а по reciprocal match, диалогу, ответу или другому mutual outcome с учетом exposure bias.

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

Для user-to-user matching естественны two-tower или siamese architectures: одна сеть кодирует каждого пользователя в общий embedding space, а пары оцениваются dot product, cosine similarity или небольшим interaction head. Loss может быть contrastive, triplet, sampled softmax/BPR-style ranking или binary cross-entropy по парам.

Ключевой вопрос - что считать positive. One-sided like удобен, но может оптимизировать показ “самых желанных” профилей и ухудшить reciprocal outcome. Лучше смотреть mutual match, reply, conversation start, meaningful interaction, retention или weighted target из нескольких событий. Негативы должны учитывать exposure: если пользователь не видел профиль, это не настоящий negative.

В serving нужны constraints: география, активность, safety, diversity, freshness, exposure caps и exploration. Для matching особенно важно не только “кого я хочу лайкнуть”, но и вероятность взаимного результата и качество пары для обеих сторон.

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

  • Учиться только на one-sided likes.
  • Считать unseen pairs негативами.
  • Игнорировать attractiveness/popularity bias и exposure.

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

  • Рано скажите, что mutual match лучше one-sided like.
  • Назовите two-tower/siamese и contrastive/ranking losses.
17Вопрос12 мин

Пост не соответствует выбранному game tag

Как детектировать посты, которые не соответствуют выбранному тегу игры: если есть сильная VLM-модель и если ресурсы ограничены?

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

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

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

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

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

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

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

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

При сильных ресурсах можно использовать VLM/CLIP-style проверку image-text-tag consistency. При ограниченных ресурсах - каскад дешевых признаков: текст, OCR, image embeddings, tag metadata, lightweight classifier и human review для спорных случаев.

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

Задача - проверить consistency между заявленным tag и содержимым поста. Если доступны сильные multimodal models, можно подать image, text и tag в VLM или CLIP-like модель и получить score соответствия. Такой слой хорош для bootstrap labels, hard cases и объяснений для модерации, но дорог для каждого поста.

При ограниченных ресурсах нужен каскад. Сначала cheap filters: нормализация текста, язык, TF-IDF/char n-grams, compact BERT embeddings, OCR, lightweight image embeddings, metadata автора и tag history. Затем classifier решает “tag matches content” или отправляет uncertain cases на ручную проверку. Для новых игр и мемов нужен drift monitoring и регулярное обновление словаря/labels.

Важно учитывать цену ошибок. False positive удаляет нормальный контент, false negative портит рекомендации и модерацию. Поэтому threshold выбирают по precision/recall и cost, а не только по accuracy.

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

  • Запустить дорогую VLM на каждый пост без cost/latency оценки.
  • Использовать только текст, когда mismatch виден на картинке.
  • Не держать human review для borderline moderation decisions.

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

  • Дайте две версии: high-resource VLM и low-resource cascade.
  • Отдельно назовите error costs и threshold selection.