Kafka面接では、どのような質問が出ますか?

文責 Aaron Cao · 更新

Kafka面接では、どのような質問が出ますか?
主に4つの層があります。基本概念(トピック、パーティション、オフセット、コンシューマーグループ)、配信保証(at-least-once、exactly-once、冪等プロデューサー)、運用(レプリケーション、同期レプリカ、保持、リバランス)、そしてパーティション数の算定、キーの選択、障害対応を問う設計シナリオです。面接官は、それぞれの回答の背後にある理由を掘り下げます。

主に4つの層があります。基本概念(トピック、パーティション、オフセット、コンシューマーグループ)、配信保証(at-least-once、exactly-once、冪等プロデューサー)、運用(レプリケーション、同期レプリカ、保持、リバランス)、そしてパーティション数の算定、キーの選択、障害対応を問う設計シナリオです。面接官は、それぞれの回答の背後にある理由を掘り下げます。

面接官が最初に確認するKafkaの基本概念は何ですか?

Kafkaが分散ログであることはすでに理解していても、面接官が日常的な利用経験より一段深く掘り下げるのではないかと不安かもしれません。実際、質問はまさにそこへ進みます。このセクションでは、面接官が通常たどる順序で用語を説明し、各用語の後に続く質問も示します。

  • トピックとパーティション。トピックは複数のパーティションに分割され、各パーティションは追記専用の順序付きログです。追加質問:Kafkaが単一ログを高速化するのではなく、パーティションを追加して書き込みを拡張するのはなぜですか?
  • オフセット。パーティション内におけるコンシューマーの位置です。追加質問:コミット済みオフセットは誰が保存し、コンシューマーがコミット前にクラッシュするとどうなりますか?
  • コンシューマーグループ。同じグループのコンシューマーはトピックのパーティションを分担し、ある時点で1つのパーティションを担当できるのは、そのグループ内の最大1つのコンシューマーです。追加質問:グループ内のコンシューマー数がパーティション数を上回ると、スループットはどうなりますか?
  • ブローカーとコントローラー。ブローカーはパーティションを保存し、コントローラーはリーダー選出とメタデータを管理します。追加質問:Kafkaのメタデータ管理がZooKeeperからKRaftへ移行した際、何が変わりましたか?
  • プロデューサーとキー。キー付きメッセージは、そのキーのハッシュ値で選ばれたパーティションに送られ、キーなしメッセージは複数のパーティションに分散されます。追加質問:顧客1人分のイベントの順序を維持できるのは、どちらですか?

決まり文句ではなく、仕組みを説明してください。パーティションが並列性をもたらすと言うだけでは最低条件にすぎません。順序が保証されるのはパーティション内だけであり、そのためキーが順序保証の範囲を決めると説明できれば、次の選考へ進める回答になります。

配信保証とレプリケーションはどのように質問されますか?

多くの候補者が点を落とすのがこの層です。用語は簡単でも、トレードオフは簡単ではないからです。面接官が保証条件を提示し、設定を組み合わせてそれを実現するよう求める質問を想定してください。

  • At-most-onceとat-least-once。処理前にオフセットをコミットするとメッセージを失う可能性があり、先に処理して後からコミットすると同じメッセージを2回処理する可能性があります。各順序がどの障害を許容するのか、そして自分のシステムではどちらを選ぶのかを説明してください。
  • 冪等プロデューサーとexactly-once。冪等プロデューサーはパーティション内で再試行の重複を排除します。トランザクションは、それを複数のパーティションと、consume-transform-produceループ内のコンシューマーオフセットにまで拡張します。exactly-onceが対象にしないものも説明できるようにしてください。トランザクション外の下流データベースへの書き込みは、依然として自分で対処すべき問題です。
  • acks、レプリケーション係数、同期レプリカ。acks=allは同期レプリカ集合への反映を待ち、min.insync.replicasは書き込みを拒否するまでその集合をどこまで縮小できるかを設定します。面接官は、ここで耐久性と引き換えに何を失うかをよく尋ねます。答えは、ブローカー喪失時のレイテンシーと可用性です。
  • 保持とコンパクション。時間またはサイズに基づく保持では古いセグメントを削除し、ログコンパクションではキーごとの最新レコードを保持します。追加質問:キーバリューストアの変更履歴を支えるのはどちらで、それはなぜですか?
  • リバランス。コンシューマーが参加または離脱すると、パーティションが再割り当てされます。追加質問:長時間のリバランスはレイテンシーに敏感なサービスへどのような影響を与え、協調的リバランスと静的メンバーシップはどう負担を軽減しますか?

役立つ習慣は、挙げた設定ごとに、それが防ぐ障害と、それによって増えるコストを説明することです。この構成なら、元の質問と追加質問へ一息で答えられます。

設計問題やシナリオ問題はどのような内容ですか?

シニア向けの面接では、定義の代わりにシナリオが提示され、思考過程が観察されます。典型的な問題では、決済企業のプラットフォーム職を志望するバックエンドエンジニアが、同一口座の全取引を順番に処理し、トラフィックに応じてスループットを拡張でき、ブローカー障害でもデータを失わないイベントパイプラインの設計を求められます。優れた回答では、口座IDをキーにして同一口座のイベントを同じパーティションへ送り、予想ピークと将来の成長余地を踏まえてパーティション数を決め、耐久性のためにレプリケーションとacks=allを設定します。さらに、クラッシュ時に処理を飛ばさず再実行できるよう、コンシューマーがオフセットをコミットする方法も説明します。

ほかにも繰り返し出るシナリオがあります。遅延するコンシューマーについて、ラグを検出して追いつく方法。後悔することになったトピックのパーティション数と、再パーティション化によってキー順序が崩れる理由。コンシューマーをクラッシュさせる有害メッセージと、それを隔離するデッドレターパターン。プロデューサーとコンシューマーにまたがるスキーマ変更と、スキーマレジストリがもたらす価値です。面接官が探しているのは、唯一の正解となるアーキテクチャではありません。制約を特定し、仕組みを選び、トレードオフを言葉にすることを求めています。

面接前には、読むだけでなく声に出して練習してください。追加質問で掘り下げるAI面接官とシナリオ問題を練習するために、模擬面接ページの練習モードがあります。また、職種別・トピック別の幅広い問題集は、職種別・トピック別の面接質問にあります。

AI面接アシスタントはKafkaの質問に役立ちますか?

対話形式の面接なら、誠実な範囲内で役立ちます。SubcueAIのネイティブmacOSおよびWindowsデスクトップアプリは、面接官の音声と自分のマイク音声を取り込み、短い回答候補をローカルオーバーレイに表示します。そのため、面接官からmin.insync.replicasが何を防ぐのか聞かれたとき、画面上の仕組みを確認しながら自分の言葉で説明できます。ブラウザー拡張機能もブラウザータブ上の通話で同様に動作し、会議タブの音声だけを取り込みます。どちらも通話にボットを追加せず、会議ページへ何かを注入することもありません。設定手順はチュートリアルページにあります。

宣伝文句よりも制限事項が重要です。監督付きコーディング試験、画面を録画する試験、会社管理のノートPCは対象外であり、監視下でコンシューマーを実装するライブコーディング課題は自分自身で取り組む必要があります。アシスタントが最も得意なのは、上記の用語やトレードオフに関する質問であり、評価プラットフォームへ入力する課題には適していません。利用する前に履歴書を読み込ませ、提案内容が実際に経験したKafka業務を反映するようにしてください。そのプロフィールは履歴書ビルダーで管理できます。

よくある質問

Kafkaが順序を保証できるのは、なぜパーティション内だけなのですか?

各パーティションは1つのリーダーが書き込む単一の順序付きログですが、異なるパーティションは別々のブローカーに配置され、独立して消費されます。パーティション間の順序保証には調整処理が必要となり、パーティションが提供する並列性が失われます。

Kafkaにおけるat-least-onceとexactly-onceの違いは何ですか?

At-least-onceでは、障害後にメッセージが再配信される可能性があるため、コンシューマーは重複を許容する必要があります。Exactly-onceは冪等プロデューサーとトランザクションを組み合わせ、Kafka内の再試行とオフセットコミットをアトミックにします。Kafka外への影響には、依然として独自の冪等性が必要です。

コンシューマーグループには何個のコンシューマーが必要ですか?

有効なのは、パーティションごとに最大1つのアクティブなコンシューマーで、それを超えるコンシューマーは待機します。コンシューマー数がパーティション数より少なくても問題はなく、それぞれが複数のパーティションを読み取ります。したがって、パーティション数の選択によってコンシューマー並列性の上限が決まります。

Kafkaブローカーに障害が発生すると、どうなりますか?

そのブローカーがリーダーだったパーティションは、コントローラーが選んだ別のブローカー上の同期レプリカへフェイルオーバーします。レプリケーションが設定され、acks=allを使用していれば、確認済みの書き込みは保持されます。未確認の書き込みはプロデューサーによって再試行されます。

SubcueAIはKafkaのコーディング評価中に役立ちますか?

いいえ。監督付きまたは録画式の評価は対象外です。誠実な利用方法は、概念やトレードオフを説明する対話形式の面接で使うことです。本番の通話前に両方を練習する場所として、模擬面接モードがあります。

関連する質問

← 詳しく見る: 職種・トピック別の面接質問