查看: 21905| 回复: 38
收起左侧

[经验总结] 从面试官+real world角度谈如何搞定系统设计 (别被某些热门教程误导了)

   
cwyabsolute | 显示全部楼层
本楼:   👍  65
93%
7%
5   👎
全局:   205
94%
6%
12

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

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

x

面了一些intermediate和senior level的system design,发现一些面试者被网上某些fancy教程搞得误入歧途,前期准备并不靠谱,想分享下自己的心得。欢迎大家给米奖励哈哈。


首先最常见的就是上来就垒一些当下最流行的tech stacks,以及非常时髦的新技术,反正怎么炫酷怎么来。这种情况在我眼里很可能就是没有实战经验纯粹纸上谈兵的redflag。毕竟system design是模拟实际工作中的项目,如果我让你设计一个generic customer facing feature,需要去关注load balance,k8s cluster,network mesh等这些底层的infra吗?这些基本都是假定infra team已经提供了。设计更多是关注这个product本身,而不是放一些fancy的技术。有些功能确实可能被cloud service给实现了,但是设计本身考的是你如何去实现他,而是不是考你对时髦技术的了解程度。这就像算法面试要是考二分法,你可以直接call built in functions,但这就是没有面试的意义了。更何况在现实工作中,大部分公司的tech stack都不是那么自由,不是说你想选哪个fancy database就可以直接support的😂😂


回到重点,那么系统设计重点是考什么?我想你要是有实际工作开发新功能的经验,都会明白在真实的design当中,tech stack和cloud service的选择很有限,作为product team更多关注的是data model designAPI接口设计。有时候甚至nosql还是relation db都没得选😂 除非你在infra,cloud相关的team,开发的产品是面向内部的developers,可能会自由选择各种fancy public service & framework。


比如设计一个product catalog service,最关键是这个系统有哪些data,每个object之间什么关系,data relation model搞定了,大致就清楚我需要哪些table,每个table的schema什么样,如何join在一起。接着就需要想这些data如何read/write,那么就是需要什么样的API,每个API的request/response长什么样?定义好这些后,那么就自然进入到系统如何设计这个问题,data processing需不需要offline workflows,为了scaling需不需要拆分service加入message queue。如何handle failures,数据可以暂时存在server local cache里面吗?给client 的response是sync还是async?如何retry等等。


另外在design过程交流很重要,想象一下在现实中要是有个同事的design找你review,但是他自顾自说,你在这方面很有经验但是插不进嘴,是不是很不爽?所以面试要时不时pause一下,问下面试官的feedback。design是tradeoff decision,没有绝对的对与错,所以要明白面试官打断你的时候对方的concern在哪,自己的设计哪些方面没有考虑?


最后,就像实际工作中design doc第一部分是function requirements/non-function requirements,面试中也是需要先把这些写下来。直接就开始画high level design,面试官在这都会扣分。还有就是别花太多时间计算traffic,storage size,除非面试官明确要求你计算,不然可以直接问peak QPS以及数据多大,我见过一些面试者花了不少时间计算,但最后这个计算也并没有为他们的设计服务,就很无用功。。


还想抨击下某些不实用的design题目,比如rate limiter这些就是在考算法具体实现,或者design s3, aws ddb,现实工作这么硬核的design只是少数team在做。。


先说这么多,后续可能会补充把,希望大伙给点米😀

评分

参与人数 40大米 +120 收起 理由
gwy + 1 赞一个
sarharast + 1 赞一个
whyisyoung + 1 赞一个
SlayerEcho + 1 赞一个
Cika120 + 1 很有用的信息!

查看全部评分


上一篇:做了个说写画三位一体的system design的练习平台,真实模拟面试过程。
下一篇:OSS ML Orchestrator Flyte 源码学习

本帖被以下淘专辑推荐:

矿大男神 2024-9-14 12:14:00 | 显示全部楼层
本楼:   👍  22
100%
0%
0   👎
全局:   3516
93%
7%
279
楼主说的很好,sys design是内功,你提问的方式和思考的方式,以及approach问题的方式,非常体现平时的积累和思考过程。很多时候高手过招,只需要点到即可就知对方水平如何。
很多教程会讲的很细,其实是挺好的,但是面试的时候展开讲其实性价比不是很高,例如rate limiter里面的bucket算法有是如何实现的token bucket和其他的区别这些其实不重要,这些算法实际上就是一个参数的区别。
当你还在纠结sql vs no sql的时候,相比楼主问出:“data processing需不需要offline workflows,为了scaling需不需要拆分service加入message queue。如何handle failures,数据可以暂时存在server local cache里面吗?给client 的response是sync还是async?如何retry等等。”
我相信此时高下立判了。
回复

使用道具 举报

本楼:   👍  17
94%
6%
1   👎
全局:   3818
96%
4%
175
cwyabsolute 发表于 2024-09-13 20:16:17
感慨一下。快2年没有来地里,就想着写个帖子分享下,没想到头几个回复的都在质疑我。你们要是觉得哪个不同意直接说,别傻X地问我拿过几个offer,我要是说靠这个办法
因为你全篇以为的考什么都非常主观却以为自己就是真理,并且前后自相矛盾。开始说设计不考你怎么用就非要考你实现,已经是典型的面试造火箭工作拧螺丝的2b面试思路。自己会原理的就瞧不起别人懂新框架新技术的,后面碰到自己不会的赶紧说object storage会用就行了不用懂设计还喷这么考不合理呵呵。在工作久的人做面试官他可以说object storage就是基础设计你会的s3 GCS就是些fancy技术,在会新技术的人眼里你懂的那些也就是些不需要知道原理的底层东西。谁还没有个自己的出发点,所以前面人说了你是面试官你说什么都对。总结,全篇根本不是个分享只是个充满拉踩的主观说教
回复

使用道具 举报

三老板 2024-9-15 02:15:44 | 显示全部楼层
本楼:   👍  13
100%
0%
0   👎
全局:   431
94%
6%
26
楼主说的挺好  但是仅限于API相关的面试题。 可惜的是API的设计最多会出现50%。 比如rate limit 我就被不同的公司面过至少3次。 最牛的一次是把不同公司的实现 进行比较。 而实际工作中在你的api里就是个configuration 或anotation。

所以准备SD 还是要DDIA + Alex xu  and  mocks

评分

参与人数 1大米 +1 收起 理由
gwy + 1 赞一个

查看全部评分

回复

使用道具 举报

vam 2024-9-14 07:48:46 来自APP | 显示全部楼层
本楼:   👍  11
55%
45%
9   👎
全局:   5138
96%
4%
225
你是面试官,你怎么说都对。
要不你把你这套,去拿几个大offer,甩我脸上
回复

使用道具 举报

heybunny 2024-9-14 07:50:17 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   198
96%
4%
8
为什么不直接用ood coding来考察?
回复

使用道具 举报

poiuytre 2024-9-14 07:50:47 来自APP | 显示全部楼层
本楼:   👍  5
63%
37%
3   👎
全局:   297
97%
3%
9
你先上一下市场再叫。
回复

使用道具 举报

本楼:   👍  4
100%
0%
0   👎
全局:   9988
97%
3%
288
每个面试官想考察的点不一样
回复

使用道具 举报

xiaomajia2hao 2024-9-14 09:27:38 | 显示全部楼层
本楼:   👍  5
56%
44%
4   👎
全局:   521
93%
7%
42
你先拿两个offer再叫...
回复

使用道具 举报

本楼:   👍  8
100%
0%
0   👎
全局:   74
100%
0%
0
不明白楼上为什么戾气那么重,
我觉得楼主的分享挺好的啊

回复

使用道具 举报

CrescentGG 2024-9-14 13:03:36 | 显示全部楼层
本楼:   👍  6
100%
0%
0   👎
全局:   97
96%
4%
4
本帖最后由 CrescentGG 于 2024-9-13 22:10 编辑
cwyabsolute 发表于 2024-9-13 20:16
感慨一下。快2年没有来地里,就想着写个帖子分享下,没想到头几个回复的都在质疑我。你们要是觉得哪个不同 ...

哈哈哈哈,我也不太懂喷的点在哪,这一套思路有啥不能拿offer的??我最近面SD的就是和lz的思路一样,已经拿了一个offer。本来也想写点思路分享,不过lz把我想说的基本上都说了哈哈哈

现在回头看市面上大部分教SD的课程和文章都太浅显,脱离实际,没有提及核心的tradeoff。alex xu的算相对好一点的但有些内容重点也没抓对
回复

使用道具 举报

夏日柠檬红茶 2024-9-14 20:06:46 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   289
99%
1%
3
谢谢分享
如果工作中,没有机会接触到比较复杂、高并发的系统,业余时间有什么好的办法去学习呢?自己搭一个?我尝试了,但是失败了,因为搭建出来的系统和企业级的比起来还是小巫见大巫。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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