Documentation
📚 Вопросы с собеседований
Вопросы-кейсы

Вопросы-Кейсы

Кейс1 Загрузка данных из Wordstat

Исходные данные

  • Есть API Wordstat
  • Используются:
    • S3 — хранилище сырых данных
    • ClickHouse (CH) — хранилище витрин и логов
    • Airflow — оркестрация
  • Список слов/фраз для запросов к API хранится в ClickHouse

Задача

Нужно спроектировать архитектурное решение, которое:

  1. Каждый понедельник запускает загрузку данных из Wordstat
  2. Забирает данные за последние 3 недели
    (скользящее окно загрузки = 21 день)
  3. Загружает данные в витрину без дубликатов
  4. В случае невалидных фраз:
    • не падает пайплайн
    • логирует такие фразы в отдельную таблицу в ClickHouse
  5. Использует ClickHouse как источник слов для запросов в API

Ограничения и требования

  • Загрузка должна быть идемпотентной
  • Кол-во фраз от 100к (продумать решение под большими нагрузками)
  • Повторный запуск DAG не должен приводить к:
    • дубликатам данных
    • повторной обработке валидных уже загруженных данных
  • Логи невалидных фраз должны сохраняться с возможностью анализа

Ожидаемый результат

  • Архитектура пайплайна (Airflow + S3 + ClickHouse)
  • Понятный поток данных
  • Можно написать на псевдо-коде. Главное придуманное решение

Кейс2 Ежедневная сборка витрины из нескольких источников

Исходные данные

  • Источники данных:
    • debit_card
    • credit_card
    • deposit
  • Каждый источник обновляется независимо:
    • в разные моменты времени
    • один из источников может не обновляться до 5 дней
  • Технологический стек:
    • S3 — источник данных
    • PySpark — обработка и трансформации
    • ClickHouse — витрина данных
    • CRON — планировщик (Airflow отсутствует)

Задача

Нужно спроектировать архитектурное решение, которое:

  1. Каждый день собирает витрину из трёх источников
  2. Корректно работает при:
    • отсутствии обновлений в одном или нескольких источниках
  3. Загружает данные из S3 в ClickHouse
  4. Поддерживает инкрементальную загрузку
  5. Не создаёт дубликатов при повторных запусках
  6. Не зависит от Airflow, но использует CRON

Ключевые архитектурные вопросы

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

Ограничения и требования

  • S3 — единственный источник истины
  • Витрина в ClickHouse должна быть:
    • консистентной
    • воспроизводимой
  • Повторный запуск CRON-задачи не должен приводить к:
    • дубликатам
    • потере данных
  • Решение должно масштабироваться при росте объёма данных

Ожидаемый результат

  • Архитектурное описание пайплайна
  • Подход к инкрементальной загрузке без Airflow
  • Механизм хранения и обновления метаданных
  • Стратегия дедупликации в ClickHouse

Ситуационные и смежные практические вопросы (Q/A)

  1. Разбирали ли инциденты?
  • Да.
  • Примеры: потеря данных в ClickHouse, повторная загрузка данных из S3, проверка расхождений в витринах.
  1. Что делать, если витрина строится слишком долго?
  • Проверить изменения в запросе.
  • Проверить новые join.
  • Проанализировать план выполнения.
  • Проверить сортировки и движки.
  1. Что делать, если данные не сходятся?
  • Проверить источник расхождения.
  • Проверить последние изменения.
  • Проверить корректность движка и ключей сортировки.
  • Проверить ClickHouse.
  1. Как проводите Root Cause Analysis?
  • Формализованный процесс в исходном Q/A не описан.
  1. Как взаимодействуете с аналитиками?
  • Созвоны.
  • Обсуждение задач.
  • Технические консультации.
  1. Получаете ТЗ или участвуете в проработке требований?
  • Получение ТЗ.
  • Использование Jira, Kaiten, Confluence, Task Tracker.
  1. Приходилось ли уточнять требования у бизнеса?
  • Чаще коммуникация шла через тимлида.
  • При необходимости уточнялись детали.
  1. Работали ли с CDC?
  • Прямого продакшен-опыта не было, но концепция известна.
  • Изменения читаются из WAL (например, PostgreSQL), часто через Kafka.
  • Подход типичен для стриминговых архитектур вокруг Hadoop-экосистемы.
  1. Как реагируете на задержку данных в pipeline?
  • Проверка причин задержки на уровне источника.
  • Проверка статуса этапов обработки.
  • Контроль корректной догрузки после восстановления.
  1. Как организован мониторинг пайплайнов?
  • Использовались уведомления (Telegram, email), таблицы мониторинга и техническое логирование.