挑戰阿里P7必備分佈式,反向代理/Redis/中間件/MySQL/消息,你啃下了幾個?

這些年,分佈式框架越用越成熟,越用越廣泛。幾前年還只是架構師和高級開發的面試必考題,現在已經連應屆生都要面對了。

分佈式框架看似又多又複雜,但主要集中在協調類框架如 Zookeeper分佈式緩存如 Redis消息隊列如 Kafka數據庫 MySQL 的分庫分表方案如 MyCat,全文檢索如 ElasticSearch微服務如 Dubbo方向代理如 Nginx

每種技術都有多個框架供大家選擇,具體應用依賴業務場景,大廠們內部也有自己的實現,一般面試官要求同類型的框架深入瞭解一個即可,畢竟學會了一個,其他就很容易入手。

我這裏也就每種類型都列舉了一個,其中消息隊列選了兩個,因爲筆者所在的部門根據業務的不同經常用兩種隊列,所以筆者感覺有必要提到兩個。


image.png

 

注意:篇幅原因,下面從存儲、數據庫、中間件ZK、消息kafka、微服務dubbo、方向代理Nginx等方面介紹各個所需學習的知識點以及一些Java高級面試必備的題目、一些自己學習過程中的筆記以及收集的各大分佈式筆記PDF,很多隻是截圖介紹展示一下,不過都可提供原文件,有需求的朋友麻煩各位【點擊分佈式】下載原件!

01 分佈式存儲相關(Redis)

1.1 Redis應該學習的那些知識

  • String 的內部結構及實現原理
  • List 的內部結構及實現原理
  • Map 的內部結構及實現原理
  • Set 的內部結構及實現原理
  • SortedSet 的內部結構及實現原理
  • Redis 有 timeout 機制,請問到了過期時間,數據是否真的被刪除了?
  • Redis 的持久化機制 Redis 是單進程單線程?性能爲什麼這麼快?
  • Redis 的集羣
  • Redis 的哨兵
  • Redis 緩存與數據一致性的問題 緩存雪崩 緩存擊穿
  • Redis 的內存回收策略
  • 管道和 Lua 腳本
  • 一致性哈希算法
  • 手寫一個 LRU 算法
  • Redis 版的分佈式鎖

1.2 根據以上知識整理Redis超高頻面試70問(六大模塊)

  • Redis概念理解
  • Redis數據結構與指令

image.png

 

  • Redis高併發處理策略
  • Redis集羣結構以及設計理念

image.png

 

  • Redis緩存管理與持久化機制
  • Redis應用場景設計image.png

     

答案解析.png

 

1.3 學習過程中記錄的一份Redis筆記

包括五個分類:基礎篇、數據結構篇、持久化篇、集羣篇、其他分類,這些是筆者自己對於Redis的學習而總結出的筆記

image.png

 

內容詳解.png

 

02 數據庫存儲相關(MySQL)

2.1 知識點

  • MySQL 單表數據達到多少的時候會影響數據庫的查詢性能?爲什麼?
  • MySQL 主從複製的原理是什麼?常見的形式有哪些?
  • MySQL 分庫分表,解釋一下垂直和水平 2 種不同的拆分
  • MySQL 垂直拆分會帶來哪些問題?
  • 分佈式數據存儲中間件 MyCat 的核心流程是什麼?
  • 概述一下 MyCat?
  • 解釋一下全局表,ER 表,分片表
  • MyCat在分庫分表之後,是怎麼支持連表查詢的?
  • 庫表拆分時,拆分規則怎麼取捨?
  • 全局 ID 方案有哪些?程序自定義全局 ID 方案有哪些?
  • 一致性 Hash 的原理?設計的好處是什麼?
  • 4 層負載和 7 層負載誰性能更高,爲什麼?
  • 講一講 MySQL 的高可用方案?

2.2 關於分庫分表Java高級面試題

image.png

 

面試題+面試官心裏分析+題目剖析+答案詳解

答案詳解.png

 

03 分佈式中間件相關 Zookeeper

  • Zookeeper 是什麼?
  • 描述一下 ZAB 協議
  • 四種類型的數據節點 Znode
  • TCP 不是可靠連接嗎?爲什麼分佈式要考慮網絡信息丟失的問題?
  • 介紹一下兩階段提交協議 2pc
  • 介紹一下三階段提交協議 3pc
  • Zookeeper 宕機如何處理?
  • 描述一下 Zookeeper 中 session 管理的思想,畫圖描述一下
  • Zookeeper Watcher 機制
  • Zookeeper Server 的角色
  • Zookeeper Server 的狀態
  • Zookeeper 負載均衡和 Nginx 負載均衡區別
  • Zookeeper 的序列化
  • ZXID 是什麼?有什麼作用?
  • 講解一下 Zookeeper 的持久化機制
  • 投票信息的五元組
  • Quorum 與腦裂
  • 選舉的全過程
  • 數據同步全過程
  • 實現一個分佈式鎖
  • 追問 1:Watch 監聽爲什麼是一次性的?
  • 追問 2:Zookeeper 爲什麼不用數據庫做持久化?
  • 追問 3:Zookeeper 的 session 爲什麼由 server 維護,client 不行嗎?

3.1 ZK面試:27連問

  • ZooKeeper 提供了什麼?
  • Zookeeper 文件系統?
  • ZAB 協議?
  • 四種類型的數據節點 Znode
  • Zookeeper Watcher 機制 -- 數據變更通知
  • 客戶端註冊 Watcher 實現
  • 服務端處理 Watcher 實現
  • 客戶端回調 Watcher
  • ACL 權限控制機制
  • Chroot 特性
  • 服務器角色
  • 會話管理
  • Zookeeper 下 Server 工作狀態
  • 數據同步
  • zookeeper 是如何保證事務的順序一致性的?
  • 分佈式集羣中爲什麼會有 Master?
  • zk 節點宕機如何處理?
  • zookeeper 負載均衡和 nginx 負載均衡區別
  • Zookeeper 有哪幾種幾種部署模式?
  • 集羣最少要幾臺機器,集羣規則是怎樣的?
  • 集羣支持動態添加機器嗎?
  • Zookeeper 對節點的 watch監聽通知是永久的嗎?爲什麼不是永久的?
  • Zookeeper 的 java 客戶端都有哪些?
  • chubby 是什麼,和 zookeeper 比你怎麼看?
  • 說幾個 zookeeper 常用的命令。
  • ZAB 和 Paxos 算法的聯繫與區別?
  • Zookeeper 的典型應用場景?

ZK答案解析.png

 

04 消息隊列

4.1 消息隊列知識點

  • Kafka ISR 的設計思想
  • Kafka 的速度爲什麼那麼快?
  • Kafka 如何保證消息的順序消費?
  • 活鎖的問題怎麼解決?
  • Kafka 高效文件存儲設計特點
  • 談一談 Kafka 的再均衡
  • Kafka 的副本複製過程詳解
  • Kafka 的存儲機制詳解
  • Kafka 什麼情況下會丟失消息?
  • Kafka 的分區數與多線程
  • RabbitMQ 消息隊列的作用與使用場景
  • RabbitMQ 怎麼自動刪除沒人消費的消息?
  • RabbitMQ 無法被路由的消息,去了哪裏?
  • RabbitMQ 消息在什麼時候會變成Dead Letter?
  • RabbitMQ 如何保證消息的可靠性投遞?
  • RabbitMQ 消息冪等性
  • RabbitMQ 如何保證消息的順序性?

4.2 kafka面試(基礎+進階+高階共44問)

  • 1.Kafka的用途有哪些?使用場景如何?
  • 2.Kafka中的ISR、AR又代表什麼?ISR的伸縮又指什麼
  • 3.Kafka中的HW、LEO、LSO、LW等分別代表什麼?
  • 4.Kafka中是怎麼體現消息順序性的?
  • 5.Kafka中的分區器、序列化器、攔截器是否瞭解?它們之間的處理順序是什麼?
  • 6.Kafka生產者客戶端的整體結構是什麼樣子的?
  • 7.Kafka生產者客戶端中使用了幾個線程來處理?分別是什麼?
  • 8.Kafka的舊版Scala的消費者客戶端的設計有什麼缺陷?
  • 9.“消費組中的消費者個數如果超過topic的分區,那麼就會有消費者消費不到數據”這句話是否正確?如果正確,那麼有沒有什麼hack的手段?
  • 10.有哪些情形會造成重複消費?
  • 11.那些情景下會造成消息漏消費?
  • 12.KafkaConsumer是非線程安全的,那麼怎麼樣實現多線程消費?
  • 13.簡述消費者與消費者之間的關係
  • 14.當你使用kafka-topics.sh創建(刪除)了一個topic之後,Kafka背後會執行什麼邏輯?
  • 15.topic的分區數可不可以增加?如果可以怎麼增加?如果不可以,那又是爲什麼?
  • 16.topic的分區數可不可以減少?如果可以怎麼減少?如果不可以,那又是爲什麼?
  • 17.創建topic時如何選擇合適的分區數?
  • 1.Kafka目前有哪些內部topic,它們都有什麼特徵?各自的作用又是什麼?
  • 2.優先副本是什麼?它有什麼特殊的作用?
  • 3.Kafka有哪幾處地方有分區分配的概念?簡述大致的過程及原理
  • 4.簡述Kafka的日誌目錄結構
  • 5.Kafka中有哪些索引文件?
  • 6.如果我指定了一個offset,Kafka怎麼查找到對應的消息?
  • 7.如果我指定了一個timestamp,Kafka怎麼查找到對應的消息?
  • 8.聊一聊你對Kafka的Log Retention的理解
  • 9.聊一聊你對Kafka的Log Compaction的理解
  • 10.聊一聊你對Kafka底層存儲的理解
  • 11.聊一聊Kafka的延時操作的原理
  • 12聊一聊Kafka控制器的作用
  • 13.Kafka的舊版Scala的消費者客戶端的設計有什麼缺陷?
  • 14.消費再均衡的原理是什麼?(提示:消費者協調器和消費組協調器)
  • 15.Kafka中的冪等是怎麼實現的?
  • 1.Kafka中的事務是怎麼實現的?
  • 2.失效副本是指什麼?有哪些應對措施?
  • 3.多副本下,各個副本中的HW和LEO的演變過程
  • 4.Kafka在可靠性方面做了哪些改進?(HW, LeaderEpoch)
  • 5.爲什麼Kafka不支持讀寫分離?
  • 6.Kafka中的延遲隊列怎麼實現
  • 7.Kafka中怎麼實現死信隊列和重試隊列?
  • 8.Kafka中怎麼做消息審計?
  • 9.Kafka中怎麼做消息軌跡?
  • 10.怎麼計算Lag?(注意read_uncommitted和read_committed狀態下的不同)
  • 11.Kafka有哪些指標需要着重關注?
  • 12.Kafka的那些設計讓它有如此高的性能?

kafka答案.png

 

PDF學習筆記《Kafka源碼解析與實戰》

image.png

 

4.3 RabbitMQ面試(22問)

題目+答案.png

 

05 分佈式相關

  • CAP 理論
  • Paxos 協議
  • Raft 協議
  • 設計一個全局唯一的 ID

06 分佈式全文檢索

  • 談談分詞與倒排索引的原理
  • 分段存儲的思想
  • 段合併的策略思想
  • 文本相似度 TF-IDF
  • ElasticSearch 寫索引的邏輯
  • ElasticSearch 集羣中搜索數據的過程
  • ElasticSearch 深翻頁的問題及解決
  • ElasticSearch 性能優化

07 分佈式事務

  • 分佈式事務的幾種實現方式
  • TCC 柔性分佈式事務
  • TCC-Transaction 框架的原理

《分佈式事務綜合案例分析》

image.png

 

《分佈式系統常用技術及案例分析PDF》

image.png

 

內容詳解.png

 

08 反向代理

  • Nginx 的動靜分離
  • Nginx 的防盜鏈
  • Nginx 的跨域訪問
  • Nginx 的進程模型
  • Nginx 與網關
  • Nginx 的高可用方案

8.1 Nginx的學習筆記

《深入理解Nginx模塊開發與架構解析第2版.PDF》

image.png

 

09 微服務相關

  • Dubbo 的調用流程
  • Dubbo 的負載均衡策略
  • Dubbo 的併發和連接控制
  • Dubbo 的服務暴露過程
  • Dubbo 的SPI思想
  • Dubbo 的六種集羣容錯模式
  • Dubbo 源碼 Debug 時個人遇到的幾個難點

9.1 Java高級面試之分佈式系統Dubbo

image.png

 

Dubbo答案解析.png

 

撒花環節

內容太多,篇幅受限,所以不能僅靠一篇文章將上面分佈式的各大知識講清楚,只能粗略的介紹哪些知識是必備的,以及分享一些Java高級面試問題和學習的PDF(上面都有截圖展示)。其實也沒關係,想要深入學習朋友可以來找小編獲取這些學習的文檔(文中介紹的所有學習筆記) 【點擊分佈式】免費獲取!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章