北美求职:System Design避坑指南!

来自其他站点
北美求职:System Design避坑指南!
分享一些面试中的减分点!
1. 一上来就开始画图或者直接说选择什么database,和面试官没有一点沟通,完全不问整个系统的requirements/goals, 不做capacity estimation。或者这部分用时太久,超过了10分钟,计算estimation太慢太细致,以至于后面需要讨论的点来不及cover。
2. 提到要用某个具体的tech/component,但是又不知道细节。
a. 比如你可以说这边需要用一个message queue,但如果你说用kafka/sqs,然后被问为什么要用kafka,有什么优势,consumer/producer端具体如何工作,如何保证data delivery,data ordering等等你又答不上来或者乱答,就很减分了
b. 但是对于面senior或者更高的level,在面试中能够体现出深度也很重要,所以最好对常用的一些tech仔细了解一下。
3. 不理会/忽略面试官的引导,自说自话或者故意炫技。
a. 一定要记得面试官基本都会有一些考点希望你能展开讨论的,即使是同一道题目,考点也可能千差万别,所以一定要给面试官机会问出他的考点。在回答问题之前,也请先明确自己是否真的get到了面试官想问的再回答,比如想让你讨论下isolation level,你却一直在说lock;或者需要考虑的是关于availability/consistency的trade off,你却一直在说加cache。
b. 故意炫技,比如和面试官讲consensus algorithm,其实那道题的scenario单机就够用了,自己也没设计成distributed。另外即使你很懂Cassandra,也不是每道题每个DB都要用Cassandra,或者你很懂redis,就什么都用;;;;;;;;;;;;;;;;;;;;redis。如果onsite有超过一轮design,在debrief的时候会很容易发现这一点。
c. 设计的很复杂,任何两个service之间都要加上个mq,无论是否需要async,任何DB前面都要加层cache无论是否read heavy。
4. database的选择很随意,或者试图用一种DB面所有的题。即使你说你全用spanner,也不是说这样不行,但你至少要说清楚不同情况下如何config。你也可以说spanner可以自动帮你optimize,那也可以,但这样的话如何在面试中体现出你的能力呢?
a. 不分析access pattern,requirement,key size,qps等。
b. primary key,indexing,sharding/partition key等说不清楚如何选择。
c. 所有table都用一个/一种DB
d. 认为DB是万能的,by default就不会丢data,不会读到stale data。
希望以上分享可以帮助到你!(求加大米!)
17条回复