这段时间一直在准备system design面试,面了几家积累了些经验,也看了很多大家的贴,分享一下我的总结
1.首先面试官把题目说出来以后,要一步步问清楚问题,确认系统的每一个requirement,搞清楚Functional Requirement 和Nonfunctional Requirement, 比如系统的使用者是谁(是用户、服务还是其他系统)、是否考虑系统的Consistency 、Availability、可靠性等等,最后追问面试官自己整理的需求是否是核心的,避免错过一些小而复杂的功能需求
2.虽然system design的面试没有标准答案,但是有一定套路,网上也有很多template,大家可以选一个自己喜欢的,平时按照这个template来练习,面试的时候每一道题都按照template来一步一步的走
3.面试时可能遇到做过的题或者平时做过类似系统,这时候确实可能很多系统细节能信手拈来,但千万不要滔滔不绝地讲心里的答案,一方面面试官总会有办法考察到你不熟悉的部分和知识点,另一方面system design和BQ不一样,system design面试模拟的是真实工作中candidate解决问题的过程,面试官更喜欢你和他一步步的交流,所以切记要Keep this as a conversation
4.要提前写好你在回答时可能要涵盖的所有的点,不然自己一直说,可能一兴奋忘了说重点。然后先说哪个再说哪个是面试官决定的,有的面试官会告诉你下一步,比如他会明确让你直接讨论怎么scale,跳过requirement的部分,有的面试官没有偏好,会让你自己来主导,注意这时候也要按照合理的顺序来回答。所以面试中要多多和面试官进行确认
5.最后建议大家在准备system design面试的时候多mock,和coding还有behavior question不同,system design需要你能随时面对一个没遇到过的开放式问题,一边思考,一边又能带着面试官一起深入,mock interview主要的意义是让你能够习惯表达自己的临时想法,,也只有这种即时反馈的模拟面试,才能真正让你的面试技巧得到提升
有不妥的地方欢迎大家指出!大家有什么经验也恳求提出!
欢迎大家加我微信沟通:sxxzs3998