一亩三分地

 找回密码 注册账号

扫描二维码登录本站

微信公众号
扫码关注公众号
留学申请号
扫码关注留学申请公众号
查看: 32511|回复: 81
收起左侧

[经验总结] 一篇文章解决所有system design面试

    [复制链接] |只看干货
我的人缘0

升级   1.08%


分享帖子到朋友圈
yuyahome | 显示全部楼层 |阅读模式
本楼: 👍   100% (36)
 
 
0% (0)   👎
全局: 👍   99% (664)
 
 
0% (3)    👎

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?注册账号

x
你为什么要写这个?
从论坛受益(💰)匪浅,聊以此作为回馈。

你有什么资格写这个?
我没资格。我是个菜🐔。但是我闲啊

系统设计面试考什么?
考你如何做tradeoff,考你对一项技术的了解,考你分析问题的能力,等等

怎么才算答的好?
最理想的状况就是:题目给出来,你就知道这个系统大概的结构会是怎么样的,所有的考点在哪里。

怎么做到立刻知道大概的结构
你得看过这些结构并且知道它所有的tradeoff,知道它用到的所有技术等等,现场凭借经验想是只有大牛才能做的活。我等憨憨还是老实学习现有的系统把。

怎么知道考点在哪里?
想想如果你是面试官你会问什么?在看其他人设计的结构的时候带着问题去看带着问题去看带着问题去看,设想哪里你可以提出什么样的问题,这样慢慢你就会有体会了。
举个例子,系统设计要用到message queue,大半会提到kafka。这个时候你得知道面试官会问kafka什么?他八成会问用kafka有什么问题。有啥问题?kafka只保证at least one time delivery。你最好给每个message加sequence number来防止duplictes
(是的我知道kafka后来promise了exact one time delivery的feature。不过没人用)
类似这样,你得在面试官问出来之前就知道问题是啥。这是可以做到的。只要你总是带着问题去看。

看什么?educative上的那个么?
那个只是入门,它是个好课但是不能应付所有的面试。原因:
1. 它最大的问题就是它是作者的一家之言。作者所描述的系统很多其实并不是真实的在生产环境下的系统的样子
2. 看完了你还是不知道会被问到什么问题
3. 很多考点作者没有展开,比如考的最多的tinyurl,作者并没有提到cache部分的设计的考虑。在生产环境中如何refresh cache?如何invalidate一个cache中的url?用memcache还是redis?作者并没有说但是真的会有人考(我就被考到了)

所以它不值得看么?
不,它很值得看,目前来看它是最好的入门教材。建议看五遍,建议把每个不懂的词都google出来完全完全看懂。比如常常常常考到的bloomfilter,发现很多新手没看这个之前也许你还没见过这个词。请google出它的pro/con和怎么用什么时候用等等。以此类推。

你说看这个不够,那看什么?
1. 看Design Data Intensive Application这本书。请买这本书。有空就看。请一定把第二部分全部看完。有精力请看第三部分。第二部分请看3遍。第二部分能够解答40~50%你遇到的跟data有关的设计
2. 最重要的而且并没有多少人提到的,请看各个大公司的engineer blog。非常非常非常重要非常非常非常重要非常非常非常重要非常非常非常重要非常非常非常重要非常非常非常重要非常非常非常重要非常非常非常重要非常非常非常重要非常非常非常重要非常非常非常重要

啥?blog有啥好看的?
1. blog提到的系统就是现在在生产环境的系统
2. blog会提到各种tradeoff以及做这种设计的原因
3. 好的blog会给出各种详细的细节,甚至源代码(当然你不需要阅读源码这么深入)
4. blog提到的系统很容易拿来举一反三
游客,本帖隐藏的内容需要积分高于 20 才可浏览,您当前积分为 0。
查看如何攒积分 Click here for more info.

我有问题?
请留言。

祝大家都能拿好offer。



补充内容 (2019-10-14 11:07):
如果觉得有帮助求大米啊 :)

评分

参与人数 224大米 +486 收起 理由
xtt2016 + 1 给你点个赞!
leohe062114 + 1 赞一个
kid_1412 + 3 很有用的信息!
榕树下的孩子 + 2 给你点个赞!
sorigin + 1 给你点个赞!
_Perry + 2 给你点个赞!
JFreeman + 3 给你点个赞!
GibbsEnsemble + 2 给你点个赞!

查看全部评分

本帖被以下淘专辑推荐:

我的人缘0

升级   1.08%

 楼主| yuyahome 2019-10-14 10:48:32 | 显示全部楼层
本楼: 👍   100% (12)
 
 
0% (0)   👎
全局: 👍   99% (664)
 
 
0% (3)    👎
关于blog,我在 https://www.1point3acres.com/bbs/thread-543700-2-1.html  回复了别人找blog的方法,粘贴过来,希望能帮到更多人

对每家onsite的公司 -> 在地里翻完最近两年所有onsite面筋aggregate所有design题目 -> 对每个题目找工业界实现的blog -> 阅读每个blog,选中最好的一到两个 -> 读到烂熟,整理出我当面试官的话会问的所有问题不停考自己 -> 白板英文自行mock 3遍 -> over

举个栗子:
面试lyft -> lyft喜欢考payment system -> google之 -> uber有个分布式的实现,不怎么详细,airbnb有个非常详细的SQL sharding的实现,很详细在它的blog上,采用
然后lyft onsite果然考了,秒了

评分

参与人数 11大米 +34 收起 理由
biglittlethings + 2 给你点个赞!
红A + 20 给你点个赞!
paul0127 + 1 给你点个赞!
Will037 + 1 给你点个赞!
亚特兰蒂斯 + 2 很有用的信息!
y111d + 1 给你点个赞!
IreneXX + 1 赞一个
jinliYYQ945 + 3 给你点个赞!

查看全部评分

回复

使用道具 举报

我的人缘0

升级   1.08%

本楼: 👍   100% (4)
 
 
0% (0)   👎
全局: 👍   99% (664)
 
 
0% (3)    👎
Hmoon 发表于 2019/11/23 10:29:41
哦,谢谢你的回答,你觉得过完Grokking the System Design Interview和data inte...
grokking我看了五遍吧,主要是看思路和他的套路。他有几篇写的真的不好比如最后的ticketmaster,YouTube 和另外的忘记了。。但是他每篇文章的流程都是标准的面试流程,提出的问题也都算有价值。我花了大概两周来消化。因为边看边查资料,包括回去看DDIA,Google,看blog,看论文。
DDIA我第二部分看了好久,我觉得只谈第二部分的话看一遍肯定不够的,推荐画两到三周细品。
我最多的时间花在了看各个公司的blog上。比如uber那篇我看了估计10遍扣细节.
总共花在系统设计上的复习时间是大概两个月。
这也是为啥我文中说从0开始入门两个月也就够了。

评分

参与人数 4大米 +8 收起 理由
biglittlethings + 2 给你点个赞!
waileisea + 1 很有用的信息!
SamLi123 + 2 很有用的信息!
jinliYYQ945 + 3 给你点个赞!

查看全部评分

回复

使用道具 举报

我的人缘0

升级   18.65%

zorrowei 2019-11-18 00:20:23 | 显示全部楼层
本楼: 👍   100% (2)
 
 
0% (0)   👎
全局: 👍   93% (140)
 
 
6% (9)    👎
xqfly 发表于 2019-11-17 18:56
大牛,能给些例子吗?

我是小偻罗,你是大佬呀!Netflix发表cache相关的文章:
https://medium.com/netflix-techb ... to-ssd-a33d6fa7a690

https://medium.com/netflix-techb ... g-ssds-5bf25df851ef
https://medium.com/netflix-techb ... etflix-7bcc457012f1

https://medium.com/netflix-techb ... to-ssd-a33d6fa7a690
https://medium.com/netflix-techb ... ervice-2d3b1da82642


https://www.youtube.com/watch?v=Rzdxgx3RC0Q

你去netflix的blog可以看到很多 part-n这种系列文章。
你要是看到有比较深入讨论的文章,不妨也share给大家呀。


评分

参与人数 1大米 +2 收起 理由
biglittlethings + 2 给你点个赞!

查看全部评分

回复

使用道具 举报

我的人缘0

升级   2.93%

zehrs 2019-10-13 23:02:43 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   93% (256)
 
 
6% (18)    👎
谢谢楼主无私的分享,这篇文章很棒!
回复

使用道具 举报

我的人缘0

升级   59.86%

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   97% (1861)
 
 
2% (43)    👎
谢谢分享!!现在就拿出design data intensive application出来看😂
回复

使用道具 举报

我的人缘0

升级   21.43%

wangchengxuan 2019-10-15 11:00:11 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   96% (27)
 
 
3% (1)    👎
yuyahome 发表于 2019-10-14 10:48
关于blog,我在 https://www.1point3acres.com/bbs/thread-543700-2-1.html  回复了别人找blog的方法,粘贴 ...

楼主说的airbnb payment是这篇吗?https://medium.com/airbnb-engine ... system-2981f6b070bb

是的话,不知楼主对post-rpc 那步怎么看?个人理解,post-rpc那部如果失败的话,还是会造成double payment。
回复

使用道具 举报

我的人缘0

升级   1.08%

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   99% (664)
 
 
0% (3)    👎
wangchengxuan 发表于 2019/10/15 11:00:11
楼主说的airbnb payment是这篇吗?https://medium.com/airbnb-engineering/avoiding-double-payments-in-a-distrib...
是这篇。 那个失败了的话是stripe/bank的责任,多扣了钱也是他们的责任我们airbnb不用也不应该关心

补充内容 (2019-11-17 18:24):
简单点说,postRPC必须是idempotent的。当系统每个部分都是idempotent的时候,retry总能解决问题
回复

使用道具 举报

我的人缘0

升级   61.71%

cser017 2019-10-16 06:22:22 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   99% (731)
 
 
0% (2)    👎
这篇总结真的强~ 给楼主的努力以及慷慨点赞打call!
回复

使用道具 举报

我的人缘0

升级   0.5%

inkhay2019 2019-10-17 06:07:43 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (36)
 
 
0% (0)    👎
这是一篇好总结。点赞!
回复

使用道具 举报

我的人缘0

升级   18.65%

zorrowei 2019-10-18 03:05:21 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   93% (140)
 
 
6% (9)    👎
我的搞法和楼主一个套路。就是没有allocate那么多时间。我自己安排太多时间做算法题了。哎.....
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

隐私提醒:
■拉群请前往同学同事飞友|拉群结伴版块,其他版块拉群,帖子会被自动删除
■论坛不能删帖,为防止被骚扰甚至人肉,不要公开留微信等联系方式,请以论坛私信方式发送。
■特定版块可以超级匿名:https://tools.1point3acres.com/thread
■其他版块匿名方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版|||一亩三分地

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

Some icons made by Freepik from flaticon.com

快速回复 返回顶部 返回列表