查看: 19467| 回复: 14
收起左侧

[自我提升] 系统设计面试的心得分享

   
匿名用户-7VKVC  | 添加认证 | 2024-6-18 11:44:25
本楼:   👍  52
100%
0%
0   👎

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

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

x
. 1point 3acres
最近面L5/L6的系统设计的结果都还不错,大言不惭的分享一下心得吧,希望对大家有所帮助。不一定适用所有人,只是个人心得。

. 1point3acres
大佬们请轻拍。. ----

准备

如果时间充裕的话,建议好好系统性学习一下


如果时间不充裕的话,可以着重准备一下以下系统怎么做的
一些经典设计题
  • 推荐系统,类似twitter,ins
  • 聊天室,视频会议
  • Fraud detection/protection
  • keyword search,例如google搜索,电商搜商品
  • geo search,查找最近商铺
  • 通知推送服务



目的是虽然没做过高并发,低延迟的,也要做到”没吃过猪肉,也见过猪跑”。


准备材料
  • 毕业生或者新人可以网上看一些系统设计的讲解,但需要自己甄别一下,很多系统设计其实是有问题的。所以看一些点赞多的,一般坑会少很多。
  • L5/L6+可以尝试在网上的一些常见答案上思考如何做的更好,哪里有不足。

. 1point3acres
面试流程
. 1point 3 acres-baidu 1point3acres


时间控制很重要,有限的时间尽可能讲清楚自己的设计,并且展现自己的能力。
.1point3acres

这个是我的流程,纯粹个人经验
  • clarification,重视业务逻辑范围。
  • overall picture,讲一下整体情况,需要哪些模块,并讲清楚设计的范围。
  • deep-dive,注意核心是数据,从数据出发来思考问题会容易很多。例如DB schema,API的定义,每个服务的核心逻辑。
  • scale up,这是最复杂的。同时latency optimization(例如加cache)。这个时候需要去讨论数据量的问题。L5+记得一定要解释为什么。
  • L5+,记得讨论tradeoff,有多个选项,你是怎么取舍的,取舍的理由是什么。
  • L6+,讨论极端情况,各种failure的recovery。但容易给自己挖坑。最好结合自己的工作经验去讲


. Χ
举个栗子,例如geo search
  • clarification:最近的商铺,问问面试官,是不是yelp?排序是按照远近还是相关性?新开的商铺是不是可以等一段时间才能搜索到
  • overall picture:讲一讲用户的数据从哪里来,怎么和geo index match,还需要需要pipeline给index送数据
  • deep-dive:geo index的API怎么设计。geo index内部结构,要是知道geohash,可以大致说一下那个里面怎么工作的,其实不知道也没事,但需要讲清楚怎么经纬度切分。index building pipeline用什么方式,push-based的话要不要一个index building service。数据在index里怎么存。
  • 开始思考scale up,总体上就是思考如果一台服务器不行,怎么分布式。例如geo index,数据量太大,需要上集群,怎么让服务器均衡。L5/L6 可以适当加入自己的经验。
  • tradeoff,例如近距离的geo request可以cache一下,因为反正差几米,结果差不多,tradeoff是最近的K个店的准确度低了一些。这个一般没有正确答案,重要的是自圆其说
  • 极端情况,如果一个地方商铺高度集中。


注意事项
.--
需要存SQL和KV store,可以想一想存的primary key是什么,schema是什么,index是什么。.1point3acres
无论consistency hashring,index,可以停下来想一想什么是key,为什么这个可以满足read或者write的需求。
有些面试官喜欢主导系统设计的过程,这时候就听他们的问题,然后给出具体的解决方案。-baidu 1point3acres
有时候面试官会问你,这个地方可以加一个东西,或者删一个东西么?有时候面试官想提醒你;有时候面试官是想考你,看你是不是真的理解,注意需要自己甄别。


最后对所有的面试官,大家能拉一把就拉一把,能笑嘻嘻就笑嘻嘻的,真心对面试者很大的帮助。


祝大家工资翻倍,offer多多
还有求大米,求大米,求大米

评分

参与人数 48大米 +62 收起 理由
lizk + 1 赞一个
阿筒阿筒 + 1 赞一个
奋斗中 + 1 赞一个
marshal_mxq + 1 赞一个
Cinny080808 + 1 很有用的信息!

查看全部评分


上一篇:该不该裸辞回国?
下一篇:准备跳槽,请问我这种情况该怎么离职

本帖被以下淘专辑推荐:

t__c___ 2024-6-19 00:20:55 | 显示全部楼层
本楼:   👍  10
100%
0%
0   👎
全局:   1605
97%
3%
53
非常实用 现在太多SysDesign都是高大全那套模板 其实很多时候就只需要一个正常的系统 然后再讨论Scale的需求.

借楼分享一个我个人常用的的requirement clarification方式

如果面试官贴一个题目,注意里面的名词和动词。functional requirement往往可以转换成一个API,所以我在clarify req的时候会同时写个API。
比如这个Yelp,就是place/store,然后position和distance,需要的核心API就是 list(position),辅助的API可能是增改删一个店什么的。讨论完Requirements就有:
As a provider, CRUD, createPlace(position, owner, ...) -> Place/exception.
As a user, list(position, radius, ...) -> List<Place>

接下来讨论use case workflow的时候,这些API都是entry point。

评分

参与人数 1大米 +1 收起 理由
Yuzuka + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

地里匿名用户
匿名用户-7VKVC  | 添加认证 | 2024-6-19 08:26:16
本楼:   👍  2
100%
0%
0   👎
匿名用户 发表于 2024-6-18 22:43
楼主你这个分享靠谱多了,能贴一下楼主认为好的答案链接么?

以geo search举例吧,. 1point 3acres
如果你搜索google youtube,你可以看到这个排名第二位,点赞数也很高。
https://www.youtube.com/watch?v=M4lR_Va97cQ

我稍微快速扫了一下,解释的很详细,并且告诉大家为什么要这么设计。这种就是好的设计,很值得学习。
.
如果想试试L6+,可以试试思考更好的改进
1. 虽然这个视频里说不要cache了,但如果近距离的geo request可以cache一下,因为反正差几米,结果差不多,是不是一个值得优化的方式?
2. 这个视频并没有详细讨论太多failure的情况,如果发生了,怎么处理?
等等
回复

使用道具 举报

地里匿名用户
匿名用户-EOHFN  | 添加认证 | 2024-6-19 02:50:16 来自APP
本楼:   👍  2
100%
0%
0   👎
tequilasunrise 发表于 2024-06-18 11:10:16
10年前的书 感觉很多内容不太适用了?
我觉得很实用。面试的时候考的就是这些。我也不是写infra的但是总是会被问。分布式系统负载均衡,一致性什么的都很重要。你要是有能力突破技术的上限,设计可用的系统我觉得6就没啥问题了。
回复

使用道具 举报

ztinpn6 2024-6-18 14:25:28 来自APP | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   60
91%
9%
6
求分享”点赞多的”具体链接
回复

使用道具 举报

elevator 2024-6-18 14:48:30 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   421
95%
5%
24
感谢分享  请问都是啥公司给的面试呢?
回复

使用道具 举报

地里匿名用户
匿名用户-8ZODQ  | 添加认证 | 2024-6-18 22:43:10
本楼:   👍  0
0%
0%
0   👎
楼主你这个分享靠谱多了,能贴一下楼主认为好的答案链接么?
回复

使用道具 举报

地里匿名用户
匿名用户-EOHFN  | 添加认证 | 2024-6-18 23:48:34 来自APP
本楼:   👍  1
100%
0%
0   👎
我没被要求过提供api design或者db schema。讲这个的话我觉得根本讲不完,太细了。

high level design的时候就要把系统主要部分讲的差不多,这部分用来保证功能性指标。
. . From 1point 3acres bbs
然后重点讲tradeoff,fault tolerance 和 perf assurance。特别是系统压力大的时候你的设计怎么满足你和面试官确认过的系统性能指标。

感觉这两点讲差不多,5这个级别就够了。

评分

参与人数 1大米 +1 收起 理由
tequilasunrise + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

tequilasunrise 2024-6-19 00:20:03 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   152
97%
3%
5
匿名用户 发表于 2024-6-18 08:48
我没被要求过提供api design或者db schema。讲这个的话我觉得根本讲不完,太细了。

high level design的时 ...
. ----
请问有什么书或者资料 可以学习这方面的重点知识?
回复

使用道具 举报

地里匿名用户
匿名用户-EOHFN  | 添加认证 | 2024-6-19 00:34:53 来自APP
本楼:   👍  0
0%
0%
0   👎
tequilasunrise 发表于 2024-06-18 09:20:03
请问有什么书或者资料 可以学习这方面的重点知识?
DDIA。
回复

使用道具 举报

地里匿名用户
匿名用户-8ZODQ  | 添加认证 | 2024-6-19 00:54:50
本楼:   👍  0
0%
0%
0   👎
t__c___ 发表于 2024-6-18 09:20
.google  и非常实用 现在太多SysDesign都是高大全那套模板 其实很多时候就只需要一个正常的系统 然后再讨论Scale的需 ...

. 1point3acres.com 如果是intermediate level (3年左右要求的岗位), 能说出这些再把具体的实现和里面一些浅层的坑说清楚,就已经很不错了。
回复

使用道具 举报

aliasme 2024-6-19 01:58:05 | 显示全部楼层
本楼:   👍  0
0%
0%
0   👎
全局:   1955
95%
5%
96
毕业生面sd感觉没什么必要啊,即使自己做过project也不会是什么大型应用。逼着人背书很没意思。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
职场达人
  • ↑ 本版用于讨论职场各种干货话题,闲聊请去🔗聊聊或者🔗匿名版
  • ❌ 本版严禁水贴,引战,发布广告,拉群,贴个人联系方式,扣分无警告
  • ☑ 求职、面经等去 🔗北美求职和 🔗回国求职大区,刷题和学习请去 🔗终身学习大区
  • ☑ 请去专版发布 🔗内推, 🔗招聘信息,和讨论 🔗创业内容
  • ☑ PIP / DevList/ Need Support 等话题也已开设 🔗专版

本版积分规则

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