你要知道的21道軟件設(shè)計 + 面向?qū)ο蟮拿嬖囶}

不管大家參加任何的編程面試刀荒,都逃不過關(guān)于系統(tǒng)設(shè)計和軟件設(shè)計的問題代嗤。如果你想做的更好,你可以試試準備這個話題缠借。以前我分享過我的一個關(guān)于編程面試問題的清單干毅,也分享了一些關(guān)于系統(tǒng)設(shè)計的問題,但好多人比較感興趣泼返,會提問更多的問題硝逢。因為系統(tǒng)設(shè)計比較難,需要多加練習(xí)才能更好地掌握绅喉。

當我在偶然在Educative上看到如何應(yīng)對系統(tǒng)設(shè)計面試的課程時渠鸽,我就從親朋好友那里收集了許多關(guān)于系統(tǒng)設(shè)計面試問題,然后做成了清單分享給你們柴罐。

這將是一個很好的資源徽缚。這不僅給你提供許多關(guān)于系統(tǒng)設(shè)計面試問題,還可以給你們提供解決問題的知識與工具丽蝎。

換句話說猎拨,這個課程可以教你怎么一步步構(gòu)建像Facebook膀藐,Twitter,Uber的真實世界系統(tǒng)红省。

實際上额各,網(wǎng)絡(luò)上沒有太多關(guān)于系統(tǒng)設(shè)計的面試題資源。我只是在Edcative上看到rajat mehta 寫的如何準備系統(tǒng)設(shè)計面試吧恃。而關(guān)于頂尖的公司像 Amazon虾啦,Google ,Microsoft痕寓,Apple傲醉,SalesForce,Flipcart 等等提出的系統(tǒng)設(shè)計的問題,網(wǎng)上根本找到解決方法呻率。

無論如何硬毕,當你把這個資源和這個文章提出的問題的相結(jié)合,你在面試系統(tǒng)設(shè)計的時候礼仗,你將所向披靡吐咳。你也可以試著自己解決這些問題,然后對照我給的答案元践。

順便提一下韭脊,這個只適用有一些編程經(jīng)驗和基礎(chǔ)的軟件設(shè)計知識的童鞋。如果你是個編程小萌新单旁,我的建議是你自己先學(xué)一些JAVA編程基礎(chǔ)知識沪羔,例如Coursera上的Principles of Software Design和Edcative上的 Web Application and Software Architecture 101。

我這個課程不僅僅能教你如何用JAVA解決一個真實世界構(gòu)建的問題象浑,而且能用合乎邏輯的方式來思考和設(shè)計蔫饰。這種能力是每個成功設(shè)計開發(fā)者最值得所掌握的。

21道系統(tǒng)設(shè)計+面向?qū)ο蟮拿嬖囶}

事不宜遲融柬,我們馬上來看這21道最受歡迎死嗦,提問率最高的系統(tǒng)設(shè)計+面向?qū)ο蟮拿嬖囶},這些問題的分析能讓你輕松應(yīng)對項目設(shè)計的面試粒氧。

1. 如何用Java設(shè)計自動售貨機越除? (解決方案)

你需要編寫代碼來設(shè)計自動售貨機,該自動售貨機售賣如巧克力外盯,糖果摘盆,冷飲之類的產(chǎn)品,需要投入硬幣進行購買饱苟,例如5分孩擂、10分、25分箱熬,50分类垦、1元等狈邑。確保插入硬幣獲得產(chǎn)品 ,然后退回零錢蚤认。 另外米苹,編寫單元測試以證明這些常見用例有效。 如果遇到困難砰琢,可以閱讀有關(guān)解決這些經(jīng)典系統(tǒng)設(shè)計問題的兩部分文章(第1部分和第2部分)蘸嘶。

2. 如何設(shè)計類似Goo.gl或Bit.Ly的URL縮短服務(wù)?(解決方案)

這是一個常見的系統(tǒng)設(shè)計問題陪汽。 你給了一個普通長度的URL训唱,你將如何設(shè)計為其生成較短且唯一的別名的服務(wù)? 如果你不熟悉URL縮短程序服務(wù)挚冤,請查看一些常用的例子况增,例如Google的goo.gl和Twitter使用的bit.ly。確保在一些設(shè)計決策后提供數(shù)據(jù)庫模式和基本原理你辣,例如保留數(shù)據(jù)多長時間巡通,如何獲取統(tǒng)計信息和分析等尘执。如果遇到問題舍哄,可以參照關(guān)于Educative上“系統(tǒng)設(shè)計面試課程”中給出的解決方案。

3.你如何設(shè)計交通控制系統(tǒng)誊锭?

經(jīng)典系統(tǒng)設(shè)計問題仍然提及頻率表悬。 確保你知道如何從一種狀態(tài)過渡到另一種狀態(tài),例如從紅色過渡到綠色丧靡,從綠色過渡到橙色再過渡到紅色等蟆沫。

4. 如何設(shè)計限價單? (解決方案)

限價訂單簿在證券交易所中用于根據(jù)價格和時間優(yōu)先級將買入訂單與賣出訂單進行匹配温治。 你會怎么做饭庞? 你將使用哪種數(shù)據(jù)結(jié)構(gòu)? 請記住熬荆,匹配的速度是關(guān)鍵舟山,也是可靠的。 如果你需要復(fù)習(xí)數(shù)據(jù)結(jié)構(gòu)卤恳,則可以查看Java課程中的數(shù)據(jù)結(jié)構(gòu)和算法累盗,如果你遇到困難,可以在這里查看我的解決方案突琳。

5. 你如何設(shè)計類似Pastebin的網(wǎng)站若债?

Pastebin允許你粘貼文本或代碼,然后在任意位置共享指向該代碼的鏈接拆融。它不是在線代碼編輯器蠢琳,但是你可以使用它來存儲任何類型的文本啊终。

6. 你將如何創(chuàng)建自己的Instagram? (解決方案)

Instagram是一個照片共享應(yīng)用程序傲须,它提供了一些自定義濾鏡以提高照片質(zhì)量孕索。你的應(yīng)用程序應(yīng)該具有照片上傳功能,為搜索標記照片以及一些基本的過濾器躏碳。如果你可以添加共享或社交網(wǎng)絡(luò)搞旭,那就太好不過了。順便說一句菇绵,如果你遇到困難肄渗,還可以在Educative的如何準備系統(tǒng)設(shè)計面試課程中看到免費的解決方案。

7. 你如何設(shè)計像Google Drive或Dropbox這樣的全局文件共享和存儲應(yīng)用程序咬最?

這些用于存儲和共享文件翎嫡,照片和其他媒體。你如何設(shè)計諸如允許用戶上傳/查看/搜索/共享文件或照片之類的東西永乌?跟蹤文件共享的權(quán)限惑申,并允許多個用戶編輯同一文檔?

8. 你如何設(shè)計類似Whatsapp或Facebook Messenger的聊天應(yīng)用程序翅雏?

你肯定使用過WhatsApp和Facebook圈驼?沒有?如果沒有望几,我告訴你聊天應(yīng)用程序允許你向你的朋友發(fā)送消息绩脆。這是點對點的連接。你保留一個朋友列表橄抹,查看他們的狀態(tài)并聊天靴迫。在WhatsApp中,你也可以連接組楼誓,但適用于高級和經(jīng)驗豐富的開發(fā)人員玉锌。至少,你應(yīng)該提供一種設(shè)計來保留好友列表并從中發(fā)送和接收消息疟羹。

9. 你如何設(shè)計Twitter克轮魇亍?

Twitter是一種流行的消息服務(wù)阁猜,可讓你向所有關(guān)注者廣播消息丸逸。你發(fā)布推文,你的關(guān)注者可以看到這些消息剃袍,他們可以喜歡或轉(zhuǎn)發(fā)黄刚。確保實現(xiàn)了諸如粉絲關(guān)注,主題標簽民效,發(fā)博憔维,刪除等常用功能涛救。如果你覺得自己有點困難,則可以按照如何應(yīng)對系統(tǒng)設(shè)計面試的課程解決方案進行操作业扒。

10. 如何設(shè)計像YouTube或Netflix這樣的全球視頻流服務(wù)检吆?

設(shè)計像NetFlix或YouTube這樣的視頻流服務(wù)時,關(guān)鍵是順暢和緩沖以及在低帶寬連接上的功能程储,如何應(yīng)對這些挑戰(zhàn)蹭沛?

11. 如何設(shè)計ATM機?

ATM機允許用戶存入和提取現(xiàn)金章鲤。它還允許用戶查看其余額摊灭。你如何設(shè)計這樣的系統(tǒng)?你面臨的主要挑戰(zhàn)是什么败徊?

12. 如何設(shè)計API速率限制器帚呼?

13. 你如何設(shè)計Twitter搜索?

14. 如何設(shè)計類似于Google的網(wǎng)絡(luò)爬蟲皱蹦?

網(wǎng)絡(luò)搜尋器可以訪問網(wǎng)站并像Google一樣搜尋所有鏈接并將它們編入索引煤杀,以便它們以后可以出現(xiàn)在搜索結(jié)果中。爬網(wǎng)程序還可用于在一組目錄中搜索特定文件沪哺,你如何設(shè)計此類文件沈自?主要挑戰(zhàn)是什么?

15. 如何設(shè)計Facebook的Newsfeed凤粗?你將使用哪種算法酥泛?

新聞源是Facebook的重要組成部分,它使用戶可以查看他的世界正在發(fā)生的事情嫌拣,包括朋友和家人,他喜歡的頁面呆躲,他關(guān)注的組以及Facebook廣告异逐。

Newsfeed算法的作用是顯示對用戶來說最重要的消息,并且可以產(chǎn)生很高的參與度插掂。顯然灰瞻,來自朋友和家人的消息應(yīng)該優(yōu)先處理。如果你覺得陷入困境辅甥,則可以按照如何做好系統(tǒng)設(shè)計面試的課程所提出解決答案酝润。

16. 如何設(shè)計Yelp或Nearby Friends?

17. 如何設(shè)計全球乘車服務(wù)E.G. Uber,Grab或Ola后端璃弄?

優(yōu)步(Uber)和奧拉(Ola)是最受歡迎的兩種乘車服務(wù)要销,它將駕駛員和乘客都組合到一起。你如何設(shè)計讓乘客看到附近的出租車并進行預(yù)訂夏块?

18. 如何設(shè)計BookMyShow疏咐?

一個允許你預(yù)訂電影院和活動門票的網(wǎng)站纤掸。這實際上是一家運轉(zhuǎn)良好的印度創(chuàng)業(yè)公司。

19. 如何設(shè)計Quora浑塞,Reddit或Hackernews等社交網(wǎng)絡(luò)+留言板服務(wù)網(wǎng)站借跪?

Reddit,Quora和HackerNews是一些最受歡迎的社交網(wǎng)站酌壕,用戶可以在其中發(fā)布問題或共享鏈接掏愁。其他用戶可以回答問題或?qū)蚕礞溄影l(fā)表評論。

20. 你如何設(shè)計類似Airbnb的應(yīng)用程序卵牍?

它允許某些用戶上傳房間出租托猩,而其他用戶則出租。某些功能僅適用于管理員辽慕,發(fā)布者和訂閱者京腥。

21. 你如何設(shè)計電梯系統(tǒng)?

我們大多數(shù)人都使用電梯溅蛉,你在一些大型辦公大樓中公浪,你可以看到3到4部電梯。你需要為此設(shè)計軟件船侧,以便可以在不同樓層快速使用欠气。你可以假設(shè)你有兩部電梯和一棟10層樓的建筑。

如果你需要一些幫助镜撩,那么我建議你可在Udemy上學(xué)習(xí)如何做好系統(tǒng)設(shè)計面試課程预柒,Rajat Mehta在那里有一個完整的案例研究來解決這個問題。你還將在那里學(xué)習(xí)高級系統(tǒng)設(shè)計袁梗,低級系統(tǒng)設(shè)計和數(shù)據(jù)庫設(shè)計宜鸯。

參考文章:

本文作者:Javin Paul, 翻譯:1 Way
原文鏈接:https://dzone.com/articles/21-object-oriented-and-system-design-problems-to-p
譯文首發(fā):http://blog.didispace.com/21-object-oriented-and-system-design-problems-to-p/

本文有spring4all技術(shù)翻譯組完成遮怜,更多國外前沿知識和干貨好文淋袖,歡迎關(guān)注公眾號:后端面試那些事兒。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锯梁,一起剝皮案震驚了整個濱河市即碗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌陌凳,老刑警劉巖剥懒,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異合敦,居然都是意外死亡初橘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來壁却,“玉大人批狱,你說我怎么就攤上這事≌苟” “怎么了赔硫?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盐肃。 經(jīng)常有香客問我爪膊,道長,這世上最難降的妖魔是什么砸王? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任推盛,我火速辦了婚禮,結(jié)果婚禮上谦铃,老公的妹妹穿的比我還像新娘耘成。我一直安慰自己,他們只是感情好驹闰,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布瘪菌。 她就那樣靜靜地躺著,像睡著了一般嘹朗。 火紅的嫁衣襯著肌膚如雪师妙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天屹培,我揣著相機與錄音默穴,去河邊找鬼。 笑死褪秀,一個胖子當著我的面吹牛蓄诽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播溜歪,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼若专,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蝴猪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤膊爪,失蹤者是張志新(化名)和其女友劉穎自阱,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體米酬,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡沛豌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片加派。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡叫确,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芍锦,到底是詐尸還是另有隱情竹勉,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布娄琉,位于F島的核電站次乓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏孽水。R本人自食惡果不足惜票腰,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望女气。 院中可真熱鬧杏慰,春花似錦、人聲如沸炼鞠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽簇搅。三九已至完域,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瘩将,已是汗流浹背吟税。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姿现,地道東北人肠仪。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像备典,于是被迫代替她去往敵國和親异旧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355