精選19年面試常問(wèn)49道Kafka面試真題(附答案),你能回答多少?

前言

Apache Kafka的受歡迎程度很高,Kafka擁有充足的就業(yè)機(jī)會(huì)和職業(yè)前景。此外,在這個(gè)時(shí)代擁有kafka知識(shí)是一條快速增長(zhǎng)的道路。所以,在這篇文章中,我們收集了Apache Kafka面試中常見的問(wèn)題,并提供了答案。因此,如果您希望參加Apache Kafka面試,這是一份不錯(cuò)的指南。這將有助于您成功參加Kafka面試。

這是Kafka最受歡迎的面試問(wèn)題清單,以及任何面試官都可能問(wèn)到的答案。所以,繼續(xù)學(xué)習(xí)直到本文的結(jié)尾,希望對(duì)你有幫助!

一、最佳Apache Kafka面試問(wèn)題和解答

1)、什么是Apache Kafka?

:Apache Kafka是一個(gè)發(fā)布 - 訂閱開源消息代理應(yīng)用程序。這個(gè)消息傳遞應(yīng)用程序是用“scala”編碼的。基本上,這個(gè)項(xiàng)目是由Apache軟件啟動(dòng)的。Kafka的設(shè)計(jì)模式主要基于事務(wù)日志設(shè)計(jì)。

2)、Kafka中有哪幾個(gè)組件?

:Kafka最重要的元素是:

  • 主題:Kafka主題是一堆或一組消息。
  • 生產(chǎn)者:在Kafka,生產(chǎn)者發(fā)布通信以及向Kafka主題發(fā)布消息。
  • 消費(fèi)者:Kafka消費(fèi)者訂閱了一個(gè)主題,并且還從主題中讀取和處理消息。
  • 經(jīng)紀(jì)人:在管理主題中的消息存儲(chǔ)時(shí),我們使用Kafka Brokers。
3)、解釋偏移的作用。

:給分區(qū)中的消息提供了一個(gè)順序ID號(hào),我們稱之為偏移量。因此,為了唯一地識(shí)別分區(qū)中的每條消息,我們使用這些偏移量。

4)、什么是消費(fèi)者組?

:消費(fèi)者組的概念是Apache Kafka獨(dú)有的?;旧?,每個(gè)Kafka消費(fèi)群體都由一個(gè)或多個(gè)共同消費(fèi)一組訂閱主題的消費(fèi)者組成。

5)、ZooKeeper在Kafka中的作用是什么?

:Apache Kafka是一個(gè)使用Zookeeper構(gòu)建的分布式系統(tǒng)。雖然,Zookeeper的主要作用是在集群中的不同節(jié)點(diǎn)之間建立協(xié)調(diào)。但是,如果任何節(jié)點(diǎn)失敗,我們還使用Zookeeper從先前提交的偏移量中恢復(fù),因?yàn)樗鲋芷谛蕴峤黄屏抗ぷ鳌?/p>

6)、沒有ZooKeeper可以使用Kafka嗎?

:繞過(guò)Zookeeper并直接連接到Kafka服務(wù)器是不可能的,所以答案是否定的。如果以某種方式,使ZooKeeper關(guān)閉,則無(wú)法為任何客戶端請(qǐng)求提供服務(wù)。

7)、為什么Kafka技術(shù)很重要?

:Kafka有一些優(yōu)點(diǎn),因此使用起來(lái)很重要:

  • 高吞吐量:我們?cè)贙afka中不需要任何大型硬件,因?yàn)樗軌蛱幚砀咚俸痛笕萘繑?shù)據(jù)。此外,它還可以支持每秒數(shù)千條消息的消息吞吐量。
  • 低延遲:Kafka可以輕松處理這些消息,具有毫秒級(jí)的極低延遲,這是大多數(shù)新用例所要求的。
  • 容錯(cuò):Kafka能夠抵抗集群中的節(jié)點(diǎn)/機(jī)器故障。
  • 耐久性:由于Kafka支持消息復(fù)制,因此消息永遠(yuǎn)不會(huì)丟失。這是耐久性背后的原因之一。
  • 可擴(kuò)展性:卡夫卡可以擴(kuò)展,而不需要通過(guò)添加額外的節(jié)點(diǎn)而在運(yùn)行中造成任何停機(jī)。
8)、Kafka的主要API有哪些?

:Apache Kafka有4個(gè)主要API:

  • 生產(chǎn)者API
  • 消費(fèi)者API
  • 流 API
  • 連接器API
9)、什么是消費(fèi)者或用戶?

:Kafka消費(fèi)者訂閱一個(gè)主題,并讀取和處理來(lái)自該主題的消息。此外,有了消費(fèi)者組的名字,消費(fèi)者就給自己貼上了標(biāo)簽。換句話說(shuō),在每個(gè)訂閱使用者組中,發(fā)布到主題的每個(gè)記錄都傳遞到一個(gè)使用者實(shí)例。確保使用者實(shí)例可能位于單獨(dú)的進(jìn)程或單獨(dú)的計(jì)算機(jī)上。

二、比較棘手的Kafka面試問(wèn)題和答案

10)、解釋領(lǐng)導(dǎo)者和追隨者的概念。

:在Kafka的每個(gè)分區(qū)中,都有一個(gè)服務(wù)器充當(dāng)領(lǐng)導(dǎo)者,0到多個(gè)服務(wù)器充當(dāng)追隨者的角色。

11)、是什么確保了Kafka中服務(wù)器的負(fù)載平衡?

:由于領(lǐng)導(dǎo)者的主要角色是執(zhí)行分區(qū)的所有讀寫請(qǐng)求的任務(wù),而追隨者被動(dòng)地復(fù)制領(lǐng)導(dǎo)者。因此,在領(lǐng)導(dǎo)者失敗時(shí),其中一個(gè)追隨者接管了領(lǐng)導(dǎo)者的角色?;旧?,整個(gè)過(guò)程可確保服務(wù)器的負(fù)載平衡。

12)、副本和ISR扮演什么角色?

:基本上,復(fù)制日志的節(jié)點(diǎn)列表就是副本。特別是對(duì)于特定的分區(qū)。但是,無(wú)論他們是否扮演領(lǐng)導(dǎo)者的角色,他們都是如此。

此外,ISR指的是同步副本。在定義ISR時(shí),它是一組與領(lǐng)導(dǎo)者同步的消息副本。

13)、為什么Kafka的復(fù)制至關(guān)重要?

:由于復(fù)制,我們可以確保發(fā)布的消息不會(huì)丟失,并且可以在發(fā)生任何機(jī)器錯(cuò)誤、程序錯(cuò)誤或頻繁的軟件升級(jí)時(shí)使用。

14)、如果副本長(zhǎng)時(shí)間不在ISR中,這意味著什么?

:簡(jiǎn)單地說(shuō),這意味著跟隨者不能像領(lǐng)導(dǎo)者收集數(shù)據(jù)那樣快速地獲取數(shù)據(jù)。

15)、啟動(dòng)Kafka服務(wù)器的過(guò)程是什么?

:初始化ZooKeeper服務(wù)器是非常重要的一步,因?yàn)镵afka使用ZooKeeper,所以啟動(dòng)Kafka服務(wù)器的過(guò)程是:

要啟動(dòng)ZooKeeper服務(wù)器:>bin/zooKeeper-server-start.sh config/zooKeeper.properties

接下來(lái),啟動(dòng)Kafka服務(wù)器:>bin/kafka-server-start.sh config/server.properties

16)、在生產(chǎn)者中,何時(shí)發(fā)生QueueFullException?

:每當(dāng)Kafka生產(chǎn)者試圖以代理的身份在當(dāng)時(shí)無(wú)法處理的速度發(fā)送消息時(shí),通常都會(huì)發(fā)生QueueFullException。但是,為了協(xié)作處理增加的負(fù)載,用戶需要添加足夠的代理,因?yàn)樯a(chǎn)者不會(huì)阻止。

17)、解釋Kafka Producer API的作用。

:允許應(yīng)用程序?qū)⒂涗浟靼l(fā)布到一個(gè)或多個(gè)Kafka主題的API就是我們所說(shuō)的Producer API。

18)、Kafka和Flume之間的主要區(qū)別是什么?

:Kafka和Flume之間的主要區(qū)別是:

工具類型
Apache Kafka——Kafka是面向多個(gè)生產(chǎn)商和消費(fèi)者的通用工具。
Apache Flume——Flume被認(rèn)為是特定應(yīng)用程序的專用工具。

復(fù)制功能
Apache Kafka——Kafka可以復(fù)制事件。
Apache Flume——Flume不復(fù)制事件。

19)、Apache Kafka是分布式流處理平臺(tái)嗎?如果是,你能用它做什么?

:毫無(wú)疑問(wèn),Kafka是一個(gè)流處理平臺(tái)。它可以幫助:

  1. 輕松推送記錄
  2. 可以存儲(chǔ)大量記錄,而不會(huì)出現(xiàn)任何存儲(chǔ)問(wèn)題
  3. 它還可以在記錄進(jìn)入時(shí)對(duì)其進(jìn)行處理。

三、高級(jí)Kafka面試問(wèn)題

20)、你能用Kafka做什么?

:它可以以多種方式執(zhí)行,例如:

  • 為了在兩個(gè)系統(tǒng)之間傳輸數(shù)據(jù),我們可以用它構(gòu)建實(shí)時(shí)的數(shù)據(jù)流管道。

  • 另外,我們可以用Kafka構(gòu)建一個(gè)實(shí)時(shí)流處理平臺(tái),它可以對(duì)數(shù)據(jù)快速做出反應(yīng)。

21)、在Kafka集群中保留期的目的是什么?

:保留期限保留了Kafka群集中的所有已發(fā)布記錄。它不會(huì)檢查它們是否已被消耗。此外,可以通過(guò)使用保留期的配置設(shè)置來(lái)丟棄記錄。而且,它可以釋放一些空間。

22)、解釋Kafka可以接收的消息最大為多少?

:Kafka可以接收的最大消息大小約為1000000字節(jié)。

23)、傳統(tǒng)的消息傳遞方法有哪些類型?

:基本上,傳統(tǒng)的消息傳遞方法有兩種,如:

  • 排隊(duì):這是一種消費(fèi)者池可以從服務(wù)器讀取消息并且每條消息轉(zhuǎn)到其中一個(gè)消息的方法。
  • 發(fā)布-訂閱:在發(fā)布-訂閱中,消息被廣播給所有消費(fèi)者。
24)、ISR在Kafka環(huán)境中代表什么?

:ISR指的是同步副本。這些通常被分類為一組消息副本,它們被同步為領(lǐng)導(dǎo)者。

25)、什么是Kafka中的地域復(fù)制?

:對(duì)于我們的集群,Kafka MirrorMaker提供地理復(fù)制?;旧希⑹峭ㄟ^(guò)MirrorMaker跨多個(gè)數(shù)據(jù)中心或云區(qū)域復(fù)制的。因此,它可以在主動(dòng)/被動(dòng)場(chǎng)景中用于備份和恢復(fù);也可以將數(shù)據(jù)放在離用戶更近的位置,或者支持?jǐn)?shù)據(jù)位置要求。

26)、解釋多租戶是什么?

:我們可以輕松地將Kafka部署為多租戶解決方案。但是,通過(guò)配置主題可以生成或使用數(shù)據(jù),可以啟用多租戶。此外,它還為配額提供操作支持。

27)、消費(fèi)者API的作用是什么?

:允許應(yīng)用程序訂閱一個(gè)或多個(gè)主題并處理生成給它們的記錄流的API,我們稱之為消費(fèi)者API。

28)、解釋流API的作用?

:一種允許應(yīng)用程序充當(dāng)流處理器的API,它還使用一個(gè)或多個(gè)主題的輸入流,并生成一個(gè)輸出流到一個(gè)或多個(gè)輸出主題,此外,有效地將輸入流轉(zhuǎn)換為輸出流,我們稱之為流API。

29)、連接器API的作用是什么?

:一個(gè)允許運(yùn)行和構(gòu)建可重用的生產(chǎn)者或消費(fèi)者的API,將Kafka主題連接到現(xiàn)有的應(yīng)用程序或數(shù)據(jù)系統(tǒng),我們稱之為連接器API。

30)、解釋生產(chǎn)者是什么?

:生產(chǎn)者的主要作用是將數(shù)據(jù)發(fā)布到他們選擇的主題上?;旧?,它的職責(zé)是選擇要分配給主題內(nèi)分區(qū)的記錄。

31)、比較RabbitMQ與Apache Kafka

:Apache Kafka的另一個(gè)選擇是RabbitMQ。那么,讓我們比較兩者:

功能
Apache Kafka– Kafka是分布式的、持久的和高度可用的,這里共享和復(fù)制數(shù)據(jù)
RabbitMQ中沒有此類功能
性能速度
Apache Kafka–達(dá)到每秒100000條消息。
RabbitMQ–每秒20000條消息。

32)、比較傳統(tǒng)隊(duì)列系統(tǒng)與Apache Kafka

:讓我們比較一下傳統(tǒng)隊(duì)列系統(tǒng)與Apache Kafka的功能:

消息保留
傳統(tǒng)的隊(duì)列系統(tǒng) - 它通常從隊(duì)列末尾處理完成后刪除消息。

Apache Kafka中,消息即使在處理后仍然存在。這意味著Kafka中的消息不會(huì)因消費(fèi)者收到消息而被刪除。

基于邏輯的處理
傳統(tǒng)隊(duì)列系統(tǒng)不允許基于類似消息或事件處理邏輯。
Apache Kafka允許基于類似消息或事件處理邏輯。

33)、為什么要使用Apache Kafka集群?

:為了克服收集大量數(shù)據(jù)和分析收集數(shù)據(jù)的挑戰(zhàn),我們需要一個(gè)消息隊(duì)列系統(tǒng)。因此Apache Kafka應(yīng)運(yùn)而生。其好處是:

  • 只需存儲(chǔ)/發(fā)送事件以進(jìn)行實(shí)時(shí)處理,就可以跟蹤Web活動(dòng)。
  • 通過(guò)這一點(diǎn),我們可以發(fā)出警報(bào)并報(bào)告操作指標(biāo)。
  • 此外,我們可以將數(shù)據(jù)轉(zhuǎn)換為標(biāo)準(zhǔn)格式。
  • 此外,它允許對(duì)主題的流數(shù)據(jù)進(jìn)行連續(xù)處理。

由于它的廣泛使用,它秒殺了競(jìng)品,如ActiveMQ,RabbitMQ等。

34)、解釋術(shù)語(yǔ)“Log Anatomy”

:我們將日志視為分區(qū)?;旧?,數(shù)據(jù)源將消息寫入日志。其優(yōu)點(diǎn)之一是,在任何時(shí)候,都有一個(gè)或多個(gè)消費(fèi)者從他們選擇的日志中讀取數(shù)據(jù)。下面的圖表顯示,數(shù)據(jù)源正在寫入一個(gè)日志,而用戶正在以不同的偏移量讀取該日志。

35)、Kafka中的數(shù)據(jù)日志是什么?

:我們知道,在Kafka中,消息會(huì)保留相當(dāng)長(zhǎng)的時(shí)間。此外,消費(fèi)者還可以根據(jù)自己的方便進(jìn)行閱讀。盡管如此,有一種可能的情況是,如果將Kafka配置為將消息保留24小時(shí),并且消費(fèi)者可能停機(jī)超過(guò)24小時(shí),則消費(fèi)者可能會(huì)丟失這些消息。但是,我們?nèi)匀豢梢詮纳洗我阎钠浦凶x取這些消息,但僅限于消費(fèi)者的部分停機(jī)時(shí)間僅為60分鐘的情況。此外,關(guān)于消費(fèi)者從一個(gè)話題中讀到什么,Kafka不會(huì)保持狀態(tài)。

36)、解釋如何調(diào)整Kafka以獲得最佳性能。

:因此,調(diào)優(yōu)Apache Kafka的方法是調(diào)優(yōu)它的幾個(gè)組件:

  • 調(diào)整Kafka生產(chǎn)者
  • Kafka代理調(diào)優(yōu)
  • 調(diào)整Kafka消費(fèi)者
37)、Apache Kafka的缺陷

:Kafka的局限性是:

  • 沒有完整的監(jiān)控工具集
  • 消息調(diào)整的問(wèn)題
  • 不支持通配符主題選擇
  • 速度問(wèn)題
38)、列出所有Apache Kafka業(yè)務(wù)

:Apache Kafka的業(yè)務(wù)包括:

  • 添加和刪除Kafka主題
  • 如何修改Kafka主題
  • 如何關(guān)機(jī)
  • 在Kafka集群之間鏡像數(shù)據(jù)
  • 找到消費(fèi)者的位置
  • 擴(kuò)展您的Kafka群集
  • 自動(dòng)遷移數(shù)據(jù)
  • 退出服務(wù)器
  • 數(shù)據(jù)中心
39)、解釋Apache Kafka用例?

:Apache Kafka有很多用例,例如:

  • Kafka指標(biāo)
  • 可以使用Kafka進(jìn)行操作監(jiān)測(cè)數(shù)據(jù)。此外,為了生成操作數(shù)據(jù)的集中提要,它涉及到從分布式應(yīng)用程序聚合統(tǒng)計(jì)信息。
  • Kafka日志聚合

從組織中的多個(gè)服務(wù)收集日志。

  • 流處理
  • 在流處理過(guò)程中,Kafka的強(qiáng)耐久性非常有用。

四、基于特征的Kafka面試問(wèn)題

40)、Kafka的一些最顯著的應(yīng)用。

:Netflix,Mozilla,Oracle

41)、Kafka流的特點(diǎn)。

:Kafka流的一些最佳功能是

  • Kafka Streams具有高度可擴(kuò)展性和容錯(cuò)性。
  • Kafka部署到容器,VM,裸機(jī),云。
  • 我們可以說(shuō),Kafka流對(duì)于小型,中型和大型用例同樣可行。
  • 此外,它完全與Kafka安全集成。
  • 編寫標(biāo)準(zhǔn)Java應(yīng)用程序。
  • 完全一次處理語(yǔ)義。
  • 而且,不需要單獨(dú)的處理集群。
42)、Kafka的流處理是什么意思?

:連續(xù)、實(shí)時(shí)、并發(fā)和以逐記錄方式處理數(shù)據(jù)的類型,我們稱之為Kafka流處理。

43)、系統(tǒng)工具有哪些類型?

:系統(tǒng)工具有三種類型:

Kafka遷移工具:它有助于將代理從一個(gè)版本遷移到另一個(gè)版本。
Mirror Maker:Mirror Maker工具有助于將一個(gè)Kafka集群的鏡像提供給另一個(gè)。
消費(fèi)者檢查:對(duì)于指定的主題集和消費(fèi)者組,它顯示主題,分區(qū),所有者。

44)、什么是復(fù)制工具及其類型?

:為了增強(qiáng)持久性和更高的可用性,這里提供了復(fù)制工具。其類型為

  • 創(chuàng)建主題工具
  • 列表主題工具
  • 添加分區(qū)工具
45)、Java在Apache Kafka中的重要性是什么?

:為了滿足Kafka標(biāo)準(zhǔn)的高處理速率需求,我們可以使用java語(yǔ)言。此外,對(duì)于Kafka的消費(fèi)者客戶,Java也提供了良好的社區(qū)支持。所以,我們可以說(shuō)在Java中實(shí)現(xiàn)Kafka是一個(gè)正確的選擇。

46)、說(shuō)明Kafka的一個(gè)最佳特征。

:Kafka的最佳特性是“各種各樣的用例”。

這意味著Kafka能夠管理各種各樣的用例,這些用例對(duì)于數(shù)據(jù)湖來(lái)說(shuō)非常常見。例如日志聚合、Web活動(dòng)跟蹤等。

47)、解釋術(shù)語(yǔ)“主題復(fù)制因子”。

:在設(shè)計(jì)Kafka系統(tǒng)時(shí),考慮主題復(fù)制是非常重要的。

48)、解釋一些Kafka流實(shí)時(shí)用例。

:《紐約時(shí)報(bào)》:該公司使用它來(lái)實(shí)時(shí)存儲(chǔ)和分發(fā)已發(fā)布的內(nèi)容到各種應(yīng)用程序和系統(tǒng),使其可供讀者使用。基本上,它使用Apache Kafka和Kafka流。

  • Zalando:作為ESB(企業(yè)服務(wù)總線)作為歐洲領(lǐng)先的在線時(shí)尚零售商,Zalando使用Kafka。

  • LINE:基本上,為了相互通信,LINE應(yīng)用程序使用Apache Kafka作為其服務(wù)的中心數(shù)據(jù)中心。

49)、Kafka提供的保證是什么?

:他們是

  • 生產(chǎn)者向特定主題分區(qū)發(fā)送的消息的順序相同。
  • 此外,消費(fèi)者實(shí)例按照它們存儲(chǔ)在日志中的順序查看記錄。
  • 此外,即使不丟失任何提交給日志的記錄,我們也可以容忍最多N-1個(gè)服務(wù)器故障。

最后

針對(duì)于上面的面試問(wèn)到的知識(shí)點(diǎn)我總結(jié)出了互聯(lián)網(wǎng)公司java程序員面試涉及到的絕大部分面試題及答案做成了文檔和架構(gòu)視頻資料免費(fèi)分享給大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并發(fā)等架構(gòu)技術(shù)資料),希望能幫助到您面試前的復(fù)習(xí)且找到一個(gè)好的工作,也節(jié)省大家在網(wǎng)上搜索資料的時(shí)間來(lái)學(xué)習(xí),也可以關(guān)注我一下以后會(huì)有更多干貨分享

資料領(lǐng)取方式:加QQ群909666042,進(jìn)群既領(lǐng)取資料!
點(diǎn)擊鏈接加入群聊【Java程序員匯集交流群】:https://jq.qq.com/?_wv=1027&k=5wEVPYC

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容