Вопросы на собеседовании: Дата-инженер
100 реальных вопросов с образцовыми ответами и пояснениями для уровня Middle.
Смотреть пример резюме: Дата-инженер →Тренировка флешкарточками
Интервальное повторение · Hunter Pass
Вопросы
Такую деградацию я начинаю разбирать с профиля выполнения, а не с переписывания SQL наугад.
- Сравниваю текущий профиль с последним быстрым запуском и ищу потерю отсечения партиций, размножение строк при соединении, перекос данных или сброс на диск из-за нехватки памяти.
- Выбираю исправление по результатам профилирования: фильтрую по исходной колонке партиции, предварительно агрегирую большую сторону соединения, меняю порядок соединений или устраняю дубли ключей.
- Дополнительно сверяю количество строк и последние загрузки, потому что бэкфилл или случайное дублирование данных могут объяснить замедление лучше любого изменения запроса.
Зачем это спрашивают: Чтение профиля запроса до правок SQL отделяет системных оптимизаторов от тех, кто рассыпает хинты и надеется.
Ключи партиционирования и кластеризации я выбираю по реальным шаблонам доступа, а результат проверяю по объёму сканирования.
- Большую таблицу фактов обычно партиционирую по дате события, потому что она чаще всего участвует в фильтрах и ретенции, позволяет отсекать старые данные и дёшево удалять целые периоды.
- Для кластеризации беру следующие по частоте колонки фильтров и соединений из истории запросов, например арендатора, клиента или продукт, а не полагаюсь на интуицию.
- Не допускаю избыточного дробления и кластеризации, поскольку мелкие файлы, метаданные и перекластеризация требуют ресурсов, и сравниваю объём прочитанных данных на типичных запросах до и после изменения.
Зачем это спрашивают: Вывод ключей из истории запросов и валидация метриками сканирования показывают эмпирическую петлю, отличающую инженерию от фольклора.
Если один воркер сильно отстаёт от остальных, я в первую очередь проверяю перекос данных по ключу соединения.
- Считаю строки по каждому ключу с обеих сторон и ищу горячие значения, например NULL, технического арендатора по умолчанию или одного очень крупного клиента.
- Обрабатываю NULL и другие ненужные для соединения ключи отдельно, а небольшую таблицу при возможности рассылаю всем воркерам, чтобы убрать перераспределение данных.
- Для неизбежных горячих ключей применяю салтинг с обеих сторон, чтобы распределить нагрузку, а адаптивное выполнение считаю дополнительной защитой, но не заменой исправлению распределения данных.
Зачем это спрашивают: Называние NULL и китовых ключей обычными виновниками и соления как лекарства показывает живой опыт с перекошенными джойнами, а не учебниковый параллелизм.
Выбор всех колонок лишает колоночное хранилище одного из главных преимуществ производительности.
- Колоночный движок читает только указанные поля, поэтому звёздочка на широкой таблице событий может превратить небольшой запрос в терабайты сканирования и заметные расходы на вычисления.
- Она также ослабляет контракты данных: нижестоящие модели незаметно подхватывают новые колонки, а переименование может вызвать ошибку далеко от источника.
- В моделях пайплайна я требую явные списки колонок и проверяю их линтером или правилами dbt, оставляя звёздочку только для временного интерактивного исследования.
Зачем это спрашивают: Связывание отсечения колонок с моделью биллинга и стабильностью контрактов показывает, что кандидат эксплуатирует хранилища, а не только запрашивает их.
Скорее всего, причина в размножении строк при соединении: ключ, который считался уникальным, стал давать связь один ко многим.
- Дубли в измерении заставляют каждую подходящую строку фактов повторяться, поэтому итоговые суммы могут удвоиться и при этом выглядеть правдоподобно.
- Я добавляю тесты уникальности ключей измерений и останавливаю сборку dbt до публикации данных, если ожидаемая кардинальность нарушена.
- Также явно фиксирую гранулярность модели и сравниваю число строк на входе и выходе там, где преобразование должно её сохранять.
Зачем это спрашивают: Автоматические проверки уникальности и сохранения грануляции как постоянная оборона, а не бдительность после инцидента, отмечают зрелость продовых пайплайнов.
Выбор зависит от сложности преобразования, требований к обновлению и контролю над данными.
- Материализованные представления движка подходят для простых и частых агрегаций одной таблицы, если автоматическое инкрементальное обновление поддерживается и позволяет обойтись без оркестрации.
- Сводные таблицы пайплайна нужны для соединения нескольких таблиц, оконных функций и бизнес-правил, которым требуются тесты, версионирование, отслеживание происхождения и обновление после завершения загрузок.
- Данные для бизнес-решений я провожу через тестируемый пайплайн, а материализованные представления использую как слой ускорения для понятных частых запросов.
Зачем это спрашивают: Аргументы синхронизации с оркестрацией и тестируемости показывают выбор на операционных основаниях, а не по чеклистам фич.
Сначала я связываю рост расходов с конкретными нагрузками, а не ввожу общие ограничения вслепую.
- Группирую историю запросов по пользователю, сервисному аккаунту и отпечатку запроса, чтобы найти частые полные сканы, слишком частые пересборки dbt, забытые среды разработки и случайные перекрёстные соединения.
- Затем настраиваю автоматическую остановку, размеры вычислительных кластеров под разные нагрузки, выбор между оплатой по запросу и зарезервированными слотами BigQuery, а также лимиты сканирования с оповещениями.
- Помечаю запросы по пайплайну и команде, чтобы у постоянных расходов были владельцы, а новые отклонения обнаруживались быстро.
Зачем это спрашивают: Анализ запросов на уровне отпечатков плюс атрибуция стоимости владельцам показывают платформенную стоимость как эксплуатируемую систему, а не финансовый сюрприз.
Полноту фактов я сохраняю с помощью специальных строк измерения для отсутствующих ссылок.
- NULL в ключе измерения выпадает при внутреннем соединении, поэтому метрики в разрезе могут потерять строки и перестать сходиться с итогами источника.
- В каждом измерении создаю зарезервированные суррогатные строки для состояний «неизвестно» и «не применимо», а загрузка направляет в них NULL и несопоставленные натуральные ключи.
- Это сохраняет полноту соединений и позволяет измерять долю проблемных записей, а также различать отсутствие данных в источнике и ошибку сопоставления, поскольку исправляются они по-разному.
Зачем это спрашивают: Паттерн unknown member с мониторингом его объёма и есть ответ хранилищного ремесла, переживающий аудиты реконсиляции.
Дубли я устраняю один раз в staging-слое, как можно ближе к загрузке.
- Вместе с владельцем источника определяю признаки дубля, затем использую row_number по бизнес-ключу с сортировкой по времени источника и стабильному дополнительному признаку, чтобы оставить самую свежую запись, а в поддерживающих движках применяю QUALIFY для ясной реализации.
- Окно обработки покрывает реальный срок повторной доставки источника, потому что поздний дубль может снова испортить уже очищенную партицию.
- Для каждой загрузки записываю долю дублей и оповещаю о скачках, которые часто раньше других признаков показывают массовые повторы запросов в источнике.
Зачем это спрашивают: Оконная дедупликация с горизонтом передоставки и мониторингом доли дублей показывает понятое временное измерение проблемы, а не только SQL-идиому.
Суррогатные ключи отделяют идентичность сущности в хранилище от нестабильных идентификаторов источников и поддерживают несколько исторических версий.
- Натуральные ключи могут переиспользоваться, различаться между системами и не способны однозначно различить несколько строк SCD2 одной бизнес-сущности.
- В современном ELT-пайплайне я часто использую детерминированный хеш системы-источника, исходного идентификатора и, для строк SCD2, даты начала действия версии: такой ключ стабилен при параллельных повторных запусках и не требует обращения к последовательности.
- Документирую состав ключа и выбираю надёжный хеш, поскольку такие ключи сложнее проверять вручную, а вероятность коллизии остаётся ненулевой.
Зачем это спрашивают: Выбор детерминированных хешей ради идемпотентных параллельных загрузок с проговорёнными трейдоффами отражает текущую ELT-практику, а не легаси-привычку к последовательностям.
Тип таблицы фактов я выбираю по тому, описывает ли задача события, состояние через интервалы или прохождение этапов процесса.
- Транзакционные факты хранят одну строку на событие на самом детальном полезном уровне, например заказ, платёж или клик, и служат вариантом по умолчанию, поскольку из них часто можно вывести остальные представления.
- Периодические снимки фиксируют состояние через равные интервалы, например ежедневные остатки или баланс на конец месяца, когда прошлые уровни дорого или невозможно восстановить из событий.
- Накопительные снимки обновляют одну строку процесса по мере прохождения этапов заказа, оплаты, отгрузки и доставки, упрощая анализ длительности, но создавая неудобную нагрузку для хранилищ, рассчитанных на добавление строк.
Зачем это спрашивают: Знание о существовании накопительных снапшотов и о том, почему их паттерн обновлений конфликтует с современными хранилищами, сигналит настоящую глубину размерного моделирования.
Историю я сохраняю, но отделяю дорогой доступ к ней от обычных запросов текущего состояния.
- Определяю атрибуты, которые создают большинство версий, и выношу часто меняющийся рейтинг или статус в мини-измерение либо факт, если ему не место в медленно меняющемся ядре.
- Поддерживаю представление или таблицу только с активными строками, чтобы повседневные запросы соединялись с одной записью на клиента, а полная история оставалась доступной отдельно.
- Для тяжёлых витрин на определённый момент времени материализую нужную версию вместо повторного соединения по диапазонам действия в каждом запросе.
Зачем это спрашивают: Диагностика драйвера чурна и вынос волатильных атрибутов вместо смирения с раздуванием версий показывают размерное моделирование под ограничениями производительности.
Часто используемые и стабильные по смыслу поля JSON я выношу в типизированные колонки, а изменчивый длинный хвост оставляю полуструктурированным.
- Поля из фильтров, соединений и метрик становятся колонками staging-слоя, чтобы движок использовал статистику и отсечение, а ошибки типов обнаруживались заранее.
- Редкие или действительно вариативные атрибуты остаются в JSON, поскольку их разворачивание создало бы сотни разреженных колонок и постоянные миграции схемы.
- Поддерживаю контракт извлечения со списком вынесенных путей, типов и правил NULL, а витрины используют готовые колонки вместо многократного разбора исходного JSON.
Зачем это спрашивают: Разверни запрашиваемое, оставь хвост с контрактом промоушена показывает полуструктурированные данные как жизненный цикл, а не разовое схемное решение.
Правила часовых поясов и календаря я фиксирую в модели данных, а не повторяю в запросах отчётов.
- Временные метки храню в UTC, а бизнес-дату вычисляю по заданному отчётному часовому поясу при загрузке или в staging-слое, чтобы избежать разных трактовок границы суток.
- Поддерживаемое измерение дат содержит финансовые периоды, границы недель и праздники, поэтому моделям не приходится дублировать хрупкую календарную арифметику.
- Заранее определяю обработку дней перевода часов длиной 23 и 25 часов, отклоняю или исправляю локальное время без смещения при загрузке и моделирую отдельную локальную бизнес-дату для каждого рынка, если она различается.
Зачем это спрашивают: Материализация бизнес-даты один раз и централизация календарной логики в измерении дат дают инженерный ответ на класс багов, которые обычно находят аналитики.
Звёздную схему я строю вокруг бизнес-процессов и явно заданной гранулярности, а не прямого переноса всех исходных таблиц.
- Выделяю измеримые события, например позицию заказа, платёж или закрытый тикет, и явно задаю гранулярность каждой таблицы фактов.
- Описательный контекст собираю в денормализованные измерения клиента, продукта и даты, сокращая глубокие соединения нормализованной OLTP-схемы.
- Факты ссылаются на измерения суррогатными ключами и содержат аддитивные либо чётко описанные полуаддитивные показатели.
- Сначала выпускаю один бизнес-процесс целиком, а затем расширяю общие согласованные измерения по мере добавления новых процессов.
Зачем это спрашивают: Ориентация от процессов с грануляцией впереди и осознанная денормализация измерений показывают методологию Кимбалла применённой, а не упомянутой.
Согласованные измерения задают витринам общую идентичность и единые определения ключевых сущностей.
- Факты продаж и поддержки используют одинаковые ключи клиента и даты, поэтому межвитринные показатели описывают одну и ту же сущность и период.
- Отдельные копии команд быстро расходятся в правилах дедупликации, свежести и определениях атрибутов, что приводит к разным итогам и ненадёжным соединениям между областями.
- Я отношусь к основным измерениям как к версионируемым продуктам с владельцем и единым путём сборки, а витрины ссылаются на них вместо копирования логики.
Зачем это спрашивают: Рамка конформных измерений как владеемых продуктов, потребляемых по ссылке, с названным межвитринным режимом отказа показывает хранилищное управление на рабочем уровне.
Такую связь я моделирую мостовой таблицей заказов и промоакций с явными правилами распределения показателей.
- Мост содержит по одной строке на каждую промоакцию, применённую к заказу, а при необходимости ещё и коэффициент для распределения скидки или другого показателя.
- Соединение фактов через мост размножает строки заказа, поэтому невзвешенная выручка по промоакциям завысит итог, если показатель не обозначен как неаддитивный между акциями.
- Я документирую это размножение и предоставляю заранее распределённую витрину для типового анализа, чтобы пользователи не повторяли рискованное соединение самостоятельно.
Зачем это спрашивают: Знание, что мостовые таблицы вносят намеренное размножение, и поставка факторов аллокации плюс готовых витрин показывают многие-ко-многим, обработанные глубже диаграммы.
Слои разделяют техническую обработку источника, общую бизнес-семантику и представление для конкретного потребителя.
- Staging-слой стандартизирует имена и типы и устраняет исходные дубли, обычно в отдельной модели для каждой таблицы источника.
- Core-слой один раз применяет бизнес-правила и формирует согласованные сущности и факты, а витрины подготавливают проверенный результат под конкретные сценарии.
- Такая структура локализует изменения схемы источника, не даёт копировать бизнес-логику по дашбордам и позволяет отлаживать небольшие понятные шаги вместо одного огромного преобразования.
Зачем это спрашивают: Назначение каждому слою единственной роли поглощения изменений показывает архитектуру, понятую как экономика сопровождения, а не конвенция.
Широкая таблица выигрывает как готовый слой выдачи для конкретного потребителя, но не как основная модель данных.
- При чёткой гранулярности она даёт пользователям BI один заранее соединённый набор, защищает от размножения строк и хорошо работает в колоночных движках.
- В роли источника истины она дорого пересобирается, фиксирует историческую семантику на момент сборки и провоцирует появление расходящихся копий под немного разные потребности команд.
- Общую семантику я храню в ядре со звёздной схемой, а из него создаю заменяемые широкие таблицы для конкретных инструментов или команд.
Зачем это спрашивают: Широкие таблицы как генерируемый serving-слой поверх смоделированного ядра снимают ложную дихотомию и показывают слоёное мышление о том, где живёт семантика.
Обработку удалений нужно включать в контракт загрузки, поскольку инкремент по времени не замечает исчезнувшие строки.
- Предпочтителен 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