面Facebook E5降E4,6年老司机心态崩了…
有网友说面FB E5,6年工作经验,但最后只给了E4。
(图源:1024)
一般FB内部2年左右就能3升4了,现在妥妥down level了。只因系统设计面试不够strong,还被说是:过度设计!
“过度设计”是许多面试者的通病,这代表:
1.设计者缺乏对业务和需求的精准理解;
2.没有对功能做出权衡取舍,忽略了复合成本,最后很可能投入巨大但收益甚微。
因此,“过度设计”在面试中也被视为Red Flag。另外,系统设计面试中还有几个常见的错误需要注意:
- 没弄清需求就给方案
- 思维狭窄,考虑不全面
- 固执己见,不懂得变通
“聊天系统”回回考,通过却很少
来看一道FB系统设计原题:“设计一个Snapchat/whatsapp”其实谷歌/亚麻/微软等很多公司都考过,能顺利通过的却很少,都说见过这道题,面完却还是跪,原因很可能是:
- 不懂得和面试官交流需求(比如日活多少?需要什么功能等)
- 日常"拧螺丝",缺乏完整的系统设计经验(没有做过完整的系统,面试容易卡壳)
- 没有优化经验,不知道怎么将系统优化成高可用、高扩展
虽然系统设计的难点在没有标准答案,但也并不是毫无方法可循的。
九章的老师(同时也是硅谷大厂的资深架构师)总结出了一套“万能公式”——4S分析法.
1 Scenario场景:需要设计哪些功能,到什么程度?**
系统设计面试中,不加思考迅速给方案是大忌,正确的做法是与面试官沟通需求,收集构建系统所需的所有信息。比如你可以问这些问题:
- 我们要构建哪些特定功能?
- 该产品有多少用户?
- 公司预计将以多快的速度扩大规模?
- 公司的技术栈是什么?您可以利用哪些现有服务来简化设计?
2 Service服务:将大系统拆分为小服务
根据第一步收集的需求,为每个需求添加一个服务,再归并相同的服务,你需要把面试官当做一起工作的伙伴,及时要求反馈:
- 依据需求添加服务。
- 对于同一类问题的逻辑处理归并在一个Service中。
- 把整个System细分为若干个小的Service。
3 Storage 存储:数据如何存储与访问
拆分完小服务后,你需要考虑数据如何存储与访问,做出一个可以work的solution:
- 对每个Service选择合适的存储结构 。
- 细化数据表单 。
- 画图展示数据存储和读取的流程。
4 Scale升级:解决缺陷,处理可能遇到的问题
最后一步,面试官会和你确定系统瓶颈并讨论改进方式,这时千万不要说自己的设计是完美的,总会有一些需要改进的地方。
因为这是展示你批判性思维并留下好印象的绝佳机会。
- 错误案例(服务器故障,网络丢失等)值得讨论。
- 如何监视指标和错误日志?如何推出系统?
- 后续如何扩展系统?
这套4S分析法,可以套用绝大部分面试当中的系统设计,将难点逐一击破。
具体如何在有限的条件内构建有细节/有整体框架的work solution,欢迎大家免费试听体验:《系统架构设计 2020版》
像刷算法题一样学系统设计
另外,课程还搭配了42道ladder,都是精选的大厂高频系统设计题,这可是其他同类课程没有的专属福利!
真正做到像刷算法题一样学习系统设计,4周就能掌握系统设计的核心知识。
L4变L5,只差一道系统设计
面试review时,系统设计的面试官通常拥有最高话语权。
也就是,这轮的面试官决定你能否通过,也决定了你的Level和Package。系统设计答拿到strong,升一级或者涨薪都是非常有希望的。
我们的一位学员面谷歌L4,被recruiter要求加面一轮系统设计,最后幸运的通过并拿到了L5,包裹直接多了5万刀!
18大核心考点,全面覆盖面试难点
为了帮助大家更好的冲刺大厂,最近《系统架构设计 2020版》做了全面升级,比起旧版**新增了5节直播课,达到了30个课时,真正的加量不加价!
另外,课程全面覆盖学员高票选出的系统设计知识点和面试考点,一共18大核心考点帮助大家全面攻克系统设计。
适合谁
- 求职后端岗,缺乏系统设计基础
- 缺乏大型项目开发机会,不懂实际应用
- 马上要参加面试,却对系统设计一窍不通的new grad
- 长期重复同样的工作,跳槽/晋升困难