Вопросы на собеседовании: Архитектор данных
100 реальных вопросов с образцовыми ответами и пояснениями для уровня Специалист по моделированию данных.
Смотреть пример резюме: Архитектор данных →Тренировка флешкарточками
Интервальное повторение · Hunter Pass
Вопросы
Архитектор данных определяет организацию и правила управления данными, инженеры строят пайплайны, а аналитики используют данные для ответов на вопросы.
- Архитектор переводит потребности бизнеса в модели, стандарты и связи между системами.
- Инженер реализует загрузку, преобразование, хранение и надежную эксплуатацию данных.
- Аналитик запрашивает проверенные наборы данных и представляет выводы в отчетах или дашбордах.
Зачем это спрашивают: Интервьюер проверяет, понимаете ли вы границы и взаимодействие распространенных ролей в работе с данными.
Я ограничу первую версию одним названным бизнес-процессом и нужной ему предметной областью.
- Например, я начну с продаж в магазинах и связанных данных о клиентах и товарах, а не со всех данных ритейла сразу.
- Я перечислю исходные системы, владельца процесса, ожидаемые результаты и используемые бизнес-термины.
- Пополнение запасов и договоры с поставщиками я явно отмечу как не входящие в первую версию.
- До проектирования сущностей и связей я подтвержу границы на примерах вопросов для отчетности.
Зачем это спрашивают: Интервьюер проверяет, умеете ли вы задавать практические границы бизнес-процесса и предметной области до начала моделирования.
Они описывают один домен с возрастающей детализацией реализации.
- Концептуальная модель показывает главные бизнес-понятия, например Клиент, Заказ и Товар.
- Логическая модель добавляет атрибуты, ключи, связи и правила без выбора конкретной базы данных.
- Физическая модель определяет таблицы, типы столбцов, ограничения и индексы для конкретной платформы, например PostgreSQL.
Зачем это спрашивают: Интервьюер оценивает, умеете ли вы перейти от бизнес-понятий к реализуемой схеме.
Сущность представляет отдельный бизнес-объект, а атрибут описывает этот объект.
- Клиент и Счет являются сущностями, потому что бизнес отслеживает их независимо.
- customer_email и invoice_date являются атрибутами, потому что описывают сущность.
- Полезно проверить, нужны ли понятию собственная идентичность и связи с другими объектами.
Зачем это спрашивают: Интервьюер проверяет, умеете ли вы определять основные строительные блоки модели данных.
Связь соединяет сущности, а кардинальность указывает, сколько записей может участвовать с каждой стороны.
- Один клиент может сделать много заказов, поэтому связь Клиент и Заказ имеет тип один-ко-многим.
- Один заказ может содержать много товаров, а один товар входить во много заказов, поэтому это связь многие-ко-многим.
- Обязательность тоже важна: у заказа должен быть клиент, но у клиента может не быть заказов.
Зачем это спрашивают: Сильный ответ называет распространенные виды кардинальности и учитывает обязательность связи.
Первичный ключ идентифицирует строку, внешний ключ связывает с ней другую строку, а база данных обеспечивает корректность ссылок.
- customers.customer_id может уникально идентифицировать каждого клиента.
- orders.customer_id может ссылаться на этот ключ, чтобы каждый заказ принадлежал существующему клиенту.
- Ссылочная целостность отклоняет некорректные ссылки и задает поведение при обновлении или удалении родительской строки.
Зачем это спрашивают: Интервьюер проверяет понимание идентичности, связей и согласованности, которую обеспечивает база данных.
Я выбираю стабильный естественный ключ, когда он существует, суррогатный при изменяемых бизнес-идентификаторах и составной, когда уникальность зависит от нескольких полей.
- Код страны ISO подходит как естественный ключ, потому что он осмыслен и централизованно контролируется.
- Сгенерированный customer_id изолирует внутренние связи от изменяемого адреса электронной почты.
- Строка order_items может использовать пару order_id и line_number как составной ключ.
Зачем это спрашивают: Сильный ответ различает типы ключей через стабильность и конкретное правило уникальности.
Первые три нормальные формы устраняют повторяющиеся значения и зависимости, которые относятся не ко всему ключу.
- Первая нормальная форма требует атомарных значений и отсутствия повторяющихся групп столбцов.
- Вторая нормальная форма устраняет зависимости только от части составного ключа.
- Третья нормальная форма устраняет зависимости между неключевыми атрибутами, например хранение сведений о postal_code в таблице Customer.
Зачем это спрашивают: Интервьюер ожидает практического понимания того, как нормализация уменьшает дублирование и аномалии обновления.
Я бы денормализовал модель, когда более простое или быстрое чтение оправдывает контролируемое дублирование.
- Отчетная таблица может хранить customer_region рядом с каждой продажей, чтобы не выполнять повторяющиеся соединения.
- Цена решения состоит в дополнительном хранении и риске рассогласования скопированных значений.
- Я сохраняю нормализованный источник истины и документирую способ обновления денормализованной таблицы.
Зачем это спрашивают: Сильный ответ представляет денормализацию как обоснованную оптимизацию чтения, а не стандартный выбор.
Системы OLTP выполняют повседневные транзакции, а системы OLAP поддерживают аналитические запросы по большой истории.
- Сервис заказов выполняет много коротких вставок и обновлений со строгой согласованностью.
- Хранилище сканирует и агрегирует миллионы строк продаж для анализа тенденций и дашбордов.
- Схемы OLTP часто нормализованы, а модели OLAP часто используют факты и измерения для удобного анализа.
Зачем это спрашивают: Интервьюер проверяет, умеете ли вы подбирать модели данных под операционные и аналитические нагрузки.
Хранилище данных объединяет данные всей организации, а витрина обслуживает более узкую команду или предметную область.
- Хранилище может объединять продажи, финансы, поддержку и продуктовые данные с общими определениями.
- Маркетинговая витрина может предоставлять только модели кампаний, клиентов и конверсий.
- Витрина упрощает работу, но скопированным витринам нужны согласованные определения, иначе метрики начнут расходиться.
Зачем это спрашивают: Сильный ответ различает масштаб и объясняет риск изолированных командных наборов данных.
Озеро данных недорого хранит разные файлы, а lakehouse добавляет управление как у таблиц и надежную аналитику поверх этих файлов.
- Озеро может хранить сырые CSV, JSON, изображения и Parquet в объектном хранилище.
- Формат lakehouse, например Delta Lake или Apache Iceberg, добавляет схемы, транзакции и метаданные таблиц.
- Благодаря этим механизмам подготовленные данные озера можно надежно использовать в SQL-запросах и BI-инструментах.
Зачем это спрашивают: Интервьюер проверяет, понимаете ли вы, зачем lakehouse добавляет структуру без погружения в сложные внутренние механизмы.
ETL преобразует данные до загрузки в целевую систему, а ELT сначала загружает сырые данные и преобразует их внутри целевой платформы.
- ETL может защищать ограниченную целевую систему, отправляя только очищенные и подготовленные данные.
- ELT использует вычислительные ресурсы хранилища, например Snowflake или BigQuery, для преобразований.
- Выбор определяет место выполнения логики, но оба подхода требуют валидации и lineage.
Зачем это спрашивают: Сильный ответ объясняет порядок операций и место использования вычислительных ресурсов.
Пакетная обработка подходит для данных, которые можно получать по расписанию, а потоковая нужна событиям с малой допустимой задержкой.
- Ночной финансовый отчет может загружать все транзакции за вчера одним пакетом.
- Для выявления мошенничества платежные события могут требоваться за несколько секунд, что говорит в пользу потока.
- Потоковая обработка сложнее в эксплуатации, поэтому я не выберу ее, если бизнесу достаточно часовой или дневной свежести.
Зачем это спрашивают: Интервьюер оценивает, выбираете ли вы режим обработки по требованиям к свежести, а не по моде.
Schema-on-write проверяет и формирует данные до сохранения, а schema-on-read применяет структуру во время чтения.
- Таблица хранилища отклоняет строки, которые не соответствуют объявленным столбцам и типам.
- Озеро данных может сохранить сырой JSON и позволить каждому читателю позже выбирать и приводить поля.
- Schema-on-write улучшает согласованность, а schema-on-read сохраняет гибкость, но переносит работу и риски на потребителей.
Зачем это спрашивают: Сильный ответ связывает каждый подход с моментом валидации, гибкостью и усилиями потребителя.
Эти слои разделяют временную загрузку, историю данных в исходном виде и готовые для бизнеса наборы данных.
- Staging хранит временные файлы или таблицы, пока загрузка проходит проверку.
- Raw сохраняет значения источника с минимальными изменениями для повторной обработки или аудита.
- Curated применяет типы, правила качества, соединения и бизнес-определения для надежного использования.
Зачем это спрашивают: Интервьюер проверяет, понимаете ли вы разделение обязанностей между слоями базовой платформы данных.
Таблица фактов записывает измеримые бизнес-события, а измерения описывают контекст этих событий.
- Факты продаж могут содержать quantity, revenue, date_key, product_key и store_key.
- Измерения Product и Store содержат названия, категории и местоположения для группировки фактов.
- Таблицы фактов обычно большие и узкие, а измерения меньше и содержат описательные поля.
Зачем это спрашивают: Сильный ответ определяет показатели, описательный контекст и связывающие их ключи.
Схема звезда размещает денормализованные измерения вокруг таблицы фактов, а снежинка разделяет детали измерений на связанные таблицы.
- Звезда может хранить категорию и отдел товара в измерении Product ради простых запросов.
- Снежинка может разделить Product, Category и Department, чтобы сократить повторение атрибутов.
- Звезды проще для аналитиков, а снежинки уменьшают дублирование ценой дополнительных соединений.
Зачем это спрашивают: Интервьюер проверяет понимание компромисса между удобством и нормализацией в размерных моделях.
Объявленная гранулярность точно определяет смысл одной строки фактов и делает ее показатели понятными.
- Одна строка может представлять одну позицию заказа, а не заказ целиком или дневной итог.
- Каждый ключ измерения и показатель должен описывать то же событие позиции заказа.
- Смешение гранулярностей может повторить итог заказа в каждой позиции и завысить сумму.
Зачем это спрашивают: Сильный ответ считает гранулярность первым проектным решением и связывает ее с корректной агрегацией.
Транзакционная таблица фактов хранит по одной строке на каждое бизнес-событие в полезной атомарной гранулярности.
- Примеры включают одну позицию заказа, один платеж или один клик на сайте.
- Строки обычно добавляются по мере событий, а не перезаписываются как текущий снимок.
- Атомарные события затем можно агрегировать по дате, клиенту, товару и другим измерениям.
Зачем это спрашивают: Интервьюер проверяет, распознаете ли вы факты уровня событий и их гибкость для анализа.
Закрытые вопросы
- 21
Что такое таблица фактов периодических снимков?
modelingfact-tablessnapshot - 22
Что такое таблица фактов накапливающихся снимков?
modelingfact-tablessnapshot - 23
Что такое аддитивные, полуаддитивные и неаддитивные показатели?
- 24
Что такое согласованное измерение?
conformed-dimensions - 25
Что такое ролевое измерение?
- 26
Что такое вырожденное измерение?
- 27
Что такое мусорное измерение?
- 28
Как Slowly Changing Dimension Type 1 обрабатывает изменения?
scdslowly-changing-dimensions - 29
Как Slowly Changing Dimension Type 2 сохраняет историю?
scdslowly-changing-dimensions - 30
Зачем использовать измерение дат вместо одного столбца timestamp?
schema - 31
Когда в размерной модели полезна мостовая таблица?
bridge-tables - 32
Что такое безфактная таблица фактов?
modelingfact-tablesfactless-fact-tables - 33
Чем форматы данных CSV, JSON и Parquet отличаются друг от друга?
parquet - 34
Что такое партиционирование данных и как оно помогает запросам?
queriespartitioningdata-partitioning - 35
Чем кластеризация отличается от партиционирования?
data-partitioningdata-clusteringpartitioning - 36
Почему колоночное хранение подходит для аналитических нагрузок?
schemacolumnar-storage - 37
Что такое модель dbt?
dbt - 38
Что такое источник dbt и зачем его объявлять?
dbt - 39
Какие базовые тесты следует добавить в модель dbt?
dbttesting - 40
Что такое DAG, задача и зависимость в Apache Airflow?
dependenciesairflow - 41
Какие измерения качества данных встречаются чаще всего?
quality - 42
Какие простые проверки качества следует выполнить для нового набора данных?
- 43
Чем технические метаданные отличаются от бизнес-метаданных?
metadata-management - 44
Что такое lineage данных и чем он полезен?
data-lineagelineage - 45
Чем каталог данных отличается от бизнес-глоссария?
data-catalogbusiness-glossary - 46
Чем владелец данных отличается от стюарда данных?
- 47
Что означает классификация PII в модели данных?
modelingdata-modelingpii - 48
Что означает принцип наименьших привилегий для доступа к данным?
least-privilegeaccess-control - 49
Почему модель данных должна учитывать правила хранения?
modelingdata-modelingretention - 50
Как команде документировать и версионировать модель данных с помощью Git?
modelingdata-modelinggit - 51
Команде e-commerce нужна отчетность по продажам в разрезе дня, товара, клиента и канала. Какую гранулярность и звездную схему вы предложите?
schemamodelingstar-schema - 52
В источнике есть один заголовок заказа и несколько строк заказа, а аналитикам нужны и число заказов, и продажи товаров. Как вы это смоделируете?
- 53
Выручка удвоилась после соединения факта продаж с таблицей, где на один заказ приходится несколько промоакций. Как вы исправите запрос или модель?
queries - 54
У части строк продаж ключ клиента равен null или отсутствует в измерении клиентов. Как сохранить эти факты в отчетности?
fundamentals - 55
В таблице клиентов SCD2 есть две текущие строки одного клиента и пересекающиеся периоды действия. Что вы сделаете?
- 56
Вчерашний факт продажи пришел сегодня после завершения ежедневной загрузки хранилища. Как вы его обработаете?
warehouseconcurrency - 57
Продажа пришла раньше новой записи о товаре в измерении товаров. Как вы обработаете опоздавшую строку измерения?
- 58
Инкрементальная загрузка была перезапущена после тайм-аута и создала дубли транзакций. Как сделать повторный запуск безопасным?
resiliencepipelinestransactions - 59
Ежедневная выгрузка источника содержит вставки и обновления, но молча пропускает удаленные в источнике записи. Как обнаруживать и отражать удаления?
- 60
Вы загрузили новую модель продаж из трех исходных таблиц. Какие базовые сверки вы выполните перед выпуском?
react - 61
После соединения заказов с клиентами отчет теряет 8 процентов заказов. Как вы будете искать причину?
- 62
Запрос должен вернуть дневную выручку по товарам, но выдает несколько строк на товар и день. Что вы проверите?
queries - 63
В staging-таблицу попадает несколько версий одного клиента в одном пакете. Как детерминированно выбрать одну строку?
batch - 64
Источник присылает null и пустые строки в поле страны, а отчетам нужна единообразная страна клиента. Как вы их смоделируете?
fundamentals - 65
Поставщик добавил новый столбец в ежедневный CSV-файл, и задача загрузки упала. Каково ваше локальное исправление?
schema - 66
JSON-источник стал передавать customer.age строкой вместо числа для части записей. Как безопасно продолжить загрузку?
- 67
Нужно хранить ежедневную выгрузку событий объемом 20 ГБ для повторных аналитических сканирований. Вы выберете CSV или Parquet?
parquet - 68
Запрос к таблице событий за пять лет работает медленно, хотя таблица разбита на партиции по event_date. Какое простое изменение вы проверите первым?
queriespartitioning - 69
Ежечасный пайплайн записывает тысячи маленьких файлов Parquet, и аналитические чтения замедлились. Какое умеренное исправление вы предложите?
ci-cdparquet - 70
Вы создаете измерение клиентов в dbt с customer_id как бизнес-ключом. Какие первые тесты вы добавите?
dbttestingbusiness-keys - 71
Модель заказов в dbt ссылается полем customer_id на измерение клиентов. Как вы проверите эту ссылку?
dbt - 72
Поле order_status должно содержать только pending, paid, shipped или cancelled. Как защитить это правило в dbt?
dbt - 73
Ежедневный источник платежей не обновлялся 30 часов, но модели dbt все еще могут выполняться. Что вы настроите?
configdbt - 74
Staging-модель dbt упала, и после исправления нужно перезапустить ее только с нижестоящими моделями. Как ограничить запуск?
dbt - 75
Задача Airflow обращается к HTTP API, получает статус 429 и почти сразу повторяет запрос. Как вы ее настроите?
configairflowhttp - 76
Исправленное налоговое правило нужно применить к продажам за последние семь дней. Как безопасно выполнить эту перезагрузку?
backfill - 77
Ежедневная задача выручки иногда стартует до завершения задачи валютных курсов и выдает null в пересчитанных суммах. Как исправить DAG?
fundamentals - 78
У двух процентов входящих строк клиентов неверные email или даты рождения. Как оставить хорошие строки доступными, не скрывая плохие?
- 79
Вас просят сопоставить исходное поле order_total_text с полем net_amount в хранилище. Что вы внесете в маппинг источника и целевой модели?
warehouse - 80
Модель найма смешивает одну строку на событие смены статуса заявки с полями этапов всей заявки. Что вы отметите на ревью дизайна?
milestonesdesignschema - 81
Сравнение моделей в ERwin показывает удаление customer.email и сокращение длины customer.phone. Что вы сделаете перед применением?
- 82
Новая витрина клиентов готова, но аналитики не могут ее найти или понять. Какие сведения вы зарегистрируете в каталоге?
- 83
Каталог показывает прямую связь дашборда с сырой таблицей заказов, хотя фактически используется витрина продаж. Как исправить lineage на уровне таблиц?
lineage - 84
Продажи считают активным клиента с покупкой за 90 дней, а Маркетинг использует посещение сайта за 30 дней. Что вы сделаете с конфликтом в глоссарии?
- 85
Дашборду поддержки нужны регион клиента и число обращений, но исходная таблица также содержит имена, email и телефоны. Как вы обработаете PII?
pii - 86
Подрядчику нужно одну неделю проверять один финансовый отчет. Какой доступ к хранилищу вы выдадите?
warehousevalidation - 87
Политика требует удалять через 30 дней сырые логи приложения с идентификаторами пользователей. Как вы это реализуете и проверите?
- 88
Виртуальный склад Snowflake для ночной задачи оставался запущенным все выходные. Какие локальные изменения вы сделаете?
warehousesnowflake - 89
Дашборд BigQuery использует SELECT * для широкой таблицы событий, хотя график показывает только три столбца. Как уменьшить стоимость запроса?
queriesschemabigquery - 90
Вы с коллегой изменили один файл модели dbt, и теперь возник конфликт Git. Как безопасно его разрешить?
gitdbt - 91
Стейкхолдер просит таблицу активных клиентов, но не дает определения активности. Что вы спросите до моделирования?
stakeholder-managementcommunication - 92
Аналитик говорит, что ваша месячная выручка на 5 процентов выше финансового отчета. Как вы проведете расследование?
- 93
Нужно выпустить модель, пока владелец источника не подтвердил, являются ли суммы возвратов отрицательными. Как вы задокументируете предположение?
- 94
Команда получает сырой clickstream в JSON и нуждается в стабильных ежедневных сводках по кампаниям. Где вы разместите каждый набор данных?
- 95
Аналитикам нужны продажи по региону клиента на момент покупки, но таблица клиентов хранит только последний регион. Что вы измените?
- 96
Две исходные системы используют customer_id 42 для разных людей. Как не допустить их слияния в хранилище?
warehousesystem-design - 97
Ритейлер каждую ночь присылает по одному файлу запасов на магазин, а аналитикам нужны остатки по дням. Какую гранулярность факта вы выберете?
fact-grain - 98
Один товар может входить в несколько кампаний, а одна кампания содержит много товаров. Как смоделировать это для фильтрации по кампаниям?
- 99
Команде обучения нужно отчитываться, какие сотрудники посетили каждый обязательный курс, хотя у посещения нет суммы. Какую таблицу вы смоделируете?
- 100
Загрузка CSV внезапно отклоняет даты, потому что поставщик изменил значения с 2026-07-15 на 15/07/2026. Как это исправить?