设计某某系统 / 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
…………
内容很多,全是干货 几行文字写不下,需要的快来听完 满分应考指南就是它👇
东邪老师只用了两个小时 就把这些系统设计的难题解释清楚了👇
系统设计历来都是大厂招聘“老手”的第一层漏斗。躲不掉系统设计也并非一定是坏事,因为它和算法题一样,喜欢考原题。运气好的,可能几家面试考得都是同一题。
历年原题基本就等于系统设计的题库,不仅大公司考,小公司考系统设计也是考这些。比如前文讲的设计 Twitter 可谓年年考,准备秋招的小伙伴千万别忘了重点复习。
这个题目我们在系统设计第一节免费试听课有完整的讲述,近期有面试和正在备战秋招的同学一定要去听一下。免费不等于没价值,系统设计的试听课没别的,全是干货。
除了经典题目的讲解,系统设计班更多的还是教大家如何在限定条件内展现自己的能力和知识储备,构建一个有细节,有整体框架的 work solution。
如果你拿到系统设计题经常毫无头绪或是憋出来的 perfect solution 残缺不全满是漏洞,也一定要来免费试听一下我们的课程。