Skip to content

Вопросы на собеседовании: Архитектор данных

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

Смотреть пример резюме: Архитектор данных

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

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

Вопросы

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

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

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

modelingdata-modeling

Я ограничу первую версию одним названным бизнес-процессом и нужной ему предметной областью.

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

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

modelingdata-modelingconceptual-modeling

Они описывают один домен с возрастающей детализацией реализации.

  • Концептуальная модель показывает главные бизнес-понятия, например Клиент, Заказ и Товар.
  • Логическая модель добавляет атрибуты, ключи, связи и правила без выбора конкретной базы данных.
  • Физическая модель определяет таблицы, типы столбцов, ограничения и индексы для конкретной платформы, например PostgreSQL.

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

Сущность представляет отдельный бизнес-объект, а атрибут описывает этот объект.

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

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

modelingdata-modelingcardinality

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

  • Один клиент может сделать много заказов, поэтому связь Клиент и Заказ имеет тип один-ко-многим.
  • Один заказ может содержать много товаров, а один товар входить во много заказов, поэтому это связь многие-ко-многим.
  • Обязательность тоже важна: у заказа должен быть клиент, но у клиента может не быть заказов.

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

foreign-keysprimary-keysreferential-integrity

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

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

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

composite-keys

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

  • Код страны ISO подходит как естественный ключ, потому что он осмыслен и централизованно контролируется.
  • Сгенерированный customer_id изолирует внутренние связи от изменяемого адреса электронной почты.
  • Строка order_items может использовать пару order_id и line_number как составной ключ.

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

formsnormalization

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

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

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

denormalizationmodelingdata-modeling

Я бы денормализовал модель, когда более простое или быстрое чтение оправдывает контролируемое дублирование.

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

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

oltpolapsystem-design

Системы OLTP выполняют повседневные транзакции, а системы OLAP поддерживают аналитические запросы по большой истории.

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

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

warehousedata-martsdata-warehousing

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

  • Хранилище может объединять продажи, финансы, поддержку и продуктовые данные с общими определениями.
  • Маркетинговая витрина может предоставлять только модели кампаний, клиентов и конверсий.
  • Витрина упрощает работу, но скопированным витринам нужны согласованные определения, иначе метрики начнут расходиться.

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

data-lakeslakehouse

Озеро данных недорого хранит разные файлы, а lakehouse добавляет управление как у таблиц и надежную аналитику поверх этих файлов.

  • Озеро может хранить сырые CSV, JSON, изображения и Parquet в объектном хранилище.
  • Формат lakehouse, например Delta Lake или Apache Iceberg, добавляет схемы, транзакции и метаданные таблиц.
  • Благодаря этим механизмам подготовленные данные озера можно надежно использовать в SQL-запросах и BI-инструментах.

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

etlelt

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

  • ETL может защищать ограниченную целевую систему, отправляя только очищенные и подготовленные данные.
  • ELT использует вычислительные ресурсы хранилища, например Snowflake или BigQuery, для преобразований.
  • Выбор определяет место выполнения логики, но оба подхода требуют валидации и lineage.

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

batchconcurrency

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

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

Зачем это спрашивают: Интервьюер оценивает, выбираете ли вы режим обработки по требованиям к свежести, а не по моде.

schema-on-writeschema-on-readschema

Schema-on-write проверяет и формирует данные до сохранения, а schema-on-read применяет структуру во время чтения.

  • Таблица хранилища отклоняет строки, которые не соответствуют объявленным столбцам и типам.
  • Озеро данных может сохранить сырой JSON и позволить каждому читателю позже выбирать и приводить поля.
  • Schema-on-write улучшает согласованность, а schema-on-read сохраняет гибкость, но переносит работу и риски на потребителей.

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

Эти слои разделяют временную загрузку, историю данных в исходном виде и готовые для бизнеса наборы данных.

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

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

modelingfact-tablesdimension-tables

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

  • Факты продаж могут содержать quantity, revenue, date_key, product_key и store_key.
  • Измерения Product и Store содержат названия, категории и местоположения для группировки фактов.
  • Таблицы фактов обычно большие и узкие, а измерения меньше и содержат описательные поля.

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

schemamodelingsnowflake

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

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

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

modelingfact-tablesfact-grain

Объявленная гранулярность точно определяет смысл одной строки фактов и делает ее показатели понятными.

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

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

transactionsmodelingfact-tables

Транзакционная таблица фактов хранит по одной строке на каждое бизнес-событие в полезной атомарной гранулярности.

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

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

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

  • 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. Как это исправить?