硬貨:如何做好一名系統架構設計師以及面試技巧

banq發表於2019-05-15

系統架構師在擁有知識經驗上要高於一般軟體架構師或領域架構師,承擔整個系統的權衡設計,搭建一個可伸縮、可擴充套件、高事務、高一致的系統架構是其工作目標,同時針對運營中出現的重大問題進行診斷以及提出改進意見。這個Github儲存庫提供你如何在短時間內掌握系統設計以及應對面試,如果有時間,您可以深入瞭解每個主題,Jdon網站基本都是圍繞這些主題進行了翻譯和延伸以及討論:

系統設計是一個非常廣泛的主題,即使是在頂級IT公司擁有多年工作經驗的軟體工程師也可能不是系統設計方面的專家。如果你想成為一名專家,你需要閱讀許多書籍,文章,並解決真正的大規模系統設計問題。

澄清約束並識別使用者案例
花幾分鐘詢問面試官並就係統範圍邊界達成一致。記得要確保你知道面試官在開始時沒有告訴你的所有要求。
使用者案例use case指示系統的主要功能,約束要求列出了系統的規模,例如每秒請求數,請求型別,每秒寫入的資料,每秒讀取的資料。

高階架構設計
繪製重要元件及其之間的連線,但不要詳細介紹。通常,可伸縮系統包括webserver(負載均衡器),服務(服務分割槽),資料庫(主/輔助資料庫叢集外掛快取)。

元件設計
您需要為每個元件編寫特定的API,您可能需要完成特定功能的詳細OOD設計。您可能還需要為資料庫設計資料庫模式。

系統設計基礎知識
以下是一些有關係統設計相關主題的文章。



公司工程部落格
如果您要與公司合作,您應該閱讀他們的工程部落格。


產品和系統
以下論文/文章/幻燈片可以幫助您瞭解不同實際產品和系統的一般設計理念。


熱門問題和參考
每個問題都有一些很好的參考。這裡的參考資料是幻燈片和文章。
設計CDN網路參考:


設計Google文件系統參考:

設計隨機ID生成系統參考:

設計鍵值資料庫參考:

設計Facebook新聞源功能參考:

設計Facebook時間線功能參考:

設計一個函式以在過去的時間間隔內返回前k個請求參考:

設計線上多人紙牌遊戲參考:

設計圖搜尋功能參考:
  • 構建圖搜尋的基礎架構
  • 圖搜尋中的索引和排名
  • Facebook [url=https://www.facebook.com/notes/facebook-engineering/under-the-hood-the-natural-language-interface-of-graph-search/10151432733048920]搜尋[/url]和Erlang [url=https://www.facebook.com/notes/facebook-engineering/under-the-hood-the-natural-language-interface-of-graph-search/10151432733048920]的自然語言介面[/url]

設計圖片共享系統參考:

設計搜尋引擎參考:

設計推薦系統參考:

設計tinyurl系統參考:

設計垃圾收集系統參考:

設計可擴充套件的Web爬網系統參考:

設計Facebook聊天功能參考:

設計趨勢主題系統參考:

設計快取系統參考:

好書:

物件導向設計:
OOD採訪提示
澄清場景,寫出使用者案例
用例是對事件序列的描述,這些事件序列一起導致系統執行某些有用的操作。誰將使用它以及它們將如何使用它。該系統可能非常簡單或非常複雜。
特殊的系統要求,如多執行緒,讀或寫。

定義物件
將標識對映到類:一個類的一個方案,此方案中的每個核心物件用於一個類。
考慮類之間的關係:某個類必須具有唯一的例項,一個物件具有許多其他物件(組合),一個物件是另一個物件(繼承)。
確定每個類的屬性:將名詞更改為變數,將操作更改為方法。
使用設計模式,使其可以在多個應用程式中重用。

有用的網站



相關文章