疫情期间 两个月攻克system design面试上岸心得

avatar 637109
桃子君
4083
6
楼主从九月份开始准备跳槽 一直拖拖拉拉的到现在快十二月 总算是处于上岸状态了 写一下自己的心得 希望能帮助到现在还在努力上岸的孩子们

说一下自己的背景 楼主目前在某大厂 E4

准备其实是从八月份开始的 那段时间大部分是刷题吧 感觉从八月到九月份开始面试刷了不到一百道题(其中大概一半手写一边 一半只看过思路)其实我觉得对于跳槽选手来说,刷题主要需要克服的手生的问题,解题方法,算法其实当初ng找工作都过了一遍了,在这个状态下像什么bfs dfs union find每个写个一两遍就行了 最重要的是解题思路 多看比多写重要 然后面之前刷刷面经基本上coding不会有大的问题

E4level跳槽最大的瓶颈是system design。因为e4在原来公司 尤其是大厂 基本不会有设计system的机会 顶多就是看看公司的是怎么做的(但讲真公司的system能理解透了的人没几个)我九月份面了几家小厂 当时是为了想练练design的心态去试试的 结果面一个挂一个 问挂在哪儿 基本全是design 当时都要心灰意冷了 觉得自己design过不了 刷题也没用 都要放弃了 好在当时身边有朋友的鼓励才熬下来,我接下来就说说我是怎么从一个几乎零基础两个月的时间搞定design的

用的材料有:
- educative.io的那个grokking system design的课 这个课非常适合入门 如果你没有对system design的概念那么我还是很建议你过一遍 但是如果你要指望只靠他去通过面试是不行的 首先这个只是作者的一家之言 而且design过于high level 一旦问到细节 就要抓瞎
- tech blog。我其实没有特意去找特定公司的tech blog。因为通过我自己的面试我发现 其实system design的很大一个部分是面database,所以我自己去找了几篇文章,弄明白了几个常用的database的原理和特性 比如说dynamodb是high availability的nosql db,他是怎么保证high availability的之类的。基本上弄懂2-3个,面试的时候就可以融会贯通,因为很多db用到的一个原理你可以嫁接到自己的系统上。
- youtube的channel。其实youtube channel讲system design的质量都蛮高的 我看过一个youtuber叫System Design Interview,大哥口音怪怪的但是讲的很不错
- DDIA 这真的是神书 有空多看看 面试着急的话就抽章节看 很受益
- 找朋友mock 因为很多时候你不知道自己的design存在red flag,因为这是知识储备造成的。找朋友mock帮你找到red flag是非常高效的。面试的时候出现red flag对于严格的面试官可能就是一票否决,包括但不限于用cache不考虑reconstruct,用Cassandra做bank transaction等等

另外我知道有很多同学是根据很多课程去准备design,比如说九章,他们会给你一个解决问题的模板 就是上来先明确需求 再算qps/capacity之类的一个五步法,我个人在实践中感觉不是特别好用,我有几次是严格按照这个步骤来的 但是每次在我计算qps的时候 面试官就说你先不要考虑这些 先给一个high level的structure比较好 所以我觉得就不要拘泥于一些答题模板吧 先把big picture给出来 慢慢完善可能会更好一些

经历了这个求职季 觉得自己不会的还有很多 希望下次不要有临阵磨design的情况发生了 平时的积累是最重要的 要是能帮助到你希望大家不吝大米!

谢谢~
  • 125
6条回复