сеньорчикОткрыть в Telegram
← все вопросывопросы для собеседований · Инфраструктура данных

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

Эти вопросы про то, где физически лежат данные и сколько стоит их прочитать. Кандидат, который называет Parquet просто «сжатым CSV», обычно не проходит дальше.

54 вопросов в банке·5 подтем·ниже разбор 9

Из чего состоит тема

Так тема разложена в тренажёре: движок ведёт прогресс по каждой подтеме отдельно и возвращает те, где вы ошибаетесь.

Разборы подтем

Конспект по каждой: что это, как отвечать вслух, на чём валятся, плюс вопросы для самопроверки.

Примеры вопросов с разбором

  1. #cicd1 / 9
    Что такое CI/CD простыми словами?
    A)Авто-тест/сборка на коммит (CI) + авто-доставка в среду (CD)
    B)CI/CD — это система хранения версий кода, заменяющая собой git-репозиторий проекта
    C)CI/CD означает ручной запуск тестов и деплоя инженером по расписанию раз в неделю
    D)CI/CD — это среда выполнения контейнеров в продакшене вместо Kubernetes
    показать ответ и разбор
    +A)Авто-тест/сборка на коммит (CI) + авто-доставка в среду (CD)

    // разбор: CI (continuous integration) — на каждое изменение в репозитории автоматически прогонять линтеры, тесты и сборку артефакта (образа), чтобы поломки ловились сразу, а не при релизе. CD (continuous delivery/deployment) — автоматически доставлять прошедшие проверку изменения в среды (stage/prod) по готовности, без ручного копирования. Вместе это конвейер от коммита до прода: код прошёл тесты → собрался образ → задеплоился. Для дата-инженера CI ещё и проверяет сами трансформации (SQL/dbt-тесты) до того, как сломанная логика доедет до витрин.

  2. #containers_docker2 / 9
    Чем образ (image) отличается от контейнера (container) в Docker?
    A)Образ — неизменяемый шаблон (файлы + зависимости); контейнер — запущенный из него изолированный экземпляр процесса
    B)Образ — это запущенный процесс, а контейнер — файл на диске с его зависимостями и настройками
    C)Образ и контейнер — полные синонимы, обозначающие одно и то же в разных версиях Docker
    D)Контейнер — это неизменяемый шаблон, из которого собирают множество разных образов приложения
    показать ответ и разбор
    +A)Образ — неизменяемый шаблон (файлы + зависимости); контейнер — запущенный из него изолированный экземпляр процесса

    // разбор: Образ Docker — иммутабельный слоёный шаблон: код, зависимости, окружение, зафиксированные на момент сборки. Контейнер — запущенный из образа изолированный процесс со своей файловой системой (поверх слоёв образа), сетью и лимитами. Из одного образа поднимают много одинаковых контейнеров. Аналогия: образ — класс, контейнер — объект. Контейнеры эфемерны: их удаляют и создают заново, а состояние держат снаружи (в volume/БД), иначе оно теряется при пересоздании.

  3. #iac_config3 / 9
    Что такое Infrastructure as Code (IaC), например через Terraform?
    A)Инфра описана кодом в git — создаётся/меняется воспроизводимо
    B)IaC — это написание самого приложения на языке инфраструктуры вместо Python или Java
    C)IaC означает ручную настройку каждого сервера через веб-консоль облака по чек-листу
    D)IaC — это мониторинг инфраструктуры, собирающий метрики серверов в реальном времени
    показать ответ и разбор
    +A)Инфра описана кодом в git — создаётся/меняется воспроизводимо

    // разбор: IaC — управление инфраструктурой через код, а не ручную настройку в консоли. В декларативном файле (Terraform HCL) описывают желаемые ресурсы: виртуалки, сети, кластеры K8s, бакеты, БД. Инструмент (Terraform) сравнивает описание с реальностью и создаёт/меняет ресурсы, приводя их к описанному. Код инфраструктуры лежит в git: его ревьюят, версионируют, воспроизводят одинаково в dev/stage/prod. Так уходят «снежинки-серверы», настроенные вручную и невоспроизводимые, а поднятие идентичного окружения становится командой, а не многодневным ручным трудом.

  4. #kubernetes4 / 9
    Что такое Kubernetes и зачем он дата-инженеру?
    A)Оркестрация контейнеров по кластеру — планирование, самовосстановление, масштаб
    B)Kubernetes — это язык программирования для написания data-пайплайнов вместо Python
    C)Kubernetes — это база данных для хранения больших объёмов аналитических данных кластера
    D)Kubernetes управляет одним контейнером на одной машине, заменяя собой команду docker run
    показать ответ и разбор
    +A)Оркестрация контейнеров по кластеру — планирование, самовосстановление, масштаб

    // разбор: Kubernetes (K8s) управляет контейнерами на кластере из многих машин: размещает (планирует) их по узлам с учётом ресурсов, следит за здоровьем и перезапускает упавшие (самовосстановление), масштабирует число реплик, катит обновления без простоя, даёт сеть и сервис-дискавери. Дата-инженеру он даёт продовую среду для контейнеризированных пайплайнов и сервисов: на нём гоняют Airflow, Spark, стрим-джобы, эластично поднимая поды под задачи. Ты описываешь желаемое состояние (декларативно), а K8s его поддерживает.

  5. #observability5 / 9
    Что такое три столпа наблюдаемости (observability): логи, метрики, трейсы?
    A)Логи (события) + метрики (числа во времени) + трейсы (путь запроса)
    B)Это три способа хранения данных в базе: логи в строках, метрики в столбцах, трейсы в графах
    C)Все три — синонимы обычного логирования, отличаются лишь уровнем детализации сообщений
    D)Логи, метрики и трейсы — это три среды развёртывания приложения вместо dev/stage/prod
    показать ответ и разбор
    +A)Логи (события) + метрики (числа во времени) + трейсы (путь запроса)

    // разбор: Наблюдаемость строят на трёх типах телеметрии. Логи — дискретные записи о событиях (что произошло: ошибка, старт задачи) с деталями. Метрики — агрегированные числовые ряды во времени (загрузка CPU, число обработанных строк, длительность задачи), дёшевы для хранения и алертов. Трейсы — путь одного запроса/операции через несколько сервисов (где именно время/сбой), важны в распределённых системах. Вместе: метрики говорят «что-то не так и насколько», логи — «что именно», трейсы — «где в цепочке». Для дата-платформы это способ вовремя увидеть проблему, а не узнать о ней от пользователей.

  6. #cicd6 / 9
    Что проверяет CI для дата-пайплайна помимо обычных тестов кода?
    A)Скорость выполнения запросов — CI для данных измеряет производительность SQL
    B)Сами трансформации данных: линт и тесты SQL/dbt, валидацию схем и контрактов — чтобы сломанная логика не доехала до витрин
    C)Ничего сверх обычных тестов кода: SQL и трансформации в CI проверить не получится
    D)CI для данных проверяет орфографию комментариев и форматирование SQL-файлов
    показать ответ и разбор
    +B)Сами трансформации данных: линт и тесты SQL/dbt, валидацию схем и контрактов — чтобы сломанная логика не доехала до витрин

    // разбор: У дата-пайплайна ломается не только Python-код, но и SQL-трансформации и контракты данных. CI для данных добавляет к юнит-тестам кода: линт SQL, прогон dbt-тестов (unique/not_null/relationships) на тестовых данных, компиляцию моделей (ref/зависимости), проверку схем и обратной совместимости, иногда прогон трансформации на sample и сверку с эталоном. Так изменение, которое сломало бы витрину или контракт с потребителем, отсекается в pull request, а не обнаруживается в проде по кривым цифрам. Это сдвиг проверки данных «влево», ближе к разработчику.

  7. #containers_docker7 / 9
    Зачем упаковывать data-пайплайн в Docker-контейнер?
    A)Чтобы контейнер автоматически ускорял выполнение кода пайплайна в несколько раз
    B)Зафиксировать окружение и зависимости: пайплайн одинаково запускается локально, в CI и в проде — конец «работает у меня»
    C)Чтобы отказаться от указания версий зависимостей — Docker подберёт их сам на лету
    D)Чтобы хранить данные пайплайна прямо внутри контейнера вместо внешней базы данных
    показать ответ и разбор
    +B)Зафиксировать окружение и зависимости: пайплайн одинаково запускается локально, в CI и в проде — конец «работает у меня»

    // разбор: Контейнер упаковывает код вместе с точными версиями интерпретатора, библиотек и системных зависимостей в неизменяемый образ. Тот же образ запускается идентично на ноутбуке, в CI и на проде — исчезает класс проблем «у меня работало, на сервере нет» из-за разных версий. Плюс изоляция (пайплайны не конфликтуют зависимостями), портируемость между машинами/облаками и простое масштабирование (запусти N копий образа). Это фундамент современного развёртывания дата-пайплайнов (в т.ч. на K8s).

  8. #iac_config8 / 9
    Чем декларативный подход к инфраструктуре (Terraform, K8s) отличается от императивного (скрипты)?
    A)Декларативный подход — это пошаговый скрипт команд, а императивный описывает конечное состояние
    B)Декларативно — «что должно быть», инструмент сам добьётся; императивно — шаги
    C)Разницы нет: оба подхода одинаково описывают инфраструктуру набором последовательных команд
    D)Императивный подход идемпотентен и устойчив к дрейфу, а декларативный — нет
    показать ответ и разбор
    +B)Декларативно — «что должно быть», инструмент сам добьётся; императивно — шаги

    // разбор: Императивный подход — последовательность команд «сделай то, потом это» (bash-скрипт: создай ВМ, установи пакет...): ты отвечаешь за все шаги и за то, что будет при повторном запуске. Декларативный — ты описываешь конечное желаемое состояние («должно быть 3 сервера с таким конфигом»), а инструмент (Terraform/K8s) сам вычисляет разницу с текущим и делает только необходимые изменения, чтобы к нему прийти. Декларатив идемпотентен (повторный apply при совпадении состояния ничего не меняет) и устойчив к дрейфу — поэтому его предпочитают для инфраструктуры и оркестрации.

  9. #kubernetes9 / 9
    Что такое pod в Kubernetes?
    A)Pod — это отдельный физический сервер (узел) кластера Kubernetes, на котором запускают контейнеры
    B)Наименьшая разворачиваемая единица: один или несколько тесно связанных контейнеров с общими сетью и хранилищем
    C)Pod — это кластер целиком, объединяющий все контейнеры и узлы под общим управлением
    D)Pod содержит ровно один контейнер, объединять несколько контейнеров в под запрещено
    показать ответ и разбор
    +B)Наименьшая разворачиваемая единица: один или несколько тесно связанных контейнеров с общими сетью и хранилищем

    // разбор: Pod — наименьшая единица, которой оперирует K8s. Обычно это один контейнер приложения, иногда несколько тесно связанных (основной + sidecar), которые делят сетевое пространство (один IP, localhost между собой) и тома. K8s планирует и масштабирует именно поды, а не отдельные контейнеры. Поды эфемерны и одноразовы: их не создают и не чинят вручную — этим управляют контроллеры (Deployment, Job), пересоздавая поды при сбое или обновлении. Прямое создание голого пода без контроллера — антипаттерн: упал и не восстановится.

это 9 из 54

Ещё 45 вопросов по теме — в тренажёре, с движком повторения

Прочитать разбор и ответить самому — разные навыки. В Сеньорчике вопросы идут сессиями, а движок возвращает подтемы, где вы ошибаетесь, пока они не начнут отскакивать. Бесплатно, лимит по энергии.

Частые вопросы