关于系统设计. 适用人群:个人认为我这个复习plan比较适用于mid-career. (<5)年经验,面试职位junior or senior。要面system design,但职位本身不是专门做系统不会对系统设计要求很高。因为毕竟是速成。系统设计想成为大神,还是要靠平时的积累一点点搭起来。 . 1point3acres
鉴于背景介绍里说的,楼主在刷题最头疼的就是系统设计。系统设计小白一开始看大家说grokking system design很有帮助,楼主上来先顺着看了几个题目感觉慢慢读能读明白,但是除非我挨个字句背下来了,否则来个原题我也不一定能答上。所以去请教了身边刚换工作的大神们,得到了一些反馈,下面是我复习的顺序(顺序很重要),时间和材料如下:
Grokking system design 当这个时候你读了前面两个之后再去看grokking system design会觉得突然醍醐灌顶,很快速的看过去就知道再说什么了,这时候看到有用的东西再快笔记记一下加深影响 (这时候前期电面陆陆续续快结束了,花了一周集中复习system design时候看的)
**Be Honest** 这一点也是我认为面试最重要的一点!这是罗宾汉的recruiter(我so far遇到最好的recruiter)在打电话帮我prep onsite时候讲的一点,让我顿时深受启发。我实话跟他说我直接intern转正了没有面过system design,所以非常紧张这一轮。他跟我说,给你举个最近面试官反馈的例子,问到DB如何选择的时候,一个fail的回答是“我准备用NoSQL,比如mangoDB, Cassandra,Hbase等等”。然后面试官问为什么的时候,面试的人不能说出很具体为什么。相比较,一个pass的candidate回答是“我选择用MySQL,虽然我知道MySQL可能在scalability和XXXX上有局限,但是因为我没用过NoSQL,我不是特别的熟悉所以我这里选择NoSQL"。这个对我启发很大,我在后面所有onsite面试都是贯彻这一点。例如我记得有一轮我说到partition data,面试官问如果有hot user致使partition不均匀你怎么办。我就记得看的某一个资料里说cassandra本身可以通过config来进行consistent hashing。不用自己手动搞一个consistent hashing logic. 但我当时也就是看我自己笔记里记了这么句话,我也不能确定100%对的。所以我就很实在的说“I didn't use cassandra myself before, but if I remember correctly, I read from a book that cassandra uses consistent hashing to distribute and replica data across nodes. If that is the case, we don't need to implement a separate hashing function to solve that issue.” 能看出面试官对这个回答很满意。假如我这个记错了,因为我很诚实告诉他我也不确定,所以不算是个red flag。所以我一直觉得面试最忌讳的是~~不懂装懂。不会就不会,把会的说出来也体现给面试官you already try your best就行了