iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0

我覺得 System Design 最有效的練習方式就是實際的講一遍,而且要模擬實際面試的情境,開著網頁的流程圖網頁,然後一步一步的迭代,把系統架構圖畫出來

流程圖網頁,我個人推薦兩個

  1. https://draw.io
  2. https://excalidraw.com/

只要熟悉其中一種就好,然後不要使用太複雜的圖案,用基礎的幾何圖形(長方形,線,箭頭)再加上適當的文字補充說明,還可以透過顏色來方便溝通(比如綠色是公司內網,橘色是客戶自己的電腦環境)

而整體的系統設計的流程,大概會是這樣

  1. Back of the envelope
    確認需求,釐清整體系統應該要考慮到多複雜,並列出 functional 跟 non-functional 的 requirement,常見的評估項目有
    • functional
      1. 要什麼功能
      2. 有什麼 input,什麼 output
      3. 要有什麼商業限制
    • non-functional
      1. 使用者是誰,他們在哪裡
      2. 有沒有峰值使用時間(比如雙11
      3. 是屬於 OLTP 還是 OLAP 的系統
      4. 公司的 infra 有沒有限制
        還有很多依據各系統會需要釐清的限制條件,我在最後會附上我覺得不錯的教材,裡面會有常見的系統他們會怎麼去分析
  2. 你的目標是用最小的系統來滿足上面列出的需求
  3. 每完成一個功能,要記得詢問面試官,有什麼想要回饋的嗎?

我個人覺得,系統設計這塊剛開始接觸,最大的困擾會是你根本不曉得到底有什麼東西可以畫,有什麼常見的名詞可以使用,這一塊我強烈推薦可以找相關的教材來讀,以下推薦兩個

  1. https://www.educative.io/courses/grokking-the-system-design-interview
  2. https://bytebytego.com/

我自己是買 grokking 的教材,我買 standard 的方案,而我現在回頭來看,我也覺得還好我選的是這份教材,因為對當時的我來說,我連常見的系統到底裡面會有什麼 component 都不曉得,而這個教材裡面會先介紹常用的雲端的 infra 有提供的服務(比如 rdbms/load balancer/cdn/dns/sequencer/etc.),接下來才會透過一系列的文章來介紹各類型的系統分別要用什麼樣的服務來組成(怎麼設計一個縮網址服務/ google map / uber eat/etc.),但 bytebytego 就只有提供各項服務應該要怎麼拆解他背後系統的部分

我覺得上面這個介紹每個 infra 到底個別的職責是什麼,這點可以讓我在系統面試的過程,或是在實際的職場工作時,知道說有哪些現成且成熟的工具可以使用,幫助很大

而我個人最推薦練習的第一張系統設計的練習題目,就是你目前工作正在維護的系統,嘗試著用上面學到的內容,實際畫出來,一來你對於這個系統最熟悉,二來當你畫好了,你面試的時候就可以有一個現成的材料可以跟面試官介紹,非常的有效益


AI 使用程度

[x] 無
[ ] AI 進行校稿
[ ] AI 主筆


上一篇
Day 16 System Design 是什麼
系列文
跌跌撞撞的轉職路:面試馬拉松與 AI 時代的工作筆記17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言