概要 データエンジニア面接では、生データを取り込み、適切にモデル化し、効率的に変換し、品質を守り、処理を制御し、保証付きで提供する信頼性の高いデータ基盤を構築できるかが評価されます。
面接官が評価すること
—
SQL:結合、ウィンドウ、重複除去、増分処理を正確かつ効率的に書けるか。
—
データモデリング:実際の用途に合う表、粒度、パーティション、履歴ディメンションを設計できるか。
—
パイプライン:信頼性、可観測性、復旧性のあるバッチ・ストリーミング処理を作れるか。
—
分散処理:Spark、パーティション、シャッフル、状態、遅延、性能を理解しているか。
—
データ品質:不良データがダッシュボード、モデル、製品機能を損なう前に防げるか。
—
基盤判断:費用、性能、鮮度、ガバナンス、リネージ、開発者体験を均衡できるか。
—
本番責任:障害、バックフィル、スキーマ変更、影響連絡を適切に扱えるか。
データエンジニアリングはデータに対する信頼性工学
優れたデータエンジニアはデータを移動するだけでなく、信頼でき、理解しやすく、追跡可能で、拡張でき、障害から復旧できる資産へ変えます。
データエンジニアの選考プロセス 一般的な選考には、SQL、Pythonまたはプログラミング、データモデリング、パイプライン・システム設計、Sparkまたは分散処理、デバッグ、行動面接が含まれます。
一般的な選考段階
1
採用担当者面談:職務との適合、技術構成、報酬、勤務地、業界経験を確認します。
2
採用責任者面談:パイプライン、モデル、障害、協働における責任を深掘りします。
3
SQL面接:結合、ウィンドウ、重複除去、増分処理、性能を評価します。
4
プログラミング面接:主にPythonでデータ構造、ファイル、API、解析、変換を扱います。
5
データモデリング:ウェアハウス表、イベントスキーマ、ファクト・ディメンション、レイクハウスを設計します。
6
システム設計:取り込み、ETL・ELT、ストリーミング、オーケストレーション、監視、リネージ、品質を説明します。
7
行動面接:当事者意識、障害対応、説明、曖昧さ、協働を評価します。
分析系データエンジニア
プラットフォーム・ストリーミング系データエンジニア
主な重点
ウェアハウスモデル、dbt・SQL、報告品質、事業指標
取り込み、ストリーミング、分散処理、信頼性、規模
一般的な面接
SQL、次元モデリング、関係者要件、オーケストレーション
システム設計、Spark、Flink、Kafka、状態、パーティション、運用
良い評価材料
分析・事業部門が安心して使える信頼性の高いモデル
大容量、低遅延、障害時にも堅牢なシステム
よくある誤り
粒度、責任者、指標定義が不明な表を作る
意味論、再生、状態、監視を定めずストリーミングを設計する
対象職種を理解する
ウェアハウス中心のAnalytics Engineeringとストリーミング基盤では面接内容が大きく異なります。実際の技術構成と責任に合わせて準備します。
データモデリングとウェアハウスの質問 分析、機械学習、運用報告に対して、理解しやすく拡張可能で費用を考慮したスキーマを設計する力が評価されます。
重要な概念
ファクトテーブル
注文、決済、セッション、配達など、測定可能な事業イベントや取引を保持します。
ディメンションテーブル
顧客、商品、場所、キャンペーン、日付など、ファクトを説明する文脈を保持します。
粒度
各行が表すものです。ファクト、ディメンション、指標、結合の設計前に明確にします。
緩やかに変化するディメンション
顧客区分、住所、担当者などの属性変更を履歴としてモデル化します。
上級 · データモデリング
EC企業のデータウェアハウスモデルを設計してください。
回答の組み立て — 事業過程 → ファクト → ディメンション → 粒度 → 指標
閲覧、カート、注文、決済、発送、返品、返金、在庫、アトリビューションから始めます。候補ファクトは注文単位のfact_orders、明細単位のfact_order_items、決済、返金、発送、日次在庫スナップショットです。顧客、商品、日付、倉庫、獲得経路、キャンペーンをディメンションにします。
各粒度を明示します。カテゴリ売上は明細、顧客ライフサイクルは顧客または契約、在庫はスナップショットから求めます。属性履歴、取消、注文・明細割引、通貨、税、ゲスト購入、遅延データを考慮し、財務と取引・決済・倉庫システムへ照合します。
想定される追加質問
fact_order_itemsの粒度は何ですか?
返金をどうモデル化しますか?
商品カテゴリの履歴変更をどう扱いますか?
中級 · データモデリング
緩やかに変化するディメンションをどうモデル化しますか?
回答の組み立て — 履歴要件に応じてタイプ1またはタイプ2を選ぶ
タイプ1は旧値を上書きし、現在状態だけが必要な場合に適します。タイプ2は変更ごとに新しい行を作り、有効開始、有効終了、current_flag、代理キーを保持します。
顧客の地域が西から東へ変わる場合、タイプ1は過去売上も東へ付け替えます。タイプ2なら各時点で正しい地域を保持し、イベント日時に有効な版へファクトを結合できます。キー、時間結合、遅延ファクト、現在・履歴表示が複雑になるため、事業要件で選びます。
想定される追加質問
タイプ1で十分なのはいつですか?
ファクトをタイプ2ディメンションへどう結合しますか?
遅れて届くファクトをどう扱いますか?
中級 · データモデリング
スタースキーマと非正規化されたワイドテーブルをどう使い分けますか?
回答の組み立て — 統制・柔軟性と、単純さ・クエリ性能の比較
スタースキーマはファクトとディメンションを分け、再利用可能なディメンション、一貫した指標、明確な粒度、重複の少ない柔軟な分析に向きます。
ワイドテーブルは、利用頻度の高いダッシュボード、特定の分析、機械学習特徴量など、単純さと速度を優先する用途に適しますが、重複と定義の不一致を招きやすくなります。通常は正規のファクト・ディメンションと、利用者別のデータマート・ワイド表を組み合わせます。容量、利用者、BI、費用、遅延、変更頻度で判断します。
想定される追加質問
BIダッシュボードにはどちらが適しますか?
指標定義の不一致をどう防ぎますか?
セマンティック層とは何ですか?
パイプライン設計とオーケストレーション 適切な鮮度と費用要件を満たす、冪等で観測可能かつ復旧可能な処理を設計する力が評価されます。
確実なパイプライン設計手順
1
情報源、容量、鮮度、利用者、許容できる失敗を確認します。
2
バッチ、CDC、イベントストリーム、API、ファイル、管理型コネクタから取り込み方式を選びます。
3
ランディング領域、生データ保存、スキーマ管理、再生方法を定義します。
4
raw、staging、modeling、servingの層を明確に分けます。
5
再実行しても重複や破損を起こさない冪等性を保証します。
6
品質検査、リネージ、ログ、アラート、指標、責任者を設けます。
7
バックフィル、スキーマ進化、遅延データ、再試行、部分障害、費用統制を計画します。
中級 · パイプライン設計
本番DBからウェアハウスへ注文を取り込む日次ETLを設計してください。
回答の組み立て — 抽出 → 生データ保存 → 変換 → 検証 → 公開 → 監視
鮮度、容量、元DBへの許容負荷、利用者、後日修正を確認します。updated_atまたはCDCで注文を増分抽出し、オブジェクトストレージまたはraw表へ不変コピーを保存し、stagingで整形してfact_ordersとfact_order_itemsを公開します。依存関係はオーケストレーターが管理します。
再試行はMERGE、パーティション置換、原子的な切替で決定的にします。遡及窓で遅延変更を取り込みます。行数、空キー、重複ID、売上、状態、鮮度、元DBとの照合を検査し、失敗、異常量、重複、遅延を通知します。責任者と依存先も文書化します。
想定される追加質問
updated_atだけでは不十分なのはなぜですか?
注文の重複をどう防ぎますか?
2年分の履歴をどう読み込みますか?
初級 · パイプラインの信頼性
データパイプラインにおける冪等性とは何ですか?
回答の組み立て — 同じ入力を再処理しても同じ出力状態になる
冪等なパイプラインは同じ入力で何度実行しても、重複や意図しない副作用なしに同じ正しい状態を作ります。再試行とバックフィルに不可欠です。
非冪等な処理は再実行のたびに昨日の注文を再追加します。堅牢な方式では、対象パーティションを置き換える、主キーでMERGEする、一時領域へ書いて原子的に切り替えるなどを行います。一意キー、適切なパーティション、決定的な変換、制御された副作用が必要です。
想定される追加質問
追記専用処理をどう冪等にしますか?
原子的な切替とは何ですか?
冪等性がバックフィルを容易にするのはなぜですか?
中級 · スキーマ進化
上流システムのスキーマ変更をどう扱いますか?
回答の組み立て — 検出 → 分類 → 保護 → 連絡 → 移行
レジストリ、メタデータ検査、契約テスト、取り込み検証で変更を検出し、列の追加・削除・改名、型、NULL許容性、意味の変更へ分類します。NULL許容列の追加は互換なことが多い一方、改名、削除、型変更は利用側を壊します。意味だけ変わる変更はスキーマが通るため特に危険です。
生データを保持し、重要な情報源には契約と互換性ルールを適用します。互換性のない変更では上流責任者と調整し、版を分け、変換を更新し、必要なら履歴を再構築し、リネージから影響を受ける利用者へ連絡します。
想定される追加質問
データ契約とは何ですか?
列の型変更をどう扱いますか?
上流チームが通知しなかったらどうしますか?
バッチとストリーミング 遅延、処理量、順序、状態、窓、再生と、単純な構成とリアルタイム構成の運用上のトレードオフを評価します。
バッチ処理
ストリーミング処理
適した用途
定期報告、履歴バックフィル、大規模変換、費用効率の高い分析
リアルタイム機能、アラート、不正検知、ライブ表示、低遅延判断
主なトレードオフ
遅延は大きいが、運用と再生が単純
遅延は小さいが、状態、順序、障害処理が複雑
一般的なツール
Airflow、dbt、Spark Batch、Snowflake、BigQuery、Databricks
Kafka、Flink、Spark Structured Streaming、Kinesis、Pub/Sub
障害リスク
遅延データ、部分読込、長時間処理、バックフィル費用
重複、順序外イベント、チェックポイント、状態肥大、exactly-onceの意味論
中級 · ストリーミングと構成
バッチではなくストリーミングを選ぶのはいつですか?
回答の組み立て — 意思決定の遅延と複雑さを比較する
不正検知、運用アラート、個人化、在庫更新、直近イベントを使う機能など、低遅延が実際の価値を生む場合に選びます。日次報告、履歴分析、財務照合、時間単位の変換には、通常バッチの方が単純で安価、再現も容易です。
鮮度、容量、順序、状態処理、耐障害性、チーム経験、費用、利用者で判断します。ストリーミングは重複、遅延イベント、チェックポイント、スキーマ、監視を複雑にします。事業要件を満たす最も単純な構成を選びます。
想定される追加質問
遅延イベントとは何ですか?
ストリーム内の重複をどう扱いますか?
exactly-onceとは何ですか?
上級 · ストリーミングシステム設計
不正イベント向けのリアルタイムパイプラインを設計してください。
回答の組み立て — イベント → ストリーム → 情報付加 → ルール・モデル → 対応 → 保存 → 監視
容量、遅延目標、判断内容、許容偽陽性、遮断または審査の要否を確認します。決済イベントをKafkaまたはKinesisへ送り、処理系がスキーマを検証し、event_idで重複除去し、利用者、端末、加盟店、取引速度を付加してルールまたはモデルを適用します。高リスクなら遮断、追加認証、手動審査へ送ります。イベントと判断は監査・学習用に保存します。
順序、重複、特徴量鮮度、状態量、バックプレッシャー、デッドレターキュー、再生、遅延、版管理が重要です。理由コード、偽陽性監視、ロールバックで顧客と運用を守ります。
想定される追加質問
取引速度の特徴量をどう計算しますか?
イベントを安全に再生するにはどうしますか?
デッドレターキューは何のためにありますか?
Sparkと分散処理の質問 パーティション、シャッフル、偏り、キャッシュ、結合、ファイル形式、処理が遅い・失敗する原因を評価します。
中級 · SPARK
Sparkのシャッフルとは何で、なぜ高コストですか?
回答の組み立て — パーティション間でデータを再配分する処理
groupBy、join、distinct、orderBy、repartitionなどで、Sparkがパーティション間のデータを再配分するときに発生します。ネットワーク転送、直列化、ディスク入出力、調整が必要です。中間結果が大きい、または頻出キーがあると一部タスクが遅延・メモリ不足になります。
早期絞り込み、必要列だけの選択、事前集約、小表のbroadcast join、適切なパーティション、偏りへのsalting、不要なdistinct・orderByの削減で抑えます。Spark UIでstage、shuffle read・write、spill、タスク時間、executorメモリを確認します。
想定される追加質問
データの偏りは何によって起きますか?
broadcast joinを使うのはいつですか?
遅いSparkジョブをどう調査しますか?
上級 · SPARKの性能
メモリ不足で失敗するSparkジョブをどう最適化しますか?
回答の組み立て — stage特定 → データ削減 → 偏り修正 → パーティション調整 → 問題操作の除去
Spark UIとログで、失敗するstage、操作、パーティション、executorを特定します。偏り、大規模結合、collect()、大きすぎるパーティション、非効率なUDF、過剰なキャッシュが原因になり得ます。
早期に条件と列選択を適用し、partition pruning、broadcast join、頻出キーへのsalting、パーティション数を見直します。大きなcollect()や、組み込み関数で代替できるPython UDFを除き、再利用データだけをキャッシュします。メモリ増強より、分布と実行計画の改善を優先します。
想定される追加質問
偏りをどう検出しますか?
パーティションが多すぎると何が問題ですか?
DataFrameをキャッシュするのはいつですか?
初級 · ファイル形式
分析用途でCSVよりParquetが好まれるのはなぜですか?
回答の組み立て — 列指向、スキーマ、圧縮、predicate pushdown
Parquetは列単位で保存し、型とスキーマを保持し、効率的に圧縮し、列絞り込みとpredicate pushdownを可能にします。分析クエリは一部列だけ読むことが多いため、走査量を減らせます。
CSVは移植しやすいテキストですが、型を持たず、大きく、遅く、区切り・エスケープの問題があります。小規模な出力や交換には適しますが、データレイクやウェアハウスの主要形式にはParquetが通常高速で安価です。
想定される追加質問
predicate pushdownとは何ですか?
CSVが適するのはいつですか?
小さなファイルが多いと性能へどう影響しますか?
データ品質と可観測性 不良データがダッシュボード、モデル、財務報告、製品機能を損なう前に検知できるかを評価します。
中級 · データ品質
重要な売上パイプラインへどの品質検査を追加しますか?
回答の組み立て — 鮮度 → 完全性 → 一意性 → 妥当性 → 照合
鮮度、行数、主キーの空値、重複取引、有効な状態・通貨、許容範囲の金額・日付、注文・決済・返金・顧客間の参照整合性を確認します。
売上を決済系または財務へ照合し、季節性を考慮して前日・前週との差を監視します。試験・取消を除外し、純売上から返金を引き、通貨を正しく換算します。各アラートには責任者、対応、対象表、重大度、下流影響、手順書が必要です。
想定される追加質問
アラート閾値をどう設定しますか?
月次締め中に失敗したらどうしますか?
売上の重複計上をどう防ぎますか?
中級 · 障害対応
パイプライン公開後、ダッシュボードの値が予想外に変わりました。どうしますか?
回答の組み立て — 影響評価 → 版比較 → リネージ追跡 → 緩和 → 原因修正
対象ダッシュボード、指標、利用者、期間、意思決定を確認し、新しい値が誤りか、以前の誤りを直したものかを見極めます。旧版と新版を表、パーティション、行数、一意値、合計、セグメントで比較し、リネージに沿って変更を追います。コード、スキーマ、条件、結合、重複除去、日付も確認します。
誤りなら変換または表の版を戻し、画面を停止・注記し、正しいデータを再構築します。影響、確信度、復旧見込み、過去の判断を見直す必要があるかを伝えます。
想定される追加質問
どちらの値が正しいかどう判断しますか?
どのロールバック手段を用意しますか?
リネージはどのように役立ちますか?
計算例
データ障害の運用チェックリスト
経営会議の2時間前に、売上ダッシュボードへ昨日分が反映されていません。
切り分け
パイプライン状態、上流鮮度、ウェアハウスのパーティション、失敗タスク、影響範囲を確認します。
緩和
元データがあればパーティションを再実行し、なければ画面へ注記し、最後の信頼できる値と限界を示します。
連絡
影響するデータと判断、復旧見込み、値が今後変わる可能性を説明します。
再発防止
鮮度アラート、上流検査、SLA監視、売上障害の手順書を追加します。
結果
技術的な復旧と明確な連絡を組み合わせることで、信頼を守れます。
データエンジニアリングのシステム設計 情報源、取り込み、保存、変換、提供、品質、リネージ、ガバナンス、費用に関する判断を評価します。
上級 · データシステム設計
プロダクト分析イベントのデータ基盤を設計してください。
回答の組み立て — 計測 → 取り込み → 保存 → 処理 → モデリング → 提供 → ガバナンス
容量、遅延、利用者、保存期間、スキーマ進化、プライバシー、信頼性を確認します。クライアントはSDKからevent_name、利用者・セッションID、時刻、属性、アプリ版、プラットフォームを含む型付きイベントを送ります。収集系は耐久ストリームへ書き、生イベントを再生用のオブジェクトストレージと分析用ウェアハウス・レイクハウスへ保存します。
処理ではスキーマ検証、重複除去、ボット・社内利用者除外、セッション化、ID解決を行い、fact_events、fact_sessions、dim_users、データマートを作ります。契約、スキーマレジストリ、個人情報・同意ルール、リネージ、責任者、鮮度・容量アラートで守り、BI、実験、reverse ETL、feature storeへ提供します。
想定される追加質問
スキーマ進化をどう扱いますか?
イベントをどう重複除去しますか?
アナリストはどの表を使いますか?
上級 · 機械学習データ基盤
機械学習チーム向けのfeature storeを設計してください。
回答の組み立て — オフライン・オンライン整合 → 定義 → 鮮度 → 提供 → 監視
feature storeは学習と提供に再利用できる信頼性の高い特徴量を用意します。オフライン特徴量は日時・実体別にウェアハウスまたはレイクハウスへ、オンライン特徴量は低遅延のキー値ストアへ保存します。レジストリには名称、責任者、実体キー、変換、鮮度SLA、情報源、説明を記録します。
point-in-time correctnessで学習時に未来情報を使わないようにします。オンライン・オフライン変換は共通ロジックまたは厳格な比較テストを使います。鮮度、空値、分布ドリフト、提供遅延、training-serving skew、モデル影響を監視し、個人情報、リネージ、権限、廃止を統制します。
想定される追加質問
point-in-time correctnessとは何ですか?
training-serving skewをどう防ぎますか?
オンライン提供が必要な特徴量は何ですか?
行動・協働の質問 本番責任、障害、部門横断の説明、優先順位、他チームが信頼できる基盤作りを扱います。
中級 · 行動と障害対応
対応したデータパイプライン障害について教えてください。
回答の組み立て — 影響 → 切り分け → 緩和 → 原因 → 再発防止
欠損、誤指標、重複、停止したダッシュボード、製品機能への影響など実害のある障害を選びます。誰がなぜ影響を受けたかを先に説明し、ログ、オーケストレーター、元データ鮮度、デプロイ、スキーマ、行数、パーティション、リネージでの切り分けと、再試行、ロールバック、修正、バックフィル、注記による緩和を説明します。
品質検査、アラート、契約、冪等な書込み、手順書、リネージ、安全な公開などの再発防止で締めます。責任と説明を示し、誰かを責めません。
想定される追加質問
影響をどう伝えましたか?
何があればより早く検知できましたか?
再発をどう防ぎましたか?
中級 · 関係者とのコミュニケーション
データが間違っていると言うアナリストとどう協働しますか?
回答の組み立て — 確認 → 再現 → リネージ追跡 → 解決 → 文書化
指標、表、期間、条件、期待値、事業上の根拠を具体化します。クエリを再現し、粒度、条件、結合、タイムゾーン、鮮度、定義、リネージ上の変更を確認します。
誤りなら修正して影響を伝えます。技術的には正しくても定義が異なるなら、事業定義へ合意して文書化します。未確定なら、分かっていること、確認中のこと、回答予定を伝えます。迅速で証拠に基づく対応が信頼を作ります。
想定される追加質問
表が誤用されている場合はどうしますか?
同じ混乱をどう防ぎますか?
最も役立つ文書は何ですか?
中級 · 優先順位
データエンジニアリングの仕事をどう優先しますか?
回答の組み立て — 影響 → 信頼性 → 緊急性 → 依存関係 → 波及効果
事業影響、信頼性リスク、緊急性、下流依存、波及効果で優先します。売上パイプライン停止や規制リスクは任意のモデルより先です。一つの基盤改善が多数の個別依頼より価値を生む場合もあります。
障害、戦略的基盤作業、依頼、技術的負債、運用負荷を分けます。責任者、SLA、重大度、ロードマップ、明確なトレードオフを使い、何を延期し、どのリスクを受け入れるかを共有します。
想定される追加質問
技術的負債への投資をどう説明しますか?
経営陣から緊急依頼が来たらどうしますか?
障害対応とロードマップをどう両立しますか?
データエンジニア面接の準備戦略 SQL、データモデリング、Python、パイプライン設計、分散処理、クラウドウェアハウス、本番経験を組み合わせます。
6週間の準備プラン
1
第1週:結合、ウィンドウ、重複除去、増分モデル、パーティション、性能を含むSQL。
2
第2週:ファクト、ディメンション、粒度、SCD、イベント、データマート、指標定義。
3
第3週:ETL・ELT、冪等性、オーケストレーション、バックフィル、遅延データ、スキーマ、品質。
4
第4週:Spark、シャッフル、パーティション、偏り、ファイル形式、ストリーミング、費用。
5
第5週:プロダクト分析、CDC、feature store、不正検知パイプライン、ウェアハウス構成。
6
第6週:模擬面接と、障害、品質、関係者、基盤改善の経験談。
領域別の重点
—
Analytics Engineering:dbt、SQLモデル、セマンティック層、指標、BI信頼性、関係者。
—
プラットフォーム:取り込み、オーケストレーション、リネージ、ガバナンス、アクセス、開発者体験。
—
ストリーミング:Kafka、Flink、Spark Streaming、状態、窓、重複、順序、再生、遅延。
—
機械学習向け:特徴量パイプラインとストア、point-in-time correctness、学習データ、監視。
—
クラウドウェアハウス:Snowflake、BigQuery、Databricks、パーティション、クラスタリング、費用、負荷管理。
ツール名だけを並べない
Airflow、dbt、Spark、Kafkaの名前より、信頼性、データの正確性、トレードオフ、障害時の振る舞いを理解していることが重要です。
要点
優れた回答は、正しいSQL、明確なモデル、信頼できるパイプライン、分散処理の判断、本番責任を組み合わせます。他チームが安心して使えるデータ基盤を作る力を示しましょう。