#就地避難在家鍛鍊寫作能力
軟體工程師系統設計面試準備指南
當你有了幾年的工作經驗以後,在找工作時一定會遇到系統設計的面試,有鑒於大部分的面試心得都是針對演算法以及資料結構的程式面試 (包括我之前寫的美國軟體工程師求職心得),對於系統設計的準備資源還真的不多,本篇要來剖析系統設計面試,介紹面試的流程、正確的心態以及準備的方向,讓大家再也不怕系統設計面試!
Medium 好讀版:https://medium.com/jktech/%E8%BB%9F%E9%AB%94%E5%B7%A5%E7%A8%8B%E5%B8%AB%E7%B3%BB%E7%B5%B1%E8%A8%AD%E8%A8%88%E6%BA%96%E5%82%99%E6%8C%87%E5%8D%97-acf6ab1f502f?source=friends_link&sk=ca40acf60b749cb1b32c17a868b0c1a3
#為什麼系統設計很重要?
在程式面試表現優異,可以讓你順利拿到 Offer;但是系統設計會決定你加入公司的職等!這也就是為什麼有些人有十年經驗只能拿到 Mid-Level (L4) 的 Offer,而有些人只有五年經驗卻可以拿到資深工程師以上 (L5+) 的 Offer。
另外,如果你是面試 Staff 或是 Principal 級別以上的話,除了系統設計以外,有些公司還會有 Technical Leadership 的面試,來判斷你是否有能力可以跟不同的部門合作、解決問題的不確定性、帶領資淺的人然後推動並且完成一個跨部門的大型技術專案。
簡單來說,系統設計用來判斷你是 L4 或是 L5+,Technical Leadership 面試用來判斷是 L5 或是 L6+。
#為什麼系統設計很難準備?
大多數應徵者在準備的時候會過度偏重於程式面試,原因也不難理解,程式問題的定義很清楚,有給定的輸入以及預期的輸出,就算你真的想不出來,LeetCode 上的討論區也有參考答案;這種有考古題可以參考的面試,對於台灣教育出來的人來說相對好準備,隨著你解的問題多了,你也會更有信心,不知不覺甚至還會刷上癮了呢!但系統設計卻非如此。
系統設計面試的問題描述通常很模糊 (這是刻意的),沒有給定的輸入與輸出,比較沒有既定規則可以遵循,然後也沒有一個標準答案,針對不同系統你需要提出不同的解法然後分析優缺點,一樣的問題,面試官也會針對你過去經驗往不同的方向問,有些問題你工作上沒有碰過還真的回答不出來,這也就是為什麼很多人看到系統面試就怕了。
#到底要怎麼準備?
首先我們要先建立一個觀念:沒有任何一個人可以知道所有的技術細節
不管你的面試官有多少年經驗,不管他們再怎麼資深,在變化快速的軟體產業,沒有人可以知道所有事情,一定有你知道而他們沒聽過的事情!
請把系統設計當成分享你過去所學的面試,這個面試的目的在於展示你對於軟體架構能力的廣度跟深度,你必須可以給出大方向的架構,知道有哪些元件 (廣度),同時針對你熟悉的領域深入探討更多細節 (深度),並且提出幾個解決方案,分析優缺點,並且針對系統需求選擇合適的解法。
大方承認自己對某些領域的細節不熟,也是完全沒問題的,只要讓面試官了解你知道這個東西,如果要深入了解的話你知道有哪些方向要努力,這樣就夠了,因為在大型的軟體專案裡,一定是高度分工的,不會有人同時精通手機端、前端、後端、Infra 以及嵌入式或是硬體的。
講到這裡,相信你也知道如果真的要準備是準備不完的,這些知識是透過平常工作以及閱讀技術文章長期累積的成果,比較沒辦法臨時抱佛腳。
#具體來說會問什麼問題
舉例來說,一個系統設計的問題會像是這樣:如何設計 Facebook?
這類問題的描述通常會很大而且模糊,面試官不預期而且你也不可能在 45 分鐘內就設計出這些公司花了好幾年這麼多人力設計出來的產品,所以第一步要做的事情是確認需求:是要設計動態牆、Messenger、廣告系統還是推薦系統?流量跟資料量為多少?需要支援全球的使用者嗎?
確認完需求以後,會針對最重要的幾個使用場景設計你的 Data model 以及 API,接著畫出大的系統架構圖,大致上會包含客戶端 (手機版/桌面版)、Load Balancer (Reverse Proxy)、App Servers 以及資料庫,接著可以針對細節下去討論,這邊開始就很自由了。
如果你是專精在資料庫,可以討論要用什麼資料庫以及資料要怎麼存可以讓特定使用場景的讀取以及寫入效能比較好,要怎麼做資料庫的 Replication 跟 Sharding 來服務更多的使用者?
如果講到快取,哪些地方可以加快取呢 (瀏覽器前端, CDN, App Server, 資料庫)?具體來說寫入快取有哪些方式以及優缺點 (write-through, write-around, write-back)?什麼時候要失效?要讓哪些資料失效?
如果聊到微服務器架構跟 Service Mesh,不同的服務怎麼跟其他的服務溝通? control plane 要怎麼更新 data plane 的設定?如果 control plane 掛了怎麼辦?要怎麼做 service discovery? 哪一種 Load Balancing 策略比較好 (round robin, random, least connection, ring hash, or maglev)?有些服務掛了影響到整個系統怎麼辦?什麼時候需要 circuit breaker ?
如果你是手機開發者,怎麼實現離線瀏覽?手機要有資料庫嗎?要怎麼以及多常跟伺服器同步?API 要怎麼設計?如何實現 Infinite Loading?剛 Po 文以後要怎麼樣在自己手機上馬上看到?
這些問題真的列舉不完,總之看到這裡你會了解為什麼我說這個面試是沒有範圍而且也準備不完的,重點應該放在跟面試官的討論,展現你在技術方面的廣度跟深度,讓面試結束的時候能夠有一個你們兩個人都同意的設計!
#準備材料
系統設計的資源比較分散,以下是我篩選過後覺得有用的資料,按照素材的類型作分類,也歡迎大家留言補充!
#入門影片
針對完全沒有概念的新手,我建議可以先從哈佛的 CS75 Lecture 9 Scalability 開始,裡面講到的很多基礎觀念都相當重要,值得一再複習,這些概念先有了以後再閱讀其他的材料會比較有感覺:
如果你看完這篇文章後還想再多了解系統面試的形式,也可以看一個前 Facebook 工程師分享的影片:
Distributed Systems in One Lesson 也很推,裡面提到不少業界在使用的設計模式:
有一個需要付費的資源是 SystemsExpert,每個影片會講解一個系統設計重要的概念,我個人覺得內容有點淺所以沒有買,但是整理地還算不錯,如果你看完他們免費的影片有興趣還是可以參考一下。
#閱讀文章
影片是一個讓你很好理解大方向概念的方式,但是如果你要深入理解背後的原理還有怎麼運作的細節,還是得透過大量以及深度的閱讀來吸收呀!
system design primer 整理了很多系統設計的資源,資料量很夠, 個人的建議是先快速過一遍,不要細讀,先知道總共有哪些元件,大概是做什麼用的就好,接著針對有興趣的部分在深入研究,建立自己的知識庫。
Grokking the System Design Interview 也是很多人推薦的材料,主要是針對系統設計的問題提供範例解答,他們的答案可以當作一個參考,但面試的時候不要完全照著回答,還是得看跟面試官討論的結果來進行,但這個是需要付費的,有興趣可以用我的推薦碼註冊購買。
如果你不想花錢或是不確定 Grokking 的文章你喜不喜歡,有一個類似的網站 Crack the System Design Interview 整理得也還不錯。
#書籍
唸書是一個有系統性學習的方法,如果你只想選一本書來看,就選這本大家都推的系統設計聖經 — Designing Data-Intensive Applications,簡稱 DDIA,這本書適合的對象是想要長期準備系統設計或是分散式系統的人,裡面舉的例子都是實際上業界遇到的問題,不會有以前讀教科書那種工作又用不到的感覺;但也因為是書,花了一些篇幅在講解背景知識,包含以前的系統是怎麼設計的以及如何演進到現在,對短期要準備面試的人效率會有點低,所以不適合有時間壓力的人。
這本書我目前讀了一半,最大的收獲是它解釋了很多為什麼現代的系統要做這樣的設計,我們針對不同的系統要求可以有哪些解法,這些解法各有什麼優缺點,總之分散式系統就是我們解決了一個問題,但又會產生更多要考量的點,一切都是 trade-off。
但這本書也不是沒有缺點的,首先我覺得是本書的英文沒有很好讀,我常常一段看了好幾遍才知道他想表達的重點是什麼,而且,有些很重要的觀念常常藏在一段文字裡用一句話帶過,但是不太重要的觀念卻使用 Bullet Point 表達;另外這本書話常常講一半,一些觀念提到了一點卻說我們後面再聊,也因為這樣,我在考慮要不要幫大家整理每一個章節的重點,翻成中文分享給大家,有興趣的朋友麻煩拍手留言告訴我!
除此之外,Google 的 SRE Books 內容也很實在,但是每一個章節的內容是獨立的,建議大家選擇想研究的章節跳著看就好。
最後,Distributed systems for fun and profit 的內容也很好,以分散式系統的理論為主,比較沒那麼針對系統設計面試。
#還想閱讀更多嗎?
我知道光是上面的資源就已經讀不完了,但是行有餘力的話,平時也可以多看看各大公司的技術部落格或是訂閱技術週刊如 TechBridge (台灣) 、HackerNews 以及 InfoQ 等等。
此外,參考別人的經驗也是很好的方式,最近剛好幾個朋友剛找完工作,他們分享的矽谷找資深工程師工作心得分享以及2020 上半年軟工找工經驗分享也都很值得看!
最後,在工作上使用到的技術,除了會用以外,最好也要花時間去研讀技術文件,了解他們設計的考量以及支援的場景,大部分這類型針對開發者的文件寫得會比較深入,所以也是相當好的學習素材;我自己過去一年因為工作上需要整合 Envoy 到我們公司的 Traffic Infrastructure,從他們的文件中學到很多 Service Mesh 跟微服務器的重要概念,學習的深度都是其他資源無法提供的。
#總結
這篇文章我們整理了很豐富的系統設計資源,希望大家不要被這滿滿的資訊量嚇跑。
請記得,我們永遠有各種方法在短期內針對面試做準備,提升面試的表現,但這都只是一時的,沒辦法讓你一夕之間就成為專家;如果想要追求長期的持續成長,那麼沒有捷徑 — 就是養成每天學習以及閱讀的習慣,一開始真的很難看到效果,但是當你持續一週、一個月甚至是一年以後,你會明顯感受到自己的成長,這些投入的時間都是騙不了人的。
如果這篇文章對你有幫助,請拍手留言加訂閱,並且分享給更多有需要的人知道!
同時也有2部Youtube影片,追蹤數超過24萬的網紅暗網仔 2.0,也在其Youtube影片中提到,Nordvpn會有3折優惠再送一個月全免費service給你, 而為慶祝Nordvpn 8歲生日, 2月10號之前申請會機會得到免費禮品! 請使用以下連結: https://nordvpn.com/deepwebkid 優惠碼: deepwebkid 會員: https://www.youtube...
「servers中文」的推薦目錄:
servers中文 在 嫩空姐日誌 Being a Flight Attendant. Facebook 的精選貼文
阿聯酋公司裡有個叫做face card的團體。 🇦🇪
FACE是 Flight Attendant Club of Emirates的簡稱。🛫
這個團體是由公司內的空服員義務組成,不定期會辦理一些公司有趣的活動。
有繳交月費的face card會員們就可以用這張卡在杜拜一些餐廳、飯店或是健身房等等享有優惠。當中有趣的是可以參與一些特殊活動。
這次參加了Sheikh Mohammed Centre for Cultural Understanding主辦的Iftar evening活動。🕌
“ Iftar” 就是穆斯林齋戒fasting一整天下來後,夜晚開齋的那一餐叫做Iftar。🕍
最近到了大概晚上7點多是Iftar時間,正確的名稱叫Athan Al Maghreb (sunset)。太陽下山後我家附近就會出現一個類似槍聲的很大聲音來告知穆斯林們:「可以開動囉!」
那天是我第一次參加Iftar dinner。
Iftar通常都是豐富的自助餐,而這次是在這個阿拉伯文化中心舉辦的Iftar是模擬最傳統的阿拉伯文化。我們大家圍在食物的外圍席地而坐,等待開齋的時間到來。
穿著阿拉伯傳統服裝的男性主持人先跟大家介紹杜拜傳統建築,而Wind Tower風塔是古早的冷氣系統,只要看到風塔下方通常都是主臥室。
現場也有其他穿著傳統服裝的工作人員替我們服務,發放水跟椰棗 (dates)給大家。(這個時候就算很餓也不能先行開動喔 為了尊重其他還在齋戒的穆斯林。雖然我是看到有人時間還沒到就直接開動有點小誇張..)主持人說傳統替主人服務的這些人他們叫他們silent servers沉默的侍者 (我自行中文翻譯 哈) 因為通常主人會在餐桌上跟客人談正事,如果此時服務生開口問是否加水或是互動都造成他們的困擾。所以反而在阿拉伯文化中,服務生是必須保持靜默的。
※ 如果大家對於穆斯林女性服裝有興趣了解的話,可以參考以下的網站:
(我覺得這篇文章寫得好清楚喔 雖然我還是記不起來~)
http://www.storm.mg/article/161089
時間到了之後,主持人帶領大家開始吃下椰棗跟喝水。
椰棗成為他們禁食一整天的開胃點心。
晚餐開始前,他們還要再進行一次禮拜。
我們非穆斯林此時就在一旁拿著相機像觀光客一般大拍照。
(因為是文化中心,所以不介意我們拍照)
禮拜完,就是令人期待的晚餐時間囉! 🌽🥦🍗🍖🍚🥜☕️
服務生們開始把料理上的蓋子一個個打開,之後每個人發一個盤子就可以自己盛飯菜。很少有機會這樣席地而坐地吃飯,感到新鮮有趣。
食物上以大盆菜來說,我覺得算不錯的了。(當然不能跟餐廳相比)
而且也嚐到了一些以前不曾吃過的阿拉伯菜色。
吃完飯後,大家被帶到旁邊的Diwan mosque清真寺去參觀。
女生進到清真寺都是要包頭的,所以現場有頭巾借給我們。
簡單介紹伊斯蘭文化,還有穆斯林聖地 麥加。🕋
不過活動還沒結束,我們又回去剛剛晚餐的地方享用當地甜點。
其實食物準備地算是挺豐富的,甜點種類比我想像中多,甚至還準備外帶盒給大家打包帶走。(不過真正有去打包的人不多,但感到貼心)
活動結束後,因為我一個朋友抓著其中一個主持人問關於杜拜法律以及投資問題,所以我跟另外新認識的朋友就默默到旁邊開始拿起現場的當地服飾拍照殺時間。哈哈😛
很開心有機會可以嚐試新東西也更認識當地文化。
#有人叫我要謝謝他這篇文章的誕生 🤔🤨😜
#嫩空姐
#Wendy
servers中文 在 暗網仔 2.0 Youtube 的最佳解答
Nordvpn會有3折優惠再送一個月全免費service給你, 而為慶祝Nordvpn 8歲生日, 2月10號之前申請會機會得到免費禮品!
請使用以下連結: https://nordvpn.com/deepwebkid
優惠碼: deepwebkid
會員: https://www.youtube.com/channel/UC8vabPSRIBpwSJEMAPCnzVQ/join
Instagram: https://www.instagram.com/dw_kid12/
Facebook: https://www.facebook.com/deepwebkid/?modal=admin_todo_tour
訂閱: https://www.youtube.com/channel/UC8vabPSRIBpwSJEMAPCnzVQ?sub_confirmation=1
鬼故事: https://www.youtube.com/watch?v=H4rmkFI1ik0&list=PLglqLngY6gv5BCwaoP-q6DOwUmw1lIusF
我最高觀看次數的影片 (我為何不再拍暗網? 只說一次): https://www.youtube.com/watch?v=jbihKaqEEQw&t=127s
曼德拉效應: https://www.youtube.com/watch?v=OMutzRIE_uE&list=PLglqLngY6gv5BCwaoP-q6DOwUmw1lIusF&index=17&t=5s
我的100K成長故事: https://www.youtube.com/watch?v=Kdhtp6A6YJE
破解Kate yup事件是假的! 不是綁架! 不要被騙! (Facebook上的證據): https://www.youtube.com/watch?v=2NJVt56ORWo&t=2s
日本最殘酷的直播節目: https://www.youtube.com/watch?v=7E81OKVX7wc
網上最可怕的一個字 (Ft. HenHen TV): https://www.youtube.com/watch?v=tLedkSHc7Os&t=145s
[恐怖影片] 5個Netflix上最恐怖的glitch | 消失的童年卡通片
(今天的五個題目)
黑白電視機的60年代, 每部靈異恐怖劇也是被經典節目Twilight Zone所影響. 原著編劇深度開埸白, 恐怖情節對社會與政治的irony.
black mirror的靈異畫面
Twilight zone新世代版Black Mirror誇大表現一個被social media扭曲的平行時空. 恐怖的是Black Mirror警告會發生的未來, 已有傳在播放他的平台Netflix可見到一些Glitch.
今日影片sponsor是Nordvpn. 會按這條影片的你, 證明你對網上世界可能也感到憂慮, 驚自己電話電腦有黑客盜用個人資料. Black mirror第三季第一集每個人身份地位財富都被監視. 如果戲中主角有下載Nordvpn她在這個機場, 咖啡室: 5500個超快servers, 60個國家 (中國大陸也行!!!)
windows, mac或android全部都能使用.
我作為一個Youtuber, 常常用iphone上Nordvpn由加拿大觀chak香港, 台灣, 馬來西亞等地方影片大方向及潮流. 我要感謝NordVPN讓我知道上一條影片在香港登上 ‘熱門影片’ 19的位置.
你現在按下面Description優惠連結入我promocode: Deepwebkid, Nordvpn會有3折優惠再送一個月全免費service給你, 而為慶祝Nordvpn 8歲生日, 2月10號之前申請會機會得到免費禮品!
還有...全球地區的Netflix也看得到.
(Show black mirror glitch) 但有些畫面, 你可能不會想見到.
2019年中多名Netflix用戶據稱看Netflix時畫面閃出一格該畫面. (Show clip) 而是在跟black mirror沒有任何關係的節目出現. Netflix出來交待此事件只是system Glitch. 但陰謀論表示是一種名subliminal message的大腦控制手法. 政府, 迪士尼已被發現內容常有這種奇怪信息. 一些地區, 廣告用這手法是列為犯法. 其實這種名supraliminal message非Subliminal messages, subliminal是控制我們潛意識, 而好像這個(image) 我們意識上見到的是supraliminal message.
但這畫面真的是 ‘意外’ 嗎?
Netflix上的兒童色情
2018年6月這個電影開場導致Netflix被彙報到美國FBI部門National Centre for missing and exploited children. 戲中一起演出發現初次 ‘自摸’ 的兩位小女孩真實年齡只有7歲和9歲.
這部名 ‘Desire’ 的2017年阿根廷電影之後導演Diego Kaplan出來解釋拍攝時兩名小演員也不知道拍攝實質內容意義. “...they were just copying what they were seeing on the screen. No adults interacted with the girls... Everything was done under the careful surveillance of the girl’s mother”
但根據美國Department of justice ‘任何描述未成年人士做出性行的媒介也是非法的’
最後勝利? 如果現在上Netflix找desire該電影還在.
消失的童年卡通片
我自己英文頻道Horrorstudio1其實早於2015年已經有講關Creepypasta (網上都市傳說) Candle cove. 在討論區上曾有多名用戶聲稱小時候70年代常常在58台看一tou關於海盜的卡通片candle cove. 其中整一集節目30分鐘, 是一個女孩對著鏡頭痛哭. candle cove沒找到任何官方資料. 一名網友問到自己家長對這卡通有沒有印象時, 網友母親說他小時候會每天同一時間, 開電視對著電視機的雪花看, 然後笑.
這都市傳聞之後被破解是網上漫畫家Kris straub一個創作. 但根據一些資料Netflix曾有24小時是可以看到candle cove. 當然現在找就沒有啦.
曾經Netflix也試過Glitch整個節目庫只有black mirror一部被你選擇. 這又是不是真的呢?
武漢肺炎
2020年1月8號New York Times報導中國鑒定出武漢肺炎. 同一天Netflix推出一部名Pandemic的電視節目. “Is Netflix owned by China?...when I checked Netflix, pandemic and doomsday preppers were the top 2 trending series” 陰謀論是Netflix背後一早知道肺炎會爆發, 所以該事件絕對是人為! 但其實病毒12月中已經已被發現到. ‘Pandemic’ 本身亦不是一個針對武漢事件的一個節目. 題材其實只是講對抗病毒的前線醫護人員.
並且netflix因病毒事件推出自己相關節目又不是什麼預知未來的能力. 這樣講我 ‘武漢事件’ 期間推出相關Youtube片難道我又是知道內情的背後人物嗎?
我相信netflix這麼大的娛樂公司一定有節在. 等有討論ga jik時自然就推出.
甚至Kobe Bryant的死也被説是為jeh koy這件事. 我覺得不是.
Netflix上不該搜尋的字
有討論區表示, 如果你在Netflix搜尋打 ‘exam’ 這個字, 顯示出來會是一些挺不安的節目編目. 這個字是我們不該去搜尋的嗎? 有人指出是政府一大堆洗腦控制人類的電影. 其實這個只不過是Netflix內部測試影片能否成功傳遞給用戶的裝置. 聽說打 ‘Example short 23.976’ 特別恐怖.
Tou中找到Netflix關於Flat Earth(地平說) 紀錄片. 該紀錄片支持我們身處的地球不是一個圓形的星體, 而是一peen有盡頭的陸地. 除此之外, 有Marilyn monroe的死跟外星人有關之類一大堆的所謂 ‘陰謀’ documentary. 在美國文化當中Youtube, whatsapp已對這些未經科學證實的資訊不會lup loon廣傳. 可能netflix未掌握到這點, 因為他的影響力真的很大.
(Netflix附加Glitch)
![post-title](https://i.ytimg.com/vi/v1ECBi-Eyrs/hqdefault.jpg)
servers中文 在 翼 WingsThunder Youtube 的最佳貼文
上一次搵左一個又廢又雷既嘉神來...好似決定錯誤咁
唔知道今次搵左企鵝番來一齊玩Mega Walls, 結果又如何呢?
企鵝: http://youtube.com/penguink1a
PVP訓練班 - 比心機上堂學打人! (屋企既小朋友記得只可以係minecraft打人呀~~)
系列播放清單: http://bit.ly/WingsPVP
=======================================
獲取我的最新最快影片資訊: http://bit.ly/WingsNotice
遊戲湯麵 GameNoodleSoup: http://youtube.com/gamenoodlesoup
翼的Google+: http://plus.google.com/+wingsthunder
翼的Facebook專頁: http://facebook.com/aywingsthunder
翼的Twitter: http://twitter.com/aywingsthunder
翼的Instagram: http://instagram.com/wingsthunder
Home Base: http://bit.ly/WingsHB
我們的學園日常: http://bit.ly/WingsSchool
Evolving Tech 進化論模組生存: http://bit.ly/WingsEVT
Hexxit Revisited ft. KZee: http://bit.ly/WingsHexxit
Only One Command 一鍵即用指令方塊教學: http://bit.ly/OnlyOneCommand
Production Music courtesy of Epidemic Sound: http://www.epidemicsound.com
![post-title](https://i.ytimg.com/vi/KguCAwp9Zz4/hqdefault.jpg)
servers中文 在 需要帮助? - GitHub Docs 的推薦與評價
... Enterprise Cloud · Enterprise Server 3.3 · Enterprise Server 3.2 · Enterprise Server 3.1 · Enterprise Server 3.0 · GitHub AE · 所有企业版本. 简体中文. ... <看更多>
servers中文 在 GTA 中文RP服|#01 - 不要惹警察(伺服器相關資訊請至資訊欄) 的推薦與評價
GTA RP server|#01 - Do not mess with the police. 398,148 views398K views. Sep 11, 2017. 3.1K. 148. Share ... ... <看更多>