面试中think aloud并拿到strong hire

avatar 242949
dxxuibe
25054
64
春招上岸啦,来发一些自己的体会希望能帮到各位还在游的朋友们
整个感想就是,时机大于实力,交流大于刷题。希望大家早日练习,然后在好事抓住时机,一举上岸!

楼主目前签了某FLAG,base在湾区。并且offer下来的飞速(正常时间的1/5),让我猝不及防。根据HR的反馈是”You make our work easy!". 应该是有不少的strong hire。自认为在面试中的交流做的很好(即使hard没写出来也飞速给了offer),希望自己的经验能帮到大家。

简单介绍下背景:
1. 学校:本科国内某财经院校,硕士某top cs院校非cs专业 两年的项目。本人GPA不高,只是够用,整体看来,除了某些金融公司卡GPA外, 80%的公司都不这么看的。当然最好不要低于3.0。
2. 刷题:本科连刷题都不知道更不懂什么BFS DFS的。出来了才知道原来写码的水这么深,DP原来是一种算法,LeetCode都快要1000题了,面试竟然是要场写代码的?!无知的我就这么决定了自己想要当码农?!不过也没有回头路,硬着头皮也得上。到目前大概一共刷了400来道题。

一、刷题

先聊聊讨论最多的刷题。相信各路大神都有自己的上岸经验,下面谈谈我个人的非高智商刷题经验。适合勤奋努力的同学。
1. 成果:先说说自己的成果,目前一共刷了400题,其中200道medium,80道hard, 120道 easy。timeline大概是第一个暑假结束的时候150道左右。然后最后一个学期基本脱产刷到了400.大部分题目只写了一遍。
2. 刷题水平:easy都能写出来,medium都能暴力借,80%有优化思路,50%能想出最优解。hard基本有暴力解,但很大概率写不出优化。新题的话见过题型的有戏,完全没见过也很懵逼。不过前200题的hard一定要能熟练的解出来。
3. Bug free: 很少能完完全全bug free。但能自主的debug想Corner cases。
以上希望能给大家一个benchmark来衡量一下我的水平。自我感觉是比不上身边的很多大神,但是基本达到了自己能够通过努力的上界。同时也觉得是我们普通人能够通过努力达到的水平。

下面是自己的一些感想:
1. 个人不赞同死刷题。曾经有人建议我一天刷30道,背答案那种。结果发现自己做不到,还是每天撑死写10道题,但其实如果能坚持,效果也是很好的。毕竟300题之后就应该feel comfortable去面试了。面试前再看看面经就行。刷题的总结我也没有做的很好,但是会在leetcode分好类,碰见相似的时候回去看看。
2. medium比hard重要(除了google等)。大部分公司考medium会多一些,会穿插hard。但是如果真的碰到hard解不出来也没有那么遗憾,而且面试官也会帮助你解决。但是medium基本上是可以想象的难度,所以一定要把握好。自己刷的时候medium尽量自己写出来,或者看看左边的hint。hard可放松一下要求,有个可行解之后再看看答案怎么优化。脑海中一定要有那些基本的优化方法的模板,这样不会慌。
3. 早刷题有帮助。早点开始刷题真的很有帮助,即使你后来会忘,但是都会比一题不刷等到投简历的时候瑟瑟发抖强(后面面试部分在好好讨论)。建议大家刚开始就先可劲儿刷,对每种题型和解法都有印象,这样后面再刷的时候就会好很多。在没有面试并且迷茫的时候,可以按leetcode顺序刷,前200题的质量还是很高的。如果这个也刷完了就在leetcode explore上面找自己想去的公司的interview,按tag刷。
4. 关于复习。我在整个刷题过程中没怎么复习过。但是碰到熟悉的题一定会回去看看有什么不同。主要是觉得复习的成本很高,而且很迷茫。所以建议在有了面试之后针对性的复习,这样感觉效率会高很多。我是一个不准备重复就会很慌的人,面试前基本上会把所有的面经从头到尾看一遍。保证每一题都有思路和优化的解法。
5. 关于高级数据结构。有一些很难的数据结构学习成本确实高,但是通常都不是必要掌握的(除了google等)。当然有些不是很复杂的数据结构比如Trie,Union find什么的,还是需要掌握的,也不会花很多时间。剩下的比如binary indexed tree, segment tree,red black tree等我就不行了,看着就吃力更别提写了,但是最好自己有个大概印象,这样以后说优化方案的时候可以多bb两句。但是没必要花太多时间。

二、投简历和面试
面试是一个销售自己的过程,你之前所有的努力都要靠面试来转化成offer和package。所以面试是需要收到相当重视的。这个过程中最重要的是包装和交流。包装帮你拿到面试,交流帮你secure offer。
1. 早投早超生:简历越早投越好。因为先被看到的人总是有优势的,后来的人要是没有亮点,就会被掩埋了。更何况你投出去之后,还有hr的review时间和约面试时间,在这段时间里,你完全可以准备好面试。否则到时候等你投的时候可能都没有坑了,空有一身本领但是无用武之地啊。比较好的时机就是暑假前和寒假前,对就是比秋招和春招早一个假期。然后你可以把面试时间往后拖一点。
2. 关于简历:大家在投简历前一定要找多方修改。Tech背景的简历需要突出你的技术栈。一份好的简历真心帮助很大。我的第一稿(其实可能是1xx稿)简历就忽视了这些,以至于看着身边的朋友们都好多面试,然而自己只有拒信,心里拔凉拔凉的。后来大费心思改到了第二版,才有些好转。大家如果有关于简历问题,可以提出来一起讨论啊。
3. 交流 > 刷题。等你有面试的时候千万要相信自己,你一定没有问题的!面试的题目都是精心准备的,确保你有可能在45min完成并展现自己的能力的。说到这里就必须要提到公司到底想招什么样的人。大公司也好,小公司也好,都是想找能力很强,又有团队协作能力的engineer。所以能解出来题目固然重要,交流也是其中的大头,公司是特别讨厌那种有才无德的人的,这样的人会似的团队分崩离析的。所以前往要注意面试的时候交流能力大于做题!下面详细的谈一下交流的问题。
  • 1)解题思路。千万不要上来就写code,千万不要上来就说解法。如果你做过这个题,要么就装作自己没做过,要么就坦白的告诉面试官你做过。在你开始说自己的思路之前,请先想面试官clarify题目的意思,最好自己能重复一下。如果这个题目有情景,请剥下他的外壳,然后说出来问题的本质是什么。接着说你是如何想到这么解的。然后画图(尽量)解释你的算法。如果可以的话分析一下复杂度。

********* 重点 ************* 重点 ********** 重点********** 重点 ************* 重点 ********
  • 2) 写code并交流。当你描述完你的解法之后,可以向面试官询问是否可以implement。如果他同意的话在开始写,如果你找到是暴力解通常他会让你优化的。这时候你再开始优化也来得及。写code的时候一定要交流!一定要把自己切换到verbose mode!边写边解释。可以解释你在处理什么corner case,解释你为什么要用这样的数据结构,解释你为什么要有等号,etc。最怕空气突然地安静,千万不要让面试过程尴尬,你一定要是一个话痨,确保面试官能听懂你的话和算法,think aloud。另外说话一定要friendly,不要让面试官觉得你aggressive。

我见过很多厉害的大神,题都写出来了,但是后来还被加面甚至被拒的。有很多是因为交流问题gg的,这个是在以后的工作中很重要的一部分,练好了会受益匪浅的。
我自己很多这样的训练,mock过别人,也被很多人mock过。刚开始也是很普遍的问题,交流不够多,解释不清楚。只会闷头写代码。后来mock了一个学期之后真的改善了很多。于是第一个面 试就上了FALG并拿下。
********* 重点 ************* 重点 ********** 重点********** 重点 ************* 重点 ********
个人认为交流这个技能只有在mock的过程中才能锻炼,如果有同学需要mock的话,我可以帮忙。请私信我,或者发邮件到 1point3acres.com
  • 3)复杂度分析。写完code之后记得过一个test case。然后开始分析复杂度。不要直接说我这个O(N),一定要把为什么说出来。如果你在这个过程中有任何疑问,一定要把你自己的想法说出来,然后在试图证明是不是对的。
  • 4)优化。通常复杂度分析之后面试官会让你优化,或者问follow up。这个时间如果没有思路的话,就先把自己的算法复杂度target降一个level,比如 N^2 -> nlogn -> n -> logn. 这样可能会带给你思路。或者你分析有哪些部分是重复计算这样通常会有memo的优化或者DP。总之在这个过程中,想到什么说什么就对了。


4. 时机 + 运气 > 实力。之前有很多人也提到了,时机和运气其实有时候比实力重要。所以大家一定要早做准备。等到时机来的时候一把抓住!

三、关于面试准备
下面附上自己的timeline规划
1. 修改简历。按项目和兴趣方向选课。在正式找工作的前一学期把该上的课上完,并包含到简历里面。
2. 投简历时间。在正式招工的前一个假期里开始投,保证开学有面试。career fair一定要去,提前设计好聊天内容,这样会有很多机会的。
3. 刷题。在平时一定要能刷就刷,让自己见见世面。然后针对自己的面试,准备面经题。
4. mock。提前锻炼自己的think aloud能力,保证面试不慌。以及面到新题的应对措施。

第一次发长贴请大家见谅!有什么问题或者补充欢迎大家提出~
我最近正在整理如何锻炼自己的think aloud能力的tips和比较实用的技巧,如果大家需要的话我整理好了发出来!
另外求大米求大米!
祝大家早日上岸!
  • 444
64条回复