面試不落淚!精選一線大廠50道Kafka常見面試題『答案詳解』

前言

衆所周知,kafka的受歡迎程度在編程界也是首屈一指的,而且Kafka也擁有強勁的就業機會和職業前景。此外,在互聯網時代可以擁有Kafka知識對本身也是一條快速增加的道路。故,本文收集了一些一線互聯網大廠常見的Kafka面試題,並提供了詳細答案,但願能幫助到你們!java

Kafka常見面試題大全含答案

問題1:什麼是Apache Kafka?

答:Apache Kafka是一個發佈 - 訂閱開源消息代理應用程序。這個消息傳遞應用程序是用「scala」編碼的。基本上,這個項目是由Apache軟件啓動的。Kafka的設計模式主要基於事務日誌設計。面試

問題2:Kafka中有哪幾個組件?

答:Kafka最重要的元素是:sql

  • 主題:Kafka主題是一堆或一組消息。
  • 生產者:在Kafka,生產者發佈通訊以及向Kafka主題發佈消息。
  • 消費者:Kafka消費者訂閱了一個主題,而且還從主題中讀取和處理消息。
  • 經紀人:在管理主題中的消息存儲時,咱們使用Kafka Brokers。

問題3:解釋偏移的做用。

答:給分區中的消息提供了一個順序ID號,咱們稱之爲偏移量。所以,爲了惟一地識別分區中的每條消息,咱們使用這些偏移量。編程

問題4:什麼是消費者組?

答:消費者組的概念是Apache Kafka獨有的。基本上,每一個Kafka消費羣體都由一個或多個共同消費一組訂閱主題的消費者組成。設計模式

問題5:ZooKeeper在Kafka中的做用是什麼?

答:Apache Kafka是一個使用Zookeeper構建的分佈式系統。雖然,Zookeeper的主要做用是在集羣中的不一樣節點之間創建協調。可是,若是任何節點失敗,咱們還使用Zookeeper從先前提交的偏移量中恢復,由於它作週期性提交偏移量工做。安全

問題6:沒有ZooKeeper可使用Kafka嗎?

答:繞過Zookeeper並直接鏈接到Kafka服務器是不可能的,因此答案是否認的。若是以某種方式,使ZooKeeper關閉,則沒法爲任何客戶端請求提供服務。服務器

問題8:爲何Kafka技術很重要?

答:Kafka有一些優勢,所以使用起來很重要:架構

  • 高吞吐量:咱們在Kafka中不須要任何大型硬件,由於它可以處理高速和大容量數據。此外,它還能夠支持每秒數千條消息的消息吞吐量。
  • 低延遲:Kafka能夠輕鬆處理這些消息,具備毫秒級的極低延遲,這是大多數新用例所要求的。
  • 容錯:Kafka可以抵抗集羣中的節點/機器故障。
  • 耐久性:因爲Kafka支持消息複製,所以消息永遠不會丟失。這是耐久性背後的緣由之一。
  • 可擴展性:卡夫卡能夠擴展,而不須要經過添加額外的節點而在運行中形成任何停機。

問題9:Kafka的主要API有哪些?

答:Apache Kafka有4個主要API:併發

  • 生產者API
  • 消費者API
  • 流 API
  • 鏈接器API

問題10:什麼是消費者或用戶?

答:Kafka消費者訂閱一個主題,並讀取和處理來自該主題的消息。此外,有了消費者組的名字,消費者就給本身貼上了標籤。換句話說,在每一個訂閱使用者組中,發佈到主題的每一個記錄都傳遞到一個使用者實例。確保使用者實例可能位於單獨的進程或單獨的計算機上。分佈式

問題11:解釋領導者和追隨者的概念。

答:在Kafka的每一個分區中,都有一個服務器充當領導者,0到多個服務器充當追隨者的角色。

問題12:是什麼確保了Kafka中服務器的負載平衡?

答:因爲領導者的主要角色是執行分區的全部讀寫請求的任務,而追隨者被動地複製領導者。所以,在領導者失敗時,其中一個追隨者接管了領導者的角色。基本上,整個過程可確保服務器的負載平衡。

問題13:副本和ISR扮演什麼角色?

答:基本上,複製日誌的節點列表就是副本。特別是對於特定的分區。可是,不管他們是否扮演領導者的角色,他們都是如此。

此外,ISR指的是同步副本。在定義ISR時,它是一組與領導者同步的消息副本。

問題14:爲何Kafka的複製相當重要?

答:因爲複製,咱們能夠確保發佈的消息不會丟失,而且能夠在發生任何機器錯誤、程序錯誤或頻繁的軟件升級時使用。

問題15:若是副本長時間不在ISR中,這意味着什麼?

答:簡單地說,這意味着跟隨者不能像領導者收集數據那樣快速地獲取數據。

問題16:啓動Kafka服務器的過程是什麼?

答:初始化ZooKeeper服務器是很是重要的一步,由於Kafka使用ZooKeeper,因此啓動Kafka服務器的過程是:

  • 要啓動ZooKeeper服務器>bin/zooKeeper-server-start.sh config/zooKeeper.properties
  • 接下來,啓動Kafka服務器>bin/kafka-server-start.sh config/server.properties

問題17:在生產者中,什麼時候發生QueueFullException?

答:每當Kafka生產者試圖以代理的身份在當時沒法處理的速度發送消息時,一般都會發生QueueFullException。可是,爲了協做處理增長的負載,用戶須要添加足夠的代理,由於生產者不會阻止。

問題18:解釋Kafka Producer API的做用。

答:容許應用程序將記錄流發佈到一個或多個Kafka主題的API就是咱們所說的Producer API。

問題19:Kafka和Flume之間的主要區別是什麼?

答:Kafka和Flume之間的主要區別是:

  • 工具類型

    • Apache Kafka——Kafka是面向多個生產商和消費者的通用工具。
    • Apache Flume——Flume被認爲是特定應用程序的專用工具。
  • 複製功能

    • Apache Kafka——Kafka能夠複製事件。
    • Apache Flume——Flume不復制事件。

問題20:Apache Kafka是分佈式流處理平臺嗎?若是是,你能用它作什麼?

答:毫無疑問,Kafka是一個流處理平臺。它能夠幫助:

  • 輕鬆推送記錄
  • 能夠存儲大量記錄,而不會出現任何存儲問題
  • 它還能夠在記錄進入時對其進行處理。

問題21:你能用Kafka作什麼?

答:它能夠以多種方式執行,例如:

  • 爲了在兩個系統之間傳輸數據,咱們能夠用它構建實時的數據流管道。
  • 另外,咱們能夠用Kafka構建一個實時流處理平臺,它能夠對數據快速作出反應。

問題22:在Kafka集羣中保留期的目的是什麼?

答:保留期限保留了Kafka羣集中的全部已發佈記錄。它不會檢查它們是否已被消耗。此外,能夠經過使用保留期的配置設置來丟棄記錄。並且,它能夠釋放一些空間。

問題23:解釋Kafka能夠接收的消息最大爲多少?

答:Kafka能夠接收的最大消息大小約爲1000000字節。

問題24:傳統的消息傳遞方法有哪些類型?

答:基本上,傳統的消息傳遞方法有兩種,如:

  • 排隊:這是一種消費者池能夠從服務器讀取消息而且每條消息轉到其中一個消息的方法。
  • 發佈-訂閱:在發佈-訂閱中,消息被廣播給全部消費者。

問題25:ISR在Kafka環境中表明什麼?

答:ISR指的是同步副本。這些一般被分類爲一組消息副本,它們被同步爲領導者。

問題26:什麼是Kafka中的地域複製?

答:對於咱們的集羣,Kafka MirrorMaker提供地理複製。基本上,消息是經過MirrorMaker跨多個數據中心或雲區域複製的。所以,它能夠在主動/被動場景中用於備份和恢復;也能夠將數據放在離用戶更近的位置,或者支持數據位置要求。

問題27:解釋多租戶是什麼?

答:咱們能夠輕鬆地將Kafka部署爲多租戶解決方案。可是,經過配置主題能夠生成或使用數據,能夠啓用多租戶。此外,它還爲配額提供操做支持。

問題28:消費者API的做用是什麼?

答:容許應用程序訂閱一個或多個主題並處理生成給它們的記錄流的API,咱們稱之爲消費者API。

問題29:解釋流API的做用?

答:一種容許應用程序充當流處理器的API,它還使用一個或多個主題的輸入流,並生成一個輸出流到一個或多個輸出主題,此外,有效地將輸入流轉換爲輸出流,咱們稱之爲流API。

問題30:鏈接器API的做用是什麼?

答:一個容許運行和構建可重用的生產者或消費者的API,將Kafka主題鏈接到現有的應用程序或數據系統,咱們稱之爲鏈接器API。

問題31:解釋生產者是什麼?

答:生產者的主要做用是將數據發佈到他們選擇的主題上。基本上,它的職責是選擇要分配給主題內分區的記錄。

問題32:比較RabbitMQ與Apache Kafka

答:Apache Kafka的另外一個選擇是RabbitMQ。那麼,讓咱們比較二者:

  • 功能

    • Apache Kafka– Kafka是分佈式的、持久的和高度可用的,這裏共享和複製數據
    • RabbitMQ中沒有此類功能
  • 性能速度

    • Apache Kafka–達到每秒100000條消息。
    • RabbitMQ–每秒20000條消息。

問題33:比較傳統隊列系統與Apache Kafka

答:讓咱們比較一下傳統隊列系統與Apache Kafka的功能:

  • 消息保留

    • 傳統的隊列系統 - 它一般從隊列末尾處理完成後刪除消息。
    • Apache Kafka中,消息即便在處理後仍然存在。這意味着Kafka中的消息不會因消費者收到消息而被刪除。
  • 基於邏輯的處理

    • 傳統隊列系統不容許基於相似消息或事件處理邏輯。
    • Apache Kafka容許基於相似消息或事件處理邏輯。

問題34:爲何要使用Apache Kafka集羣?

答:爲了克服收集大量數據和分析收集數據的挑戰,咱們須要一個消息隊列系統。所以Apache Kafka應運而生。其好處是:

  • 只需存儲/發送事件以進行實時處理,就能夠跟蹤Web活動。
  • 經過這一點,咱們能夠發出警報並報告操做指標。
  • 此外,咱們能夠將數據轉換爲標準格式。
  • 此外,它容許對主題的流數據進行連續處理。
  • 因爲它的普遍使用,它秒殺了競品,如ActiveMQ,RabbitMQ等。

問題35:解釋術語「Log Anatomy」

答:咱們將日誌視爲分區。基本上,數據源將消息寫入日誌。其優勢之一是,在任什麼時候候,都有一個或多個消費者從他們選擇的日誌中讀取數據。下面的圖表顯示,數據源正在寫入一個日誌,而用戶正在以不一樣的偏移量讀取該日誌。

問題36:Kafka中的數據日誌是什麼?

答:咱們知道,在Kafka中,消息會保留至關長的時間。此外,消費者還能夠根據本身的方便進行閱讀。儘管如此,有一種可能的狀況是,若是將Kafka配置爲將消息保留24小時,而且消費者可能停機超過24小時,則消費者可能會丟失這些消息。可是,咱們仍然能夠從上次已知的偏移中讀取這些消息,但僅限於消費者的部分停機時間僅爲60分鐘的狀況。此外,關於消費者從一個話題中讀到什麼,Kafka不會保持狀態。

問題37:解釋如何調整Kafka以得到最佳性能。

答:所以,調優Apache Kafka的方法是調優它的幾個組件:

  • 調整Kafka生產者
  • Kafka代理調優
  • 調整Kafka消費者

問題38:Apache Kafka的缺陷

答:Kafka的侷限性是:

  • 沒有完整的監控工具集
  • 消息調整的問題
  • 不支持通配符主題選擇
  • 速度問題

問題39:列出全部Apache Kafka業務

答:Apache Kafka的業務包括:

  • 添加和刪除Kafka主題
  • 如何修改Kafka主題
  • 如何關機
  • 在Kafka集羣之間鏡像數據
  • 找到消費者的位置
  • 擴展您的Kafka羣集
  • 自動遷移數據
  • 退出服務器
  • 數據中心

問題40:解釋Apache Kafka用例?

答:Apache Kafka有不少用例,例如:

  • Kafka指標
  • 可使用Kafka進行操做監測數據。此外,爲了生成操做數據的集中提要,它涉及到從分佈式應用程序聚合統計信息。
  • Kafka日誌聚合
  • 從組織中的多個服務收集日誌。
  • 流處理
  • 在流處理過程當中,Kafka的強耐久性很是有用。

問題41:Kafka的一些最顯著的應用。

答:Netflix,Mozilla,Oracle

問題42:Kafka流的特色。

答:Kafka流的一些最佳功能是

  • Kafka Streams具備高度可擴展性和容錯性。
  • Kafka部署到容器,VM,裸機,雲。
  • 咱們能夠說,Kafka流對於小型,中型和大型用例一樣可行。
  • 此外,它徹底與Kafka安全集成。
  • 編寫標準Java應用程序。
  • 徹底一次處理語義。
  • 並且,不須要單獨的處理集羣。

問題43:Kafka的流處理是什麼意思?

答:連續、實時、併發和以逐記錄方式處理數據的類型,咱們稱之爲Kafka流處理。

問題44:系統工具備哪些類型?

答:系統工具備三種類型:

  • Kafka遷移工具:它有助於將代理從一個版本遷移到另外一個版本。
  • Mirror Maker:Mirror Maker工具備助於將一個Kafka集羣的鏡像提供給另外一個。
  • 消費者檢查:對於指定的主題集和消費者組,它顯示主題,分區,全部者。

問題45:什麼是複製工具及其類型?

答:爲了加強持久性和更高的可用性,這裏提供了複製工具。其類型爲

  • 建立主題工具
  • 列表主題工具
  • 添加分區工具

問題46:Java在Apache Kafka中的重要性是什麼?

答:爲了知足Kafka標準的高處理速率需求,咱們可使用java語言。此外,對於Kafka的消費者客戶,Java也提供了良好的社區支持。因此,咱們能夠說在Java中實現Kafka是一個正確的選擇。

問題47:說明Kafka的一個最佳特徵。

答:Kafka的最佳特性是「各類各樣的用例」。

這意味着Kafka可以管理各類各樣的用例,這些用例對於數據湖來講很是常見。例如日誌聚合、Web活動跟蹤等。

問題48:解釋術語「主題複製因子」。

答:在設計Kafka系統時,考慮主題複製是很是重要的。

問題50:Kafka提供的保證是什麼?

答:生產者向特定主題分區發送的消息的順序相同。

  • 此外,消費者實例按照它們存儲在日誌中的順序查看記錄。
  • 此外,即便不丟失任何提交給日誌的記錄,咱們也能夠容忍最多N-1個服務器故障。

寫在最後

一線互聯網大廠,面試所考到的知識可不止Kafka,固然多擁有一個技術點,對本身的面試也是一件好事;那麼針對Java成員,筆者整理了一套完整的已下線互聯網企業面試專題;包含了Kafka、Mysql、Tomcat、Docker、Spring、MyBatis、Nginx、Netty、Dubbo、Redis、Netty、Spring cloud、分佈式、高併發、性能調優、微服務等架構技術

須要這份面試題的朋友請點擊下方傳送門;便可免費領取完整的面試專題文件

傳送門

如下是部分面試題截圖

相關文章
相關標籤/搜索