關於Kafka
Kafka是由Apache軟件基金會開發的一個開源流處理平臺,由Scala和Java編寫。Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,它能夠處理消費者規模的網站中的全部動做流數據。 這種動做(網頁瀏覽,搜索和其餘用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。 這些數據一般是因爲吞吐量的要求而經過處理日誌和日誌聚合來解決。 對於像Hadoop的同樣的日誌數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是經過Hadoop的並行加載機制來統一線上和離線的消息處理,也是爲了經過集羣來提供實時的消息。java
有不少人問過我要過Kafka相關的面試題,我一直懶得整理,這幾天花了點時間,結合以前面試被問過的、別人諮詢過的、我會問別人的進行了相關的整理,也就幾十題,你們花個幾分鐘看看應該都會。面試題列表以下:面試
Kafka的面試題
- Kafka的用途有哪些?使用場景如何?
- Kafka中的ISR、AR又表明什麼?ISR的伸縮又指什麼
- Kafka中的HW、LEO、LSO、LW等分別表明什麼?
- Kafka中是怎麼體現消息順序性的?
- Kafka中的分區器、序列化器、攔截器是否瞭解?它們之間的處理順序是什麼?
- Kafka生產者客戶端的總體結構是什麼樣子的?
- Kafka生產者客戶端中使用了幾個線程來處理?分別是什麼?
- Kafka的舊版Scala的消費者客戶端的設計有什麼缺陷?
- 「消費組中的消費者個數若是超過topic的分區,那麼就會有消費者消費不到數據」這句話是否正確?若是不正確,那麼有沒有什麼hack的手段?
- 消費者提交消費位移時提交的是當前消費到的最新消息的offset仍是offset+1?
- 有哪些情形會形成重複消費?
- 那些情景下會形成消息漏消費?
- KafkaConsumer是非線程安全的,那麼怎麼樣實現多線程消費?
- 簡述消費者與消費組之間的關係
- 當你使用kafka-topics.sh建立(刪除)了一個topic以後,Kafka背後會執行什麼邏輯?
- topic的分區數可不能夠增長?若是能夠怎麼增長?若是不能夠,那又是爲何?
- topic的分區數可不能夠減小?若是能夠怎麼減小?若是不能夠,那又是爲何?
- 建立topic時如何選擇合適的分區數?
- Kafka目前有那些內部topic,它們都有什麼特徵?各自的做用又是什麼?
- 優先副本是什麼?它有什麼特殊的做用?
- Kafka有哪幾處地方有分區分配的概念?簡述大體的過程及原理
- 簡述Kafka的日誌目錄結構
- Kafka中有那些索引文件?
- 若是我指定了一個offset,Kafka怎麼查找到對應的消息?
- 若是我指定了一個timestamp,Kafka怎麼查找到對應的消息?
- 聊一聊你對Kafka的Log Retention的理解
- 聊一聊你對Kafka的Log Compaction的理解
- 聊一聊你對Kafka底層存儲的理解(頁緩存、內核層、塊層、設備層)
- 聊一聊Kafka的延時操做的原理
- 聊一聊Kafka控制器的做用
- 消費再均衡的原理是什麼?(提示:消費者協調器和消費組協調器)
- Kafka中的冪等是怎麼實現的
- Kafka中的事務是怎麼實現的(這題我去面試6加被問4次,照着答案念也要念十幾分鍾,面試官簡直湊不要臉。實在記不住的話...只要簡歷上不寫精通Kafka通常不會問到,我簡歷上寫的是「熟悉Kafka,瞭解RabbitMQ....」)
- Kafka中有那些地方須要選舉?這些地方的選舉策略又有哪些?
- 失效副本是指什麼?有那些應對措施?
- 多副本下,各個副本中的HW和LEO的演變過程
- 爲何Kafka不支持讀寫分離?
- Kafka在可靠性方面作了哪些改進?(HW, LeaderEpoch)
- Kafka中怎麼實現死信隊列和重試隊列?
- Kafka中的延遲隊列怎麼實現(這題被問的比事務那題還要多!!!據說你會Kafka,那你說說延遲隊列怎麼實現?)
- Kafka中怎麼作消息審計?
- Kafka中怎麼作消息軌跡?
- Kafka中有那些配置參數比較有意思?聊一聊你的見解
- Kafka中有那些命名比較有意思?聊一聊你的見解
- Kafka有哪些指標須要着重關注?
- 怎麼計算Lag?(注意read_uncommitted和read_committed狀態下的不一樣)
- Kafka的那些設計讓它有如此高的性能?
- Kafka有什麼優缺點?
- 還用過什麼同質類的其它產品,與Kafka相比有什麼優缺點?
- 爲何選擇Kafka?
- 在使用Kafka的過程當中遇到過什麼困難?怎麼解決的?
- 怎麼樣才能確保Kafka極大程度上的可靠性?
- 聊一聊你對Kafka生態的理解
通常來講面試官關於Kafka會問的問題都是這些!若是上面的問題都能掌握,相信在面試Kafka的時候確定可以徹底應付緩存
面試答案領取方式:關注+轉發+收藏加入羣聊809389099便可免費獲取哦!安全
關於優化的腦圖,各位能夠收藏一下!網絡
若是對本文內容仍是不太理解的話,小編這裏也整理了一套學習資料!多線程
資料領取方式:關注+轉發+收藏後私信【java】便可免費獲取分佈式
對這篇文章有不一樣的見解,歡迎在下面評論區留言!oop