2020年第二十九周,这是我的第一篇周记。
随着11号结束最后一场面试,COVID19求职季上半场结束,上周一整周都在研究offer,谈工资。海投的时候本着尽早上岸的目标,并没有重视面试的公司和组的质量,以至于埋头面了许多不是特别合适的组,这个问题在决定offer的时候暴露了出来,让我着实纠结了一番,最终决定去AWS学习一下。
关于选择
经过Uber一年的历练,以及身边给力小伙伴的提携,这次求职似乎比上一次顺利一些,自己对于项目管理、敏捷开发、技术选型、难点攻坚都有了一些粗浅的心得,在面试官看来,这个家伙已经不满足于做一个唯命是从的螺丝钉,而是真正参与到从项目策划到落地的全过程。也因此收到了来自Apple, Salesforce, TikTok等几家公司的offer。通过HR的简历筛选,可以说这些项目和我的背景都多少有些联系,比如做data pipeline,做threat detection等,组的规模也参差不齐,有的是稳定release了若干年的老组,也有刚刚开始招兵买马的新组,公司规模更是覆盖从pre-IPO 到行业老大。这个选择关乎我能否踏实的迈进技术中层。
经过慎重的思考,我的需要的是:稳定的成长。
我的第一份工作没有带给我太多的成长,第二份工作缺乏稳定。所以如今从业进入第四个年头,前两年迷茫,后两年颠沛,都未曾找到机会能够进行稳定的沉淀和成长。即便面试中再怎么侃侃而谈,内心都是空虚的,在步入职业生涯的第二个五年之际,我需要给自己寻找一个能够稳定成长的环境,让我可以不用瞻前顾后,不断找到有趣的项目,学习并产出。
关于面试
简单总结过去一段时间的面试体会,供未来回顾。不同公司的面试风格千差万别,总的来说可以归为如下几类:
算法
基本功扎实是尤为重要的,可能有20%的公司喜欢变着花样考难题,但更多的面试官偏爱最基础的算法知识,诸如
- 二分查找
- 图/树上搜索:BFS/DFS/Backtracking
- 排序
- Iteration/recursion
以及如何能够灵活运用于实际问题,比如内存装不下找,泛型怎么用Iterator遍历等等。
剩下的百分之二十的面试题目就要千奇百怪的多,比如根据模糊的定义设计游戏,比如综合运用拓扑排序,搜索,Trie来解决问题等等,这些就需要你在熟练掌握以上工具的基础上,能够迅速精准的决定方案,并落实到代码。
挖个坑: 系统训练面试高频题,在博客中开个专栏总结学习笔记
项目
这里面试官一般会让你聊一聊最近做的项目,或者你是如何解决一个难题的。通过这个项目作为切入点,可以不断深挖和扩展问题,如果面试官也遇到过类似的坑,对话会变的很有趣。这里需要注意的问题就是平时多总结,多思考,面试之前充分准备,并且练习如何能高度概括出问题,你的选择以及解决方法,可以参考Amazon的 STAR 方法论,一个很好的回答框架,比较适合我这种思维发散型选手。
设计
即便是在资深的工程师也无法在他的项目中覆盖五花八门的系统设计问题,因此有针对性的知识储备,多读技术博客,多思考显得尤为重要。日常工作中所做的tradeoff,也能够提高回答的水平,毕竟系统设计没有标准答案,都是取舍。
挖个坑:重读DDIA,在这里写下逐章读书笔记。
行为
关于Behavior question,我并没有进行太多针对性的准备,早先准备亚麻的十四条军规的时候,把自己的一些例子和这些军规做了多对多的映射,保证每一点都至少被一个例子cover掉,这样做主要是为了防止临场发挥的不确定和不准确。比较难答得是那些关于你的负面经历,比如解决冲突,不被他人认可,被迫接受他人观点的经历。
过去一周的经历也坚定了我做好这个博客的决心,因为上面提到的每一点,都依赖于完善的归纳总结,从而让自己的知识,经验都得到充分的沉淀。