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