2022年Java秋招面試,程序員求職必看的ZooKeeper面試題

前言

大公司面試特別喜歡問 Zookeeper,因為 Zookeeper 確實是足夠的優秀,比如他的 Paxos 算法,Zab 協議,Leader 選舉策略,分布式鎖等都是大廠面試的高頻考點。我們不僅需要熟悉使用 Zookeeper,更要了解他的底層原理,這樣不論是工作還是學習都是游刃有余。

小編分享的這份2022年Java秋招備戰面試題總計有1000多道面試題,包含了MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Java 并發編程、Java基礎、Spring、微服務、Linux、Spring Boot 、Spring Cloud、RabbitMQ、kafka等16個專題技術點,都是小編在今年金三銀四總結出來的面試真題,已經有很多粉絲靠這份PDF拿下眾多大廠的offer,今天在這里總結分享給到大家!【持續更新中!】

序號 專題技術 內容 地址
1 MyBatis Mybatis面試題 http://www.lxweimin.com/p/0cae6fd558b1
2 ZooKeeper ZooKeeper面試題

1、ZooKeeper 面試題?

ZooKeeper 是一個開放源碼的分布式協調服務,它是集群的管理者,監視著集群 中各個節點的狀態根據節點提交的反饋進行下一步合理操作。最終,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。

分布式應用程序可以基于 Zookeeper 實現諸如數據發布/訂閱、負載均衡、命名服務、分布式協調/通知、集群管理、Master 選舉、分布式鎖和分布式隊列等功能。

Zookeeper 保證了如下分布式一致性特性

1、順序一致性

2、原子性

3、單一視圖

4、可靠性

5、實時性(最終一致性)

客戶端的讀請求可以被集群中的任意一臺機器處理,如果讀請求在節點上注冊了監聽器,這個監聽器也是由所連接的 zookeeper 機器來處理。對于寫請求,這些請求會同時發給其他 zookeeper 機器并且達成一致后,請求才會返回成功。因此,隨著 zookeeper 的集群機器增多,讀請求的吞吐會提高但是寫請求的吞吐會下降。

有序性是 zookeeper 中非常重要的一個特性,所有的更新都是全局有序的,每個更新都有一個唯一的時間戳,這個時間戳稱為 zxid(Zookeeper Transaction Id)。而讀請求只會相對于更新有序,也就是讀請求的返回結果中會帶有這個zookeeper 最新的 zxid。

2、ZooKeeper提供了什么?

1、文件系統

2、通知機制

3、Zookeeper文件系統

4、ZAB協議?

5、四種類型的數據節點 Znode

4、EPHEMERAL_SEQUENTIAL-臨時順序節點

基本特性同臨時節點,增加了順序屬性,節點名后邊會追加一個由父節點維護的自增整型數字。

6、Zookeeper Watcher 機制 -- 數據變更通知

工作機制

1、客戶端注冊 watcher

2、服務端處理 watcher

3、客戶端回調 watcher

Watcher 特性總結

1、一次性

無論是服務端還是客戶端,一旦一個 Watcher 被觸發,Zookeeper 都會將其從相應的存儲中移除。這樣的設計有效的減輕了服務端的壓力,不然對于更新非常頻繁的節點,服務端會不斷的向客戶端發送事件通知,無論對于網絡還是服務端的

壓力都非常大。

2、客戶端串行執行

客戶端 Watcher 回調的過程是一個串行同步的過程。

3、輕量

3.1、Watcher 通知非常簡單,只會告訴客戶端發生了事件,而不會說明事件的具

體內容。

3.2、客戶端向服務端注冊 Watcher 的時候,并不會把客戶端真實的 Watcher 對

象實體傳遞到服務端,僅僅是在客戶端請求中使用 boolean 類型屬性進行了標記。

4、watcher event 異步發送 watcher 的通知事件從 server 發送到 client 是異步的,這就存在一個問題,不同的客戶端和服務器之間通過 socket 進行通信,由于網絡延遲或其他因素導致客戶端在不通的時刻監聽到事件,由于 Zookeeper 本身提供了 ordering guarantee,即客戶端監聽事件后,才會感知它所監視 znode發生了變化。所以我們使用 Zookeeper 不能期望能夠監控到節點每次的變化。 Zookeeper 只能保證最終的一致性,而無法保證強一致性。

5、注冊 watcher getData、exists、getChildren

6、觸發 watcher create、delete、setData

7、當一個客戶端連接到一個新的服務器上時,watch 將會被以任意會話事件觸發。當與一個服務器失去連接的時候,是無法接收到 watch 的。而當 client 重新連接時,如果需要的話,所有先前注冊過的 watch,都會被重新注冊。通常這是完全透明的。只有在一個特殊情況下,watch 可能會丟失:對于一個未創建的 znode的 exist watch,如果在客戶端斷開連接期間被創建了,并且隨后在客戶端連接上之前又刪除了,這種情況下,這個 watch 事件可能會被丟失。

7、客戶端注冊Watcher實現

8、服務端處理Watcher實現

9、客戶端回調Watche

客戶端 SendThread 線程接收事件通知,交由 EventThread 線程回調 Watcher。 客戶端的 Watcher 機制同樣是一次性的,一旦被觸發后,該 Watcher 就失效了。

10、ACL權限控制機制

2、DELETE:子節點刪除權限,允許授權對象刪除該數據節點的子節點

3、READ:數據節點的讀取權限,允許授權對象訪問該數據節點并讀取其數據內容或子節點列表等

4、WRITE:數據節點更新權限,允許授權對象對該數據節點進行更新操作

5、ADMIN:數據節點管理權限,允許授權對象對該數據節點進行 ACL 相關設置操作

11、Chroot特性

12、會話管理

ExpirationTime_ = currentTime + sessionTimeout
ExpirationTime = (ExpirationTime_ / ExpirationInrerval + 1) *
ExpirationInterval , ExpirationInterval 是指 Zookeeper 會話超時檢查時間間隔,默認 tickTime

13、服務器角色

14、Zookeeper 下 Server工作狀態

服務器具有四種狀態,分別是 LOOKING、FOLLOWING、LEADING、OBSERVING。

1、LOOKING:尋找 Leader 狀態。當服務器處于該狀態時,它會認為當前集群中沒有 Leader,因此需要進入 Leader 選舉狀態。

2、FOLLOWING:跟隨者狀態。表明當前服務器角色是 Follower。

3、LEADING:領導者狀態。表明當前服務器角色是 Leader。

4、OBSERVING:觀察者狀態。表明當前服務器角色是 Observer。

15、數據同步

16、zookeeper是如何保證事務的順序一致性的?

17、分布式集群中為什么會有Master?

18、zk節點宕機如何處理?

19、zookeeper負載均衡和nginx負載均衡區別

zk 的負載均衡是可以調控,nginx 只是能調權重,其他需要可控的都需要自己寫插件;但是 nginx 的吞吐量比 zk 大很多,應該說按業務選擇用哪種方式。

20、Zookeeper有哪幾種幾種部署模式?

部署模式:單機模式、偽集群模式、集群模式。

21、集群最少要幾臺機器,集群規則是怎樣的?

集群規則為 2N+1 臺,N>0,即 3 臺。

22、集群支持動態添加機器嗎?

其實就是水平擴容了,Zookeeper 在這方面不太好。兩種方式:

全部重啟:關閉所有 Zookeeper 服務,修改配置之后啟動。不影響之前客戶端的會話。

逐個重啟:在過半存活即可用的原則下,一臺機器重啟不影響整個集群對外提供服務。這是比較常用的方式。

3.5 版本開始支持動態擴容

23、Zookeeper對節點的watch監聽通知是永久的嗎?為什么不是永久的?

24、Zookeeper的java客戶端都有哪些?

java 客戶端:zk 自帶的 zkclient 及 Apache 開源的 Curator。

25、chubby是什么,和zookeeper比你怎么看?

chubby 是 google 的,完全實現 paxos 算法,不開源。zookeeper 是 chubby的開源實現,使用 zab 協議,paxos 算法的變種。

26、說幾個zookeeper常用的命令。

常用命令:ls get set create delete 等。

27、ZAB和Paxos算法的聯系與區別?

28、Zookeeper的典型應用場景

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,428評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,024評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,285評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,548評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,328評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,878評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,971評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,098評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,616評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,554評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,725評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,243評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,971評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,361評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,613評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,339評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,695評論 2 370