設計某某系統/ Design XXX System
是系統設計最常見的面試問題
如果被考到Design Twitter
怎樣才能讓面試官給你打高分呢?
頂尖工程師東邪不請自來
給大家提供滿分回答的模板✌
1、首先,詢問面試官👇
①需要設計哪些功能?(也可以自己想)
②需要承受多大的訪問量?
·日活躍用戶 Daily Active Users (DAU)
·Twitter: MAU 330M, DAU ~170M+
2、然後,開始進行功能設計👇
Step 1:Enumerate
(說人話:把Twitter的功能一個個羅列出來)
• Register / Login• User Profile Display / Edit
• Upload Image / Video *• Search *
• Post / Share a tweet• Timeline / News Feed
• Follow / Unfollow a user
Step 2:Sort
(說人話:選出核心功能,
因爲你不可能這麼短的時間什麼都設計)
• Post a Tweet• Timeline• News Feed
• Follow / Unfollow a user• Register / Login
3、接着,進行Analysis & Predict
• 併發用戶 Concurrent User
• 日活躍 * 每個用戶平均請求次數 / 一天多少秒 = 150M * 60 / 86400~ 100k
• 峯值 Peak = Average Concurrent User * 3 ~ 300k
• 快速增長的產品 Fast Growing
• MAX peak users in 3 months = Peak users * 2
• 讀頻率 Read QPS (Queries Per Second)
• 300k
• 寫頻率 Write QPS
• 5k
4、分析出 QPS 有什麼用?
• QPS = 100
• 用你的筆記本做 Web 服務器就好了
• QPS = 1k
• 用一臺好點的 Web 服務器就差不多了
• 需要考慮 Single Point Failure
• QPS = 1m
• 需要建設一個1000臺 Web 服務器的集羣
• 需要考慮如何 Maintainance(某一臺掛了怎麼辦)
• QPS和 Web Server (服務器) / Database (數據庫) 之間的關係
• 一臺 Web Server 約承受量是 1k 的 QPS (考慮到邏輯處理時間以及數據庫查詢的瓶頸) • 一臺 SQL Database 約承受量是 1k 的 QPS(如果 JOIN 和 INDEX query比較多的話,這個值會更小)
• 一臺 NoSQL Database (Cassandra) 約承受量是 10k 的 QPS
• 一臺 NoSQL Database (Memcached) 約承受量是 1M 的 QPS
…………
內容很多,全是乾貨
幾行文字寫不下,需要的快來聽完
滿分應考指南就是它👇
東邪老師只用了兩個小時
就把這些系統設計的難題解釋清楚了👇
- 系統設計中常說的 Tradeoff 是什麼
- 什麼叫做 SOA (Service Oriented Architecture)
- 什麼是 Pull Model & 什麼是 Push Model
- 數據存儲系統有哪些,什麼樣的數據適合存在什麼樣的數據存儲系統中
- 什麼是異步任務和消息隊列 (Message Queue)
- 什麼是數據的可持久化 (Persistent)
- 什麼是去標準化 (Denormalize)
- 什麼是驚羣效應 (Thundering Herd)
- 有哪些與 News Feed 類似的系統設計問題?
面試官很懶,考來考去就這幾題
系統設計歷來都是大廠招聘“老手”的第一層漏斗。躲不掉系統設計也並非一定是壞事,因爲它和算法題一樣,喜歡考原題。運氣好的,可能幾家面試考得都是同一題。
歷年原題基本就等於系統設計的題庫,不僅大公司考,小公司考系統設計也是考這些。比如前文講的設計Twitter可謂年年考,準備秋招的小夥伴千萬別忘了重點複習。
這個題目我們在系統設計第一節免費試聽課有完整的講述,近期有面試和正在備戰秋招的同學一定要去聽一下。免費不等於沒價值,系統設計的試聽課沒別的,全是乾貨。
除了經典題目的講解,系統設計班更多的還是教大家如何在限定條件內展現自己的能力和知識儲備,構建一個有細節,有整體框架的work solution。
免費試聽方式
免費試聽內容
- 如何設計Twitter?
- 怎樣回答系統設計問題?
- 系統設計中常見的問題是什麼?
如果你拿到系統設計題經常毫無頭緒或是憋出來的perfect solution殘缺不全滿是漏洞,也一定要來免費試聽一下我們的課程。
講師介紹
適合誰?
- 無任何算法基礎和系統設計基礎
- 只懂一些系統設計的理論知識,缺乏實際應用
- SD水平不低卻無法在面試中展現出來
- 短期內要參加大廠面試的老鳥