系統設計面試完整列表

banq發表於2022-11-27

系統設計面試完整列表:

1.網路通訊協議
分散式系統中的機器透過網路彼此通訊。
需要了解的內容:

  • - 對低階網路的基本瞭解
  • - 協議(IP、TCP、UDP、DNS和HTTP)


2.儲存
資訊儲存是每個分散式系統的基本組成部分。
需要了解的內容:

  • - 易失性與非易失性儲存器
  • - 資料庫概念


3.可用性
大多數分散式系統都需要具有高可用性。
需要了解的內容:

  • - 如何度量系統可用性 
  • - 如何提高系統可用性 
  • - 如何使用冗餘


4.快取
快取記憶體儲存對網路請求的響應或計算開銷大的操作結果。
需要了解的內容:

  • - 快取記憶體命中和未命中術語
  • - 快取記憶體回收策略
  • - 內容分發網路


5.延遲和吞吐量
這些是評估分散式系統效能的關鍵引數。
需要了解的內容:

  • - 最常見操作的延遲
  • - 粗略計算


6.代理和負載平衡器
代理是每個系統中使用的中間伺服器。
需要了解的內容:

  • - 正向和反向代理
  • - 使用反向代理作為負載平衡器
  • - 負載均衡器的伺服器選擇策略


7.雜湊
雜湊有助於快取 伺服器的彈性伸縮和資料分割槽。
需要了解的內容:

  • - 一致雜湊
  • - 會合雜湊


8.關係型資料庫
這些是結構化的資料庫,以表格格式儲存資料,支援SQL查詢。
需要了解的內容。

  • - 索引
  • - ACID事務
  • - 強一致性與最終一致性


9.NoSQL
鍵值資料庫(即RedisZookeeper)經常用於快取和配置。
需要了解的其他資料庫:

  • - blob儲存(S3)
  • - 時間序列資料庫
  • - 圖形資料庫(Neo4j)
  • - 空間資料庫和四叉樹


10.複製和分片
這些都是提高可用性和效能的標準技術。
需要了解的內容:

  • - 如何在多臺伺服器上覆制資料以增加冗餘
  • - 如何在多個伺服器之間劃分資料以提高吞吐量


11.領導者選舉
這就是伺服器群集選擇負責所有主要操作的領導者的方式。
需要了解的內容:



12.輪詢和流
這些是從伺服器獲取資料的最常用技術。
需要了解的內容:

  • - 如何定期提取資料(輪詢)
  • - 如何獲得連續資料饋送(流)


13.記錄和監視
每個系統都需要測量效能並解決問題。
需要了解的內容:

  • - 如何收集和記錄事件資訊 
  • - 如何瞭解系統關鍵指標 


14.釋出-訂閱 
這是一種廣泛使用的訊息傳遞模式。 
需要了解的內容:

  • - pub-sub如何工作
  • - 什麼是冪等運算
  • - Apache Kafka等流行框架


15.點對點網路
這些機器將工作負載在它們之間進行分配,以便以最快的方式完成工作。
需要了解的內容:

  • - 什麼是Gossip協議
  • - 這種網路的使用情況


16.速率限制
限制傳送到或由系統接收的請求的數量是至關重要的。
需要知道的是。

  • - 速率限制如何防止DDoS攻擊
  • - 如何實施速率限制策略(如使用Redis)。


17.Mapreduce
這是一種用於以容錯方式高效處理大型分散式資料集的流行框架。
需要了解的內容: 

  • - 什麼是分散式檔案系統
  • - 流行的分散式檔案系統實現(即,硬碟驅動器)


18. API設計
需要了解的內容: 

  • - Web API設計基礎知識
  • - CRUD操作的概念



 

相關文章