Перейти к содержимому
На этой странице

Передача данных

Все темы Data Engineer

Что такое XCom?

XCom (Cross Communication) - это механизм в Apache Airflow, который позволяет передавать данные между задачами в рамках одного рабочего процесса. Он используется для обмена информацией между задачами, которые выполняются параллельно или последовательно в рамках одного DAG (Directed Acyclic Graph).

XCom позволяет задачам обмениваться данными в виде ключ-значение (обычно JSON-подобный объект). Эти данные могут быть использованы для передачи промежуточных результатов вычислений, обмена статусом выполнения задачи или любой другой необходимой информации.

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


Какие методы передачи данных вы используете в распределенных системах?

Передача данных в распределенных системах может быть реализована с использованием различных методов:

  1. REST API:

    • Передача данных через HTTP/HTTPS с использованием JSON или XML.
  2. gRPC:

    • Высокопроизводительный RPC (Remote Procedure Call) протокол.
  3. Apache Kafka:

    • Потоковая передача данных в режиме реального времени.
  4. Apache Flink:

    • Потоковая обработка данных с низкой задержкой.
  5. RabbitMQ:

    • Система очередей сообщений для передачи данных.
  6. FTP/SFTP:

    • Передача файлов с использованием протоколов FTP или SFTP.

Как вы обеспечиваете надежность и целостность данных при их передаче?

Обеспечение надежности и целостности данных при передаче включает несколько методов:

  1. Использование проверок целостности:

    • Применение контрольных сумм (например, CRC) для проверки целостности данных.
  2. Подтверждение доставки:

    • Использование механизмов подтверждения доставки данных (например, ACK в TCP).
  3. Повторная передача данных:

    • Настройка механизмов повторной передачи данных при сбоях.
  4. Шифрование данных:

    • Шифрование данных для защиты от подмены и несанкционированного доступа.
  5. Логирование и мониторинг:

    • Логирование операций передачи данных и мониторинг состояния сети.

Какие протоколы передачи данных вы считаете наиболее подходящими для больших данных?

Для передачи больших данных используются следующие протоколы:

  1. HTTP/HTTPS:

    • Протоколы для передачи данных по сети с использованием REST API.
  2. gRPC:

    • Высокопроизводительный протокол для передачи данных с низкой задержкой.
  3. Apache Kafka:

    • Протокол для потоковой передачи данных в режиме реального времени.
  4. FTP/SFTP:

    • Протоколы для передачи файлов между системами.
  5. WebSockets:

    • Протокол для двусторонней передачи данных в реальном времени.

Как зафиксировать контракт новой интеграции данных?

Контракт фиксирует владельцев, назначение, SLA по freshness и доступности, схему с правилами совместимости и grain. Отдельно описывают initial load, инкремент, ordering, deletes, timezone и идентификатор идемпотентности. Протокол задает retries, timeout, authentication и версионирование. Приемка включает reconciliation, мониторинг lag и качества, runbook сбоя и процедуру изменения контракта, а не только пример payload. Контракт описывает повтор, частичный сбой и сверку, а не только успешный пример одной поставки.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Data Engineer, ETL-разработчик. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.