Kafka 面試通常會問哪些問題?

作者 Aaron Cao · 更新於

Kafka 面試通常會問哪些問題?
通常會涵蓋四個層面:核心概念(主題、分區、位移量、消費者群組)、傳遞保證(至少一次、恰好一次、冪等生產者)、維運(複寫、同步副本、保留、重新平衡),以及要求你估算分區數、選擇鍵並處理故障的設計情境。面試官會追問每個答案背後的原因。

通常會涵蓋四個層面:核心概念(主題、分區、位移量、消費者群組)、傳遞保證(至少一次、恰好一次、冪等生產者)、維運(複寫、同步副本、保留、重新平衡),以及要求你估算分區數、選擇鍵並處理故障的設計情境。面試官會追問每個答案背後的原因。

每位面試官最先檢查哪些 Kafka 核心概念?

你已經知道 Kafka 是分散式日誌,但擔心面試官會比日常使用再深入一層。這正是這類問題的方向,因此本節會依照面試官通常採用的順序講解相關術語,並指出每個術語背後的追問題。

  • 主題與分區。主題會拆分為多個分區,每個分區都是只能附加且具順序的日誌。追問:Kafka 為何透過增加分區來擴展寫入能力,而不是讓單一日誌變得更快?
  • 位移量。消費者在分區中的位置。追問:已提交的位移量由誰儲存?如果消費者在提交前當機,會發生什麼事?
  • 消費者群組。群組內的消費者會共享一個主題的分區,而同一時間內,每個分區最多只能指派給群組中的一個消費者。追問:如果群組的消費者數量多於分區數量,輸送量會如何變化?
  • 代理伺服器與控制器。代理伺服器儲存分區;控制器負責領導者選舉與中繼資料。追問:Kafka 將中繼資料從 ZooKeeper 移至 KRaft 後,有哪些改變?
  • 生產者與鍵。帶有鍵的訊息會依鍵的雜湊值落在選定的分區;沒有鍵的訊息則分散至各分區。追問:這兩種方式中,哪一種能維持單一客戶事件的順序?

回答時要說明運作機制,而不只是口號。說分區能實現平行處理只是基本要求;進一步解釋順序只存在於分區內,因此鍵會決定排序範圍,才是能讓你晉級下一輪的答案。

傳遞保證與複寫問題通常怎麼問?

多數應試者會在這個層面失分,因為相關術語很簡單,取捨卻不簡單。面試官通常會提出一項保證,並要求你透過各項設定實現它。

  • 至多一次與至少一次。若在處理前提交位移量,訊息可能遺失;若先處理再提交,同一訊息便可能處理兩次。請說明每種順序能承受哪種故障,以及你的系統偏好哪一種。
  • 冪等生產者與恰好一次。冪等生產者會在分區內對重試操作去除重複;交易則將這項能力擴展至多個分區,並涵蓋「消費、轉換、生產」流程中的消費者位移量。你也要準備說明恰好一次不會涵蓋哪些範圍:交易以外的下游資料庫寫入,仍須由你處理。
  • acks、複寫因子與同步副本。acks=all會等待同步副本集合;min.insync.replicas則設定該集合縮小到什麼程度時必須拒絕寫入。面試官常會問你為持久性付出了什麼代價:代理伺服器故障期間的延遲與可用性。
  • 保留與壓縮。依時間或大小設定的保留政策會刪除舊區段;日誌壓縮則保留每個鍵的最新記錄。追問:哪一種適合支援鍵值儲存區的變更日誌?為什麼?
  • 重新平衡。當消費者加入或離開時,系統會重新指派分區。追問:長時間的重新平衡會對延遲敏感型服務造成什麼影響?協作式重新平衡與靜態成員資格又如何減輕問題?

有個實用習慣:每當你提到一項設定,都要說明它能防止哪種故障,以及會增加什麼成本。這種回答結構能讓你一口氣答完原問題與追問題。

設計題與情境題通常是什麼樣子?

資深職位的面試流程會用情境取代定義題,觀察你的推理方式。典型題目是:一名後端工程師正在面試支付公司的平台職位,並被要求設計一條事件管線;同一帳戶的每筆交易都必須依序處理,輸送量必須隨流量成長,而且代理伺服器中斷時不能遺失資料。出色的答案會依帳戶 id 設定訊息鍵,讓同一帳戶的事件進入相同分區;根據預期尖峰估算分區數量,並為成長預留空間;設定複寫與 acks=all以確保持久性;以及解釋消費者如何提交位移量,讓當機後的處理方式是重播而非跳過。

其他常見情境包括:消費者處理落後時,如何偵測延遲並趕上進度;當你後悔某個主題的分區數量時,為何重新分區會破壞鍵的排序;有問題的訊息導致消費者當機時,如何用無效訊息佇列模式將其隔離;生產者與消費者之間的結構描述變更,以及結構描述登錄庫能帶來什麼價值。面試官不是在尋找唯一正確的架構,而是希望你指出限制條件、選擇相應機制,並明確說出其中的取捨。

面試前應該大聲練習這些題目,而不是只閱讀答案。透過會持續追問的 AI 面試官排練情境題,正是模擬面試頁面上練習模式的用途;更完整的職位與主題題庫則位於依職位與主題分類的面試題

AI 面試助手能協助回答 Kafka 問題嗎?

如果是對話式面試,可以,但必須遵守誠信界線。SubcueAI 的原生 macOS 與 Windows 桌面應用程式會擷取面試官的音訊及你的麥克風聲音,並在本機浮動視窗中顯示簡短的答案建議。因此,當面試官詢問 min.insync.replicas能防範什麼情況時,你可以在畫面上看到相關機制,再用自己的話解釋。瀏覽器擴充功能也能在瀏覽器分頁中的通話提供相同功能,而且只會擷取會議分頁的音訊。兩者都不會將機器人加入通話,也不會向會議頁面注入任何內容;設定步驟請參閱教學頁面。

這些限制比宣傳內容更重要。受監考的程式測驗、錄製畫面的測驗,或使用公司管理的筆記型電腦進行的測驗,都不在適用範圍內;若即時程式練習要求你在受觀察的情況下實作消費者,則必須由你自行完成。助手最適合協助上述術語與取捨問題,最不適合任何需要在評量平台中輸入內容的情況。使用前,請先提供履歷,讓建議反映你實際參與的 Kafka 工作;該個人資料位於履歷建立工具

常見問題

為什麼 Kafka 只能保證分區內的順序?

每個分區都是由單一領導者寫入的有序日誌,而不同分區位於不同的代理伺服器上,並且彼此獨立消費。若要維持跨分區順序,就必須進行協調,反而會消除分區原本要提供的平行處理能力。

Kafka 中至少一次與恰好一次有什麼差異?

至少一次表示訊息可能在故障後再次傳遞,因此消費者必須能容忍重複訊息。恰好一次結合冪等生產者與交易,使 Kafka 內的重試及位移量提交具備不可分割性;Kafka 以外的作用仍需要各自的冪等機制。

消費者群組應該有多少個消費者?

每個分區最多只需要一個活躍消費者;額外的消費者會處於閒置狀態。消費者少於分區並沒有問題,每個消費者只需讀取數個分區。因此,選擇分區數量也等於設定消費者平行處理能力的上限。

Kafka 代理伺服器故障時會發生什麼事?

由該代理伺服器領導的分區會容錯移轉至另一台代理伺服器上的同步副本,並由控制器選定副本。若已設定複寫並使用 acks=all,已確認的寫入會保留下來;未確認的寫入則由生產者重試。

SubcueAI 能在 Kafka 程式能力評量期間提供協助嗎?

不能。受監考或錄影的評量不在適用範圍內;符合誠信原則的用途,是在對話式面試中協助你解釋概念與取捨。你應該在正式通話前,使用模擬面試模式練習這兩方面。

相關問題

← 更多關於 依職位與主題分類的面試問題