. Waral dи,
[Scott Shi's System Design Seminar]地里大神Scott Shi的讲座系列。Scott把每一章DDIA在一个小时左右串讲了一遍,可以花读书几分之一的时间来学到DDIA里的精华,非常推荐。
. .и
. check 1point3acres for more.
[Facebook TAO, Amazon Dynamo, Kafka, RabbitMQ, Zookeeper]这几篇paper建议读一下,可以学到很多实际分布式系统设计的模式,以及如何容错。read repair?consisten hashing? how to choose partition key?master election?这些问题读完这些paper以后就迎刃而解了。对于面试本身也有直接的帮助。比如high scale系统就一定得上NoSQL么?SQL database更改schema很麻烦么?Facebook TAO就是搭载MySQL上的,value就是一个json,schema都是application定的。我就在某一轮面试时说用SQL,面试官追问那schema不好更改怎么办,我就直接说如果expect schema会经常变,用json就行,TAO就是这么干的。面试官表示OK。另外有些公司的面试题就有design key value store,那基本上就按照dynamo来答就好了。
之后建议直接开始系统设计面试的准备,边准备边继续巩固内功。
[System Design Interview by Alex Xu][Grokking system design interview]这两个放一起说了。我两个都有,感觉没有必要,建议大家买一个就行,alex的书略好一点。这本书的用处有两个:一是给出一个面试的template;二是提供大量的例题来参考。建议第一遍精读,第二遍看到题之后先不要读内容,自己按照面试的流程来先走一遍,把这道题重点要讲的部分过一遍,再速读巩固。
BQ
BQ应该是所有面试里最好准备的部分了,有过一些工作经验的话都比较简单,尤其是对于香蕉厂员工来说,每天工作的一部分就是互相扔贝索斯语录。大家按照leadership principle的14(现在是16)条来准备就好。大家可以准备5到8个例子,利用STAR method (Situation, Task, Action,Result)来把例子写下来。尽量写的详细一些。最好是那种一个例子可以cover很多个问题的,写下来每个例子可以cover的LP。核心要义就是体现你是一个good team player, good problem solver 。然后在练习讲的时候可以针对具体问题对例子进行删减。远程面试的好处是可以直接把例子打开现场快速查找。不过不要照着读,一定要现场组织语言。准备足够以后基本上听完面试官的问题就大概知道面试官想听到的点是什么。一个小技巧是听完题以后,不要着急回答。和面试官说give me 30 seconds to think about a good example,利用这个时间来组织一下语言,想一下用哪个例子,侧重点是什么。
在面试中如果遇到非常规题,不要慌张,还是通过那30秒来快速回想一个例子。如果实在想不到合适的例子,千万不要现场编造。可以直接和面试官说想不到一个例子。这是没关系的,我谷歌和fb的面试都遇到了没有例子的问题,面试官就直接move到下一题了。
最后还有一类面试题不是“tell me about a time when xxx”的,而是比较虚的问题。比如我遇到过"what is your ideal team culture" "if you were to give some advice to a junior new member, what would you say"。这一类不太好准备,就只能根据经验现场发挥了。这里体现了香蕉厂的一个好处,把平时乱丢的LP jargon讲一讲,面试官就很满意哈哈。
. 1point3acres.com