Skip to content

Вопросы на собеседовании: Дата-инженер

100 реальных вопросов с образцовыми ответами и пояснениями для уровня Middle.

Смотреть пример резюме: Дата-инженер

Тренировка флешкарточками

Интервальное повторение · Hunter Pass

Вопросы

querieswarehouseoptimization

Такую деградацию я начинаю разбирать с профиля выполнения, а не с переписывания SQL наугад.

  • Сравниваю текущий профиль с последним быстрым запуском и ищу потерю отсечения партиций, размножение строк при соединении, перекос данных или сброс на диск из-за нехватки памяти.
  • Выбираю исправление по результатам профилирования: фильтрую по исходной колонке партиции, предварительно агрегирую большую сторону соединения, меняю порядок соединений или устраняю дубли ключей.
  • Дополнительно сверяю количество строк и последние загрузки, потому что бэкфилл или случайное дублирование данных могут объяснить замедление лучше любого изменения запроса.

Зачем это спрашивают: Чтение профиля запроса до правок SQL отделяет системных оптимизаторов от тех, кто рассыпает хинты и надеется.

partitioningmodelingclustering

Ключи партиционирования и кластеризации я выбираю по реальным шаблонам доступа, а результат проверяю по объёму сканирования.

  • Большую таблицу фактов обычно партиционирую по дате события, потому что она чаще всего участвует в фильтрах и ретенции, позволяет отсекать старые данные и дёшево удалять целые периоды.
  • Для кластеризации беру следующие по частоте колонки фильтров и соединений из истории запросов, например арендатора, клиента или продукт, а не полагаюсь на интуицию.
  • Не допускаю избыточного дробления и кластеризации, поскольку мелкие файлы, метаданные и перекластеризация требуют ресурсов, и сравниваю объём прочитанных данных на типичных запросах до и после изменения.

Зачем это спрашивают: Вывод ключей из истории запросов и валидация метриками сканирования показывают эмпирическую петлю, отличающую инженерию от фольклора.

joins

Если один воркер сильно отстаёт от остальных, я в первую очередь проверяю перекос данных по ключу соединения.

  • Считаю строки по каждому ключу с обеих сторон и ищу горячие значения, например NULL, технического арендатора по умолчанию или одного очень крупного клиента.
  • Обрабатываю NULL и другие ненужные для соединения ключи отдельно, а небольшую таблицу при возможности рассылаю всем воркерам, чтобы убрать перераспределение данных.
  • Для неизбежных горячих ключей применяю салтинг с обеих сторон, чтобы распределить нагрузку, а адаптивное выполнение считаю дополнительной защитой, но не заменой исправлению распределения данных.

Зачем это спрашивают: Называние NULL и китовых ключей обычными виновниками и соления как лекарства показывает живой опыт с перекошенными джойнами, а не учебниковый параллелизм.

schemawarehouse

Выбор всех колонок лишает колоночное хранилище одного из главных преимуществ производительности.

  • Колоночный движок читает только указанные поля, поэтому звёздочка на широкой таблице событий может превратить небольшой запрос в терабайты сканирования и заметные расходы на вычисления.
  • Она также ослабляет контракты данных: нижестоящие модели незаметно подхватывают новые колонки, а переименование может вызвать ошибку далеко от источника.
  • В моделях пайплайна я требую явные списки колонок и проверяю их линтером или правилами dbt, оставляя звёздочку только для временного интерактивного исследования.

Зачем это спрашивают: Связывание отсечения колонок с моделью биллинга и стабильностью контрактов показывает, что кандидат эксплуатирует хранилища, а не только запрашивает их.

ci-cd

Скорее всего, причина в размножении строк при соединении: ключ, который считался уникальным, стал давать связь один ко многим.

  • Дубли в измерении заставляют каждую подходящую строку фактов повторяться, поэтому итоговые суммы могут удвоиться и при этом выглядеть правдоподобно.
  • Я добавляю тесты уникальности ключей измерений и останавливаю сборку dbt до публикации данных, если ожидаемая кардинальность нарушена.
  • Также явно фиксирую гранулярность модели и сравниваю число строк на входе и выходе там, где преобразование должно её сохранять.

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

materialized-viewsci-cd

Выбор зависит от сложности преобразования, требований к обновлению и контролю над данными.

  • Материализованные представления движка подходят для простых и частых агрегаций одной таблицы, если автоматическое инкрементальное обновление поддерживается и позволяет обойтись без оркестрации.
  • Сводные таблицы пайплайна нужны для соединения нескольких таблиц, оконных функций и бизнес-правил, которым требуются тесты, версионирование, отслеживание происхождения и обновление после завершения загрузок.
  • Данные для бизнес-решений я провожу через тестируемый пайплайн, а материализованные представления использую как слой ускорения для понятных частых запросов.

Зачем это спрашивают: Аргументы синхронизации с оркестрацией и тестируемости показывают выбор на операционных основаниях, а не по чеклистам фич.

warehouse

Сначала я связываю рост расходов с конкретными нагрузками, а не ввожу общие ограничения вслепую.

  • Группирую историю запросов по пользователю, сервисному аккаунту и отпечатку запроса, чтобы найти частые полные сканы, слишком частые пересборки dbt, забытые среды разработки и случайные перекрёстные соединения.
  • Затем настраиваю автоматическую остановку, размеры вычислительных кластеров под разные нагрузки, выбор между оплатой по запросу и зарезервированными слотами BigQuery, а также лимиты сканирования с оповещениями.
  • Помечаю запросы по пайплайну и команде, чтобы у постоянных расходов были владельцы, а новые отклонения обнаруживались быстро.

Зачем это спрашивают: Анализ запросов на уровне отпечатков плюс атрибуция стоимости владельцам показывают платформенную стоимость как эксплуатируемую систему, а не финансовый сюрприз.

joins

Полноту фактов я сохраняю с помощью специальных строк измерения для отсутствующих ссылок.

  • NULL в ключе измерения выпадает при внутреннем соединении, поэтому метрики в разрезе могут потерять строки и перестать сходиться с итогами источника.
  • В каждом измерении создаю зарезервированные суррогатные строки для состояний «неизвестно» и «не применимо», а загрузка направляет в них NULL и несопоставленные натуральные ключи.
  • Это сохраняет полноту соединений и позволяет измерять долю проблемных записей, а также различать отсутствие данных в источнике и ошибку сопоставления, поскольку исправляются они по-разному.

Зачем это спрашивают: Паттерн unknown member с мониторингом его объёма и есть ответ хранилищного ремесла, переживающий аудиты реконсиляции.

warehousequeriesci-cd

Дубли я устраняю один раз в staging-слое, как можно ближе к загрузке.

  • Вместе с владельцем источника определяю признаки дубля, затем использую row_number по бизнес-ключу с сортировкой по времени источника и стабильному дополнительному признаку, чтобы оставить самую свежую запись, а в поддерживающих движках применяю QUALIFY для ясной реализации.
  • Окно обработки покрывает реальный срок повторной доставки источника, потому что поздний дубль может снова испортить уже очищенную партицию.
  • Для каждой загрузки записываю долю дублей и оповещаю о скачках, которые часто раньше других признаков показывают массовые повторы запросов в источнике.

Зачем это спрашивают: Оконная дедупликация с горизонтом передоставки и мониторингом доли дублей показывает понятое временное измерение проблемы, а не только SQL-идиому.

warehouseetl

Суррогатные ключи отделяют идентичность сущности в хранилище от нестабильных идентификаторов источников и поддерживают несколько исторических версий.

  • Натуральные ключи могут переиспользоваться, различаться между системами и не способны однозначно различить несколько строк SCD2 одной бизнес-сущности.
  • В современном ELT-пайплайне я часто использую детерминированный хеш системы-источника, исходного идентификатора и, для строк SCD2, даты начала действия версии: такой ключ стабилен при параллельных повторных запусках и не требует обращения к последовательности.
  • Документирую состав ключа и выбираю надёжный хеш, поскольку такие ключи сложнее проверять вручную, а вероятность коллизии остаётся ненулевой.

Зачем это спрашивают: Выбор детерминированных хешей ради идемпотентных параллельных загрузок с проговорёнными трейдоффами отражает текущую ELT-практику, а не легаси-привычку к последовательностям.

transactionssnapshot

Тип таблицы фактов я выбираю по тому, описывает ли задача события, состояние через интервалы или прохождение этапов процесса.

  • Транзакционные факты хранят одну строку на событие на самом детальном полезном уровне, например заказ, платёж или клик, и служат вариантом по умолчанию, поскольку из них часто можно вывести остальные представления.
  • Периодические снимки фиксируют состояние через равные интервалы, например ежедневные остатки или баланс на конец месяца, когда прошлые уровни дорого или невозможно восстановить из событий.
  • Накопительные снимки обновляют одну строку процесса по мере прохождения этапов заказа, оплаты, отгрузки и доставки, упрощая анализ длительности, но создавая неудобную нагрузку для хранилищ, рассчитанных на добавление строк.

Зачем это спрашивают: Знание о существовании накопительных снапшотов и о том, почему их паттерн обновлений конфликтует с современными хранилищами, сигналит настоящую глубину размерного моделирования.

joinsqueries

Историю я сохраняю, но отделяю дорогой доступ к ней от обычных запросов текущего состояния.

  • Определяю атрибуты, которые создают большинство версий, и выношу часто меняющийся рейтинг или статус в мини-измерение либо факт, если ему не место в медленно меняющемся ядре.
  • Поддерживаю представление или таблицу только с активными строками, чтобы повседневные запросы соединялись с одной записью на клиента, а полная история оставалась доступной отдельно.
  • Для тяжёлых витрин на определённый момент времени материализую нужную версию вместо повторного соединения по диапазонам действия в каждом запросе.

Зачем это спрашивают: Диагностика драйвера чурна и вынос волатильных атрибутов вместо смирения с раздуванием версий показывают размерное моделирование под ограничениями производительности.

schemawarehouse

Часто используемые и стабильные по смыслу поля JSON я выношу в типизированные колонки, а изменчивый длинный хвост оставляю полуструктурированным.

  • Поля из фильтров, соединений и метрик становятся колонками staging-слоя, чтобы движок использовал статистику и отсечение, а ошибки типов обнаруживались заранее.
  • Редкие или действительно вариативные атрибуты остаются в JSON, поскольку их разворачивание создало бы сотни разреженных колонок и постоянные миграции схемы.
  • Поддерживаю контракт извлечения со списком вынесенных путей, типов и правил NULL, а витрины используют готовые колонки вместо многократного разбора исходного JSON.

Зачем это спрашивают: Разверни запрашиваемое, оставь хвост с контрактом промоушена показывает полуструктурированные данные как жизненный цикл, а не разовое схемное решение.

monitoringiacsoft-skills

Правила часовых поясов и календаря я фиксирую в модели данных, а не повторяю в запросах отчётов.

  • Временные метки храню в UTC, а бизнес-дату вычисляю по заданному отчётному часовому поясу при загрузке или в staging-слое, чтобы избежать разных трактовок границы суток.
  • Поддерживаемое измерение дат содержит финансовые периоды, границы недель и праздники, поэтому моделям не приходится дублировать хрупкую календарную арифметику.
  • Заранее определяю обработку дней перевода часов длиной 23 и 25 часов, отклоняю или исправляю локальное время без смещения при загрузке и моделирую отдельную локальную бизнес-дату для каждого рынка, если она различается.

Зачем это спрашивают: Материализация бизнес-даты один раз и централизация календарной логики в измерении дат дают инженерный ответ на класс багов, которые обычно находят аналитики.

schemanormalizationmodeling

Звёздную схему я строю вокруг бизнес-процессов и явно заданной гранулярности, а не прямого переноса всех исходных таблиц.

  • Выделяю измеримые события, например позицию заказа, платёж или закрытый тикет, и явно задаю гранулярность каждой таблицы фактов.
  • Описательный контекст собираю в денормализованные измерения клиента, продукта и даты, сокращая глубокие соединения нормализованной OLTP-схемы.
  • Факты ссылаются на измерения суррогатными ключами и содержат аддитивные либо чётко описанные полуаддитивные показатели.
  • Сначала выпускаю один бизнес-процесс целиком, а затем расширяю общие согласованные измерения по мере добавления новых процессов.

Зачем это спрашивают: Ориентация от процессов с грануляцией впереди и осознанная денормализация измерений показывают методологию Кимбалла применённой, а не упомянутой.

Согласованные измерения задают витринам общую идентичность и единые определения ключевых сущностей.

  • Факты продаж и поддержки используют одинаковые ключи клиента и даты, поэтому межвитринные показатели описывают одну и ту же сущность и период.
  • Отдельные копии команд быстро расходятся в правилах дедупликации, свежести и определениях атрибутов, что приводит к разным итогам и ненадёжным соединениям между областями.
  • Я отношусь к основным измерениям как к версионируемым продуктам с владельцем и единым путём сборки, а витрины ссылаются на них вместо копирования логики.

Зачем это спрашивают: Рамка конформных измерений как владеемых продуктов, потребляемых по ссылке, с названным межвитринным режимом отказа показывает хранилищное управление на рабочем уровне.

schemamodeling

Такую связь я моделирую мостовой таблицей заказов и промоакций с явными правилами распределения показателей.

  • Мост содержит по одной строке на каждую промоакцию, применённую к заказу, а при необходимости ещё и коэффициент для распределения скидки или другого показателя.
  • Соединение фактов через мост размножает строки заказа, поэтому невзвешенная выручка по промоакциям завысит итог, если показатель не обозначен как неаддитивный между акциями.
  • Я документирую это размножение и предоставляю заранее распределённую витрину для типового анализа, чтобы пользователи не повторяли рискованное соединение самостоятельно.

Зачем это спрашивают: Знание, что мостовые таблицы вносят намеренное размножение, и поставка факторов аллокации плюс готовых витрин показывают многие-ко-многим, обработанные глубже диаграммы.

ci-cd

Слои разделяют техническую обработку источника, общую бизнес-семантику и представление для конкретного потребителя.

  • Staging-слой стандартизирует имена и типы и устраняет исходные дубли, обычно в отдельной модели для каждой таблицы источника.
  • Core-слой один раз применяет бизнес-правила и формирует согласованные сущности и факты, а витрины подготавливают проверенный результат под конкретные сценарии.
  • Такая структура локализует изменения схемы источника, не даёт копировать бизнес-логику по дашбордам и позволяет отлаживать небольшие понятные шаги вместо одного огромного преобразования.

Зачем это спрашивают: Назначение каждому слою единственной роли поглощения изменений показывает архитектуру, понятую как экономика сопровождения, а не конвенция.

schemamodeling

Широкая таблица выигрывает как готовый слой выдачи для конкретного потребителя, но не как основная модель данных.

  • При чёткой гранулярности она даёт пользователям BI один заранее соединённый набор, защищает от размножения строк и хорошо работает в колоночных движках.
  • В роли источника истины она дорого пересобирается, фиксирует историческую семантику на момент сборки и провоцирует появление расходящихся копий под немного разные потребности команд.
  • Общую семантику я храню в ядре со звёздной схемой, а из него создаю заменяемые широкие таблицы для конкретных инструментов или команд.

Зачем это спрашивают: Широкие таблицы как генерируемый serving-слой поверх смоделированного ядра снимают ложную дихотомию и показывают слоёное мышление о том, где живёт семантика.

warehousesystem-design

Обработку удалений нужно включать в контракт загрузки, поскольку инкремент по времени не замечает исчезнувшие строки.

  • Предпочтителен CDC на основе журнала транзакций: он передаёт события удаления, после чего хранилище помечает записи удалёнными с сохранением аудита или физически удаляет их.
  • Если CDC нет, я периодически выгружаю все первичные ключи и ищу отсутствующие через антисоединение либо договариваюсь о признаке мягкого удаления в источнике, принимая стоимость и ограниченную расписанием свежесть.
  • Отдельно фиксирую, что одного updated_at недостаточно, потому что у удалённой записи не появляется новая временная метка для попадания в дельту.

Зачем это спрашивают: Называние ловушки удалённые строки невидимы инкременту и ранжирование реалистичных вариантов показывают дизайн выгрузки, информированный реальным поведением источника.

Закрытые вопросы

  • 21

    Заказы приходят в пяти валютах, а финансам нужна консистентная отчётность по выручке. Как вы моделируете деньги в хранилище?

    warehouse
  • 22

    Как вы решаете, где живёт трансформация: в SQL-слое хранилища или в BI-инструменте?

    sqlwarehouse
  • 23

    Как вы выбираете между view, table, incremental и ephemeral материализациями для dbt-модели?

    dbt
  • 24

    Проведите меня через работу инкрементальной dbt-модели и выбор между merge, delete+insert и insert_overwrite.

    dbt
  • 25

    Как dbt-снапшоты реализуют SCD2 и какие операционные подвохи вы с ними ловили?

    snapshotdbt
  • 26

    Помимо unique и not_null, как выглядит серьёзная система тестов в dbt?

    dbt
  • 27

    Почему dbt настаивает на ref() вместо захардкоженных имён таблиц и что это покупает проекту?

    dbt
  • 28

    Ваш dbt-проект собирается 50 минут, и PR пересобирают всё. Как сделать CI быстрым и всё ещё достойным доверия?

    ci-cddbt
  • 29

    Какие конвенции сохраняют dbt-проект навигируемым, когда он перерастает несколько сотен моделей?

    dbt
  • 30

    Когда Jinja-макросы в dbt помогают, а когда делают проект хуже?

    dbt
  • 31

    Как dbt sources и проверки freshness вписываются в надёжность пайплайна?

    dbtci-cd
  • 32

    Вы поменяли логику большой инкрементальной модели, и история разъехалась с новыми прогонами. Как бэкфиллить безопасно и подъёмно по цене?

    backfill
  • 33

    Что делает Airflow DAG идемпотентным и какие частые паттерны тихо ломают это свойство?

    airflowidempotency
  • 34

    Объясните механику бэкфилла в Airflow: catchup, depends_on_past и что вы настраиваете перед репроцессингом трёх месяцев истории.

    configairflowbackfill
  • 35

    Сенсоры, ждущие внешние данные, начали морить голодом ваших Airflow-воркеров. Что происходит и каковы фиксы?

    airflow
  • 36

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

    configalerting
  • 37

    Почему XCom неверный инструмент для передачи датасетов между задачами Airflow и каков правильный паттерн?

    airflow
  • 38

    Коллега предлагает генерировать DAG-и динамически из таблицы конфигураций в базе. Что вы взвешиваете перед согласием?

    databaseconfig
  • 39

    Дневной пайплайн завершился зелёным, но доставленные данные оказались трёхдневной давности. Как ловить этот класс тихих отказов?

    ci-cd
  • 40

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

  • 41

    Пайплайн B должен бежать после готовности данных пайплайна A, но они живут в разных DAG. Каковы варианты и их трейдоффы?

    ci-cd
  • 42

    Вам достаются пять cron-скриптов ночных загрузок. Что меняется при миграции в оркестратор, кроме расписания?

    jobsorchestrationownership
  • 43

    Объясните, как топики, партиции и консьюмер-группы дают Kafka её модель параллелизма.

    partitioningkafka
  • 44

    Как вы выбираете ключ партиционирования для Kafka-топика и что идёт не так при плохом выборе?

    partitioningkafka
  • 45

    Лаг консьюмера на критическом топике устойчиво растёт. Проведите меня через диагностику и лекарства.

  • 46

    At-least-once против exactly-once в Kafka-пайплайнах: на что вы реально полагаетесь на практике?

    kafkaci-cd
  • 47

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

  • 48

    Что schema registry добавляет к Kafka-установке и как режимы совместимости формируют эволюцию продюсеров и консьюмеров?

    schemakafkaregistries
  • 49

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

    streamingbatch
  • 50

    События приходят не по порядку и с опозданием в вашем стриминговом пайплайне. Какие концепции и механизмы обрабатывают это корректно?

    streamingci-cd
  • 51

    Что делают ретенция и компакция лога в Kafka и когда компактированный топик становится правильным инструментом?

    retentionkafka
  • 52

    Ваша консьюмер-группа ребалансится каждые несколько минут, и пропускная способность рушится. Что вызывает ребаланс-чурн и как его остановить?

    churnthroughput
  • 53

    Объясните ленивое вычисление в Spark: что реально происходит между чтением датафрейма и вызовом действия?

    pandas
  • 54

    Узкие против широких трансформаций в Spark: почему шаффлы доминируют в стоимости джобы и как вы их минимизируете?

  • 55

    repartition против coalesce в Spark, и как вы рассуждаете о правильном числе партиций для джобы?

    partitioningqueries
  • 56

    Одна Spark-задача работает в двадцать раз дольше собратьев, и стадия не заканчивается. Как вы диагностируете и чините отстающего?

  • 57

    Ваши Spark-экзекуторы постоянно умирают с ошибками нехватки памяти. Каковы обычные причины и ваш порядок расследования?

    memory
  • 58

    Когда бродкаст-джойн помогает в Spark и что ломается, когда бродкаст идёт не так?

    joins
  • 59

    Дата-лейк накопил миллионы мелких файлов, и каждый запрос замедлился. Откуда берутся мелкие файлы и как их чинить?

    queries
  • 60

    Почему Parquet стал дефолтным форматом аналитических данных и что row groups и predicate pushdown реально для вас делают?

  • 61

    Что табличные форматы вроде Delta Lake и Iceberg добавляют поверх сырого Parquet в объектном хранилище?

  • 62

    Как для конкретной трансформационной джобы вы выбираете между pandas на одной машине, Spark и спуском SQL в хранилище?

    sqlwarehousepandas
  • 63

    В стеке с дата-лейком и хранилищем что принадлежит каждому и где граница размывается?

    warehouse
  • 64

    Log-based CDC против query-based выгрузки из операционной базы: как трейдоффы играют на самом деле?

    databasequeries
  • 65

    Вы потребляете CDC-поток строчных изменений в хранилище. Как корректно применить его в готовые к запросам таблицы?

    querieswarehouse
  • 66

    Вы инкрементально выгружаете из пагинированного REST API. Какое состояние вы храните и как делаете выгрузку перезапускаемой?

    rest
  • 67

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

    pipelines
  • 68

    Система-источник добавляет колонки, меняет типы и переименовывает поля без предупреждения. Как сделать инжест устойчивым к дрейфу схемы?

    schemasystem-designiac
  • 69

    Как вы эволюционируете схему интенсивно потребляемой таблицы хранилища, не ломая дашборды и нижестоящие модели?

    schemawarehouse
  • 70

    Вам нужно бэкфиллить три года истории через пайплайн, построенный под дневные инкременты. Как выполнить это, не разрушив прод?

    backfillci-cd
  • 71

    Спроектируйте шаг загрузки так, чтобы дважды приземлившийся файл или ретрай джобы никогда не дублировали данные в хранилище.

    designresiliencewarehouse
  • 72

    Ночной фид доставляет CSV-файлы от партнёра. Какая оборонительная инженерия входит в инжест файлов, которые вы не контролируете?

  • 73

    Где вы размещаете проверки качества данных вдоль пайплайна и почему размещение важно не меньше самих проверок?

    qualityci-cd
  • 74

    Great Expectations против dbt-тестов: как вы решаете, что бежит где, и что каждый делает лучше?

    dbtdata-qualitytesting
  • 75

    Количества строк прошли, уникальность прошла, а данные оказались неверными: изменение фильтра тихо выбросило сегмент клиентов. Какой мониторинг ловит этот класс проблем?

    monitoring
  • 76

    Проверка качества падает посреди пайплайна в 4 утра. Пайплайн должен остановиться, продолжить с предупреждениями или карантинить плохие строки? Как вы решаете?

    ci-cd
  • 77

    Как вы тестируете сам код трансформаций пайплайна, а не только производимые им данные?

    ci-cd
  • 78

    Что такое контракт данных с апстрим-производителем и что входит в него помимо схемы?

    schemadata-contracts
  • 79

    Почему поколоночная lineage важна операционно и когда она вас спасала или спасла бы?

    schemalineage
  • 80

    Директор сообщает, что вчерашняя выручка на дашборде руководства выглядит неверно. Проведите меня через ваш первый час как дежурного дата-инженера.

  • 81

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

    warehousesystem-designci-cd
  • 82

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

    monitoringci-cd
  • 83

    Помимо безопасного перегона одного дня, как вы проектируете целый многошаговый пайплайн, чтобы оркестратор мог слепо ретраить любой шаг?

    designorchestrationci-cd
  • 84

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

    aggregationdesignci-cd
  • 85

    События регулярно опаздывают до пяти дней, но бизнес читает вчерашние числа каждое утро. Как вы инженерно строите пайплайн вокруг этого?

    ci-cd
  • 86

    Факты, загруженные раньше своих измерений, дают осиротевшие ключи. Как вы оркеструете и проектируете вокруг этой зависимости?

    designorchestrationdependencies
  • 87

    Аналитик случайно удалил продовую таблицу витрины. Что определяет, будет ли это пятиминутным фиксом или катастрофой, и как вы готовитесь?

  • 88

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

    ci-cd
  • 89

    Аналитику нужна новая колонка в ядровой витрине к завтрашнему заседанию совета, а правильное моделирование займёт неделю. Что вы делаете?

    schema
  • 90

    Половина мощности вашего спринта уходит на тушение хрупких легаси-пайплайнов, а продукт продолжает просить новые датасеты. Как вы аргументируете и исполняете стабилизацию?

    agilecapacityci-cd
  • 91

    Вы дежурите, и критическая ночная загрузка падает в 6 утра, за два часа до того, как руководители читают свои дашборды. Проведите меня через ваши действия.

  • 92

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

    communication
  • 93

    Команда-источник продолжает ломать ваши пайплайны необъявленными изменениями схем и считает это вашей проблемой. Как вы меняете динамику?

    schemaci-cd
  • 94

    Вы обнаруживаете, что баг трансформации, выкаченный вами три недели назад, тихо занижал ключевую метрику. Что вы делаете?

    monitoring
  • 95

    Продукт спрашивает, сколько займёт постройка нового инжест-пайплайна, а вы ещё не видели источник. Как вы оцениваете честно?

    estimationci-cd
  • 96

    Какую документацию вы ведёте по своим пайплайнам и как не даёте ей гнить?

    documentationci-cd
  • 97

    Вы хотите, чтобы команда приняла lakehouse-формат вроде Iceberg, но текущая схема работает. Как вы оцениваете и вводите его ответственно?

    decision-making
  • 98

    Аналитик настаивает, что логика метрик должна жить в его BI-инструменте, где он итерирует быстро, а вы хотите её в хранилище. Как разрешить это продуктивно?

    warehousemonitoringiteration
  • 99

    Разработчик просит копию продовой таблицы клиентов для тестирования своей фичи. Каков ваш ответ?

  • 100

    Вам достаётся пятилетняя система пайплайнов без документации, с тремя оркестраторами и давно ушедшим автором. Как выглядят ваши первые три недели?

    documentationownershipsystem-design