之前在台灣面試時都沒遇過 system design 面試,好像也較少聽聞有 system design 的關卡;
在英國時也不是所有面試時都會考 system design,通常是用來判斷該工程師是不是 senior 時會才比較會遇到。身為一個 senior engineer 除了被要求技術能力外,對於系統的架構設計和溝通能力也都會被期望達到一定的程度,同時也會預期多少具有領導能力。
而面試範圍可以小到設計一個 rate limiter,也可以大到設計一個 Netflix,其中要考慮的深度和廣度也就跟著不同,而且也有可能因為公司需求、軟硬體限制等而有所改變,沒有所謂最佳的解答。
在網路上看文章、影片 mock system design interview 時發現大家面試時,同樣一個問題,面試官的著眼點、流程的進行架構都不太一樣,那究竟什麼樣的內容是 system design inteview 時必須要談到的呢?
這裡用 designing a URL shortener 當範例,盡可能將流程結構化,並列出在設計時會考量的點,希望在面試時自己心中能有個大綱,好跑過一輪必考量的點;不過 system design 可以包含的範圍實在太廣了,可能會有些疏漏,還請見諒。