查看: 8150| 回复: 14
跳转到指定楼层
上一主题 下一主题
收起左侧

[找工就业] [找工面试指南][系统设计]FLAG面试官谈系统设计

   
全局:

2021(7-9月)-CS硕士+5-10年 | Other|BayArea湾区 码农类General全职@FLAG

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

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

x
我现在FLAG之一任职工程师,面试了几十场系统设计,最近也有帮朋友辅导过系统设计,见过一般求职者容易在系统设计的时候犯的一些错误,在这里抛砖引玉一下,欢迎讨论哈:-)

系统设计是什么
美国这边在面试的时候,对于有经验的面试者喜欢加上System Design,以此作为bar raiser,联合past project experience和Behavior Questions面试去评价面试者的级别,一般来说面试官对越senior的candidate,系统设计的要求会越高
. .и
系统设计考点
完整性
系统的完整性是第一要求。这里的完整性不是说要求你把系统从如何设计数据库的表,如何做ranking,如何做存储,如何做load balance全部给一口气设计完。这里的完整性指的是你设计的系统data flow从面试官给的起点到终点是不是整清楚了,是不是cover了面试官给出的use case。也就是说答案的完整性是面试基准线,答不完整基本上面试就挂了。至于怎么保证完整性,跟后面的精确度息息相关

精确度
精确度是指能不能够把模糊的系统需求弄清楚。系统设计的面试官会故意把系统需求弄得很模糊,旨在弄清楚candidate能否提问出合理的问题,把系统的use case和行为给define清楚。这也是经验的价值所在。比如说面试官可能会让你设计一个即时的text searching的功能。比较senior的candidate会问text searching是什么text searching呢?是google那种按回车就给出很多搜索结果,还是每打一个字母就给出一个列表去suggest potential word。

策略的优劣分析
.. 策略的优劣分析是整个设计题的题眼。保证了完整性和精确度之后,相信你在和面试官的沟通一定做得很不错,一般能够reach到E4/T4左右bar,如果想要到senior level的话,那最重要的就是做好策略的优劣分析。比如说数据有什么不同的存储策略,怎么样做sharding,好处和坏处是什么
. Χ

除此之外,还有一些考点比如说scalability啊,怎么样解耦合,怎么做好功能分块,technical communication等等的,不过我在这里抛出几个最重要的标准以便大家准备。


常见问题
  • 一般系统设计不考利用具体DB和component去做设计,重要的是generic的approach。我之前有一个今日头条的朋友来面我们公司,之后挂了,他说他面系统设计的时候一上来就说用某某framework诸如此类的东西去设计系统。因为现在各种framework迭代很快,所以其实强调来也没有任何作用,更何况面试官也未必知道这些framework,那就很容易鸡同鸭讲。比如我们在说数据库的时候,我们不需要说是用mysql还是用redshift,直接说是RDBMS或者是nosql就ok了。如果要加一个stream processing的一层,你可以提到一下kafka,但是最重要的还是stream这一层的解耦合,不需要在service maintain不同的state,这样子面试官才知道candidate理解这些系统的设计理念。
  • 不要先入为主。很多candidate都有先入为主的问题,在开始设计之前就把其他题目往面试题目上面套。问清楚功能需求,use cases,输入输出,描绘清楚data flow


最后跪求大米!!!贫农揭不开锅了TAT. check 1point3acres for more.

评分

参与人数 42大米 +129 收起 理由
xy06221109 + 1 感谢楼主,好人有好报!
天天开心呀 + 1 很有用的信息!
IMIBUCM + 1 很有用的信息!
zx2018 + 1 赞一个!
nbcruz + 1 赞一个

查看全部评分


上一篇:LinkedIn DS 跪求大佬捞走
下一篇:转码的疑惑

本帖被以下淘专辑推荐:

推荐
ymsfd007 2021-5-23 08:29:39 | 只看该作者
全局:
我的思路,主要是从开发流程角度来解构:
1. 这一步,把面试官当PM,挖出所有产品需求,一个好的eng是要会问问题的,是能做到产品flow的每一步都在脑子里都crystal clear
-baidu 1point3acres
下面,把面试官当做你的team来对待:
2. 产品需求好了,转化成service,这一步就是设计API/service
3. 预估流量和数据量,再加上data access pattern,决定后台的大体架构,解决什么规模的问题就用什么规模的轮子,这一步做到E2E flow完整,这一步的trade off主要是在整体设计理念上,比如数据总量不太多,能用memory就能搞定的问题就别上数据库。
4. 基本E2E完整了,就要考虑scale up了,这一步就会有更多更细节的trade off,option更多,比如shard by user id还是object id之类的,会影响第三步的一些子模块,但一般不会完全推翻第三步的总体思路。

最后有一点很重要,尤其是senior candidate,一定要像平时lead的你的人一样气场强大思路清晰,drive整个设计流程,fake it till you make it :)

评分

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

查看全部评分

回复

使用道具 举报

全局:
感谢楼主分享,收藏了,已加米
回复

使用道具 举报

全局:
先加米再看
回复

使用道具 举报

全局:
请教楼主一下:面试时候是最好像网上一些 mock 视频一样,分析数据量qps,把整个框架包括 database/sevice/load balancer/cache 一气画好再深入;还是问清需求一步一步分析把整个框架搭出来好?感觉前者技术上难度大并且在有面试官打断问问题情况下很难一气呵成完成。谢谢!
回复

使用道具 举报

🔗
 楼主| alexwxz 2021-5-22 13:00:35 | 只看该作者
全局:
graphene 发表于 2021-5-22 12:57
请教楼主一下:面试时候是最好像网上一些 mock 视频一样,分析数据量qps,把整个框架包括 database/sevice/ ...

建议是先问清楚需求再把flow整清楚先,不然很容易答偏,把需求整的差不多了再加上scalability等等一些东西作为锦上添花就好了

评分

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

查看全部评分

回复

使用道具 举报

全局:
alexwxz 发表于 2021-05-21 22:00:35
建议是先问清楚需求再把flow整清楚先,不然很容易答偏,把需求整的差不多了再加上scalability等等一些东西作为锦上添花就好了
明白,回想最近面试,面试官确实这么引导我的,多谢楼主!
回复

使用道具 举报

🔗
 楼主| alexwxz 2021-5-22 13:15:14 | 只看该作者
全局:
sj1456 发表于 2021-5-22 13:09
感谢楼主分享,收藏了,已加米

谢谢加米呀
回复

使用道具 举报

🔗
urdnm 2021-5-22 15:10:37 来自APP | 只看该作者
全局:
感谢分享~讲的很好~
回复

使用道具 举报

全局:
感谢楼主,插眼插眼
回复

使用道具 举报

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

本版积分规则

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