看到连续几篇问这种program,进而讨论到刷题啊什么的
刚好有时间,就分享一下几家大公司的面试经验吧
我分享的是full time经验,因为我是直接找full time。
但intern也适用,毕竟intern
比起full time真的拿offer好拿非常非常多...
不用onsite,两轮电面居多,真的很爽lol
所以真的要好好找intern,拼return,或是拿着return offer
再面别家公司,真的爽炸。
首先,刷题这东西就是考验程式能力的基本功,逃不掉的
确实,现在这种风气,导致很多只会解题,实作能力差的人也能进top公司
但我要分享的是,怎么刷题,还有各个公司(我面过)的经验
第一,认清一个事实,拿到面试机会,进而拿到offer,70%是靠运气,30%才是实力。
为什么这样说,我之后会答
*怎么刷题?
题海有用,但以现在题目增长的趋势,把题目全部干完,每题都印象深刻,不太可能
如果你有办法做到,那应该也至少有拿到一个offer了lol
首先,新手刷题就是先把top interview and top liked 先写了
这边的顺序,我觉得每个人有不同喜好,我会建议把相关连的题目一起写
会比较有感觉,比如说就先把linked list相关都做完,再做graph 之类。
每个题目,先想,或至少写出 naive solution,接着再想办法优化
尝试做了半小时,写不出来,就goolge看别人解法,或是讨论
但切记,要反复确认自己是真懂了这题目,而不是只去背了这题要这样解..
因为如果只背了,那面试时候一个follow up你又挂了。
然后我会建议,同一道题,可以的话,多写多看几种解法,然后找最切合自己的解法
而不是就只看最top几个。像我就是喜欢看明了,不酷炫,step by step的解法。
解到最后,你一看题目,心中直接就pop up要怎么解了..
比如说 coin 兑换题,combination, permutation 这一系列
基本上就是同样的解题方式,只是条件不同,我都可以写出好几个解法
另外切记,一定要搞懂时间复杂度是多少,尤其是有recursion的
time and space都要会,不会就要问到会,弄到会,花一天时间
把怎么分析搞清楚也无所谓,因为这是基本功,如果自己写的程式
连怎么run都看不出来,那真的不要抱怨找不到工作lol
接下来就是可以先刷各大tag题,我这边是推荐“除了Google”其他都可以刷
可以先刷Facebook and Linkedin。
为什么不刷Goolge,我待会会讲
如果以上都做完了,那下个阶段就是去一亩三分地上,看面经刷题了
这部分我待会会补充。
*拿到各大公司面试之后?
当我拿到一个面试机会时候,这边是以大公司为例,直接上一亩三分地看面经。
我的方法是,从现在时刻,sort发帖时间,然后倒叙看。
我会开一个doc,纪录每个面经文的题目,是不是lc题,tag or non tag题
整理好,lc, not lc 题号,或是题目叙述等等
至于你要回朔,看到多久以前的帖子,当然就是取决面经的数量..
以我经验,Facebook, Google, Bloomberg 这几家都是蛮多的
回朔看个5.6个月差不多
*各大公司准备分享
1. Facebook
老实说,FB难的是拿到面试机会,而不是面试fail ...
为什么这样说,可以参考CMU内耗之类xD
至于为何我说FB不难,因为他考的8成以上都是面经题。
我从我拿到面试,回朔整理了一整年的面经,lc or not lc都纪录
每道题重做,整理在一个file,大概2百多题。
Facebook面试也是很直接,上来简单自我介绍,话不用说太多
就是上题,每关基本上是会解两道,可以bug free就free,但不是说没有就fail好吗..
能上最优解就上,naive可以用讲的就好
2. Goolge
这家公司,面试前,有时间可以去把他的tag刷全,没时间就加减看面经
因为这家公司,基本功很重要,就是解题能力
面经次之,可以看,但不要得失心太重,觉得干,怎么都没遇到面经...
是说基本上lc新题,都是来自Google居多就是了
Google比较注重交流,题目变化大,所以就是比较难
但是能解出来当然很重要,解不出来也要让面试官觉得.. 你还是个人才lol
我身边就两个同学,两个code都没写出来,还是pass了(phone那关)
至于onsite,当然就是全力发挥了
刷题要刷出心得,而不是靠背题,要背题过Google,两三年前可以
但现在很难...
3. Linkedin
这家跟Facebook一样,题目基本上,遇到面经机会很高
所以准备方式一样即可。
不过onsite会有system design,这边就不多着墨了。
4. Uber
面经机会也是高,但有时候会考一些design问题,或是OOP问题
5. Oracle
看面什么组,多懂一点哪个组的domain knowledge
面试题目都是easy & medium
另外要多准备一下java or c++ 的一些常考问题
会问,而且会问得很深入
6. Amazon
这家..不予置评(误
招人方式,连不会coding的人我都能帮他拿到offer lol
我这边是讲new grad,不是experience
怕引起误会
7. Microsoft
跟Oracle蛮像的,准备方式可以参照
然后主要因为也是跟组招
所以跟Oracle一样,深得team的人或老板
喜欢基本上机会就很大了
这就是说,除了基本coding能力,交流非常重要
8. Bloomberg
准备方式也是直接回朔,整理面经题目
很多基本上都不是 lc题目
所以当时候我也准备了非常之多...
其他公司,Yahoo/Oath,PureStorage什么的就不细说了
基本上也都是回朔面经,然后好好掌握基本题
*题都做出来了,交流也没问题,为什么还fail?
我知道,很干
但也无能为力,顶多寄信询问为什么(通常不会说,或理你)
然后谢谢hr,以后有机会再试之类话
有些公司,不是说你做得好或不好,因为就是不fit
像我面Citadel,题都做了(非常之简单),考的C++细节我觉得我也都答了
但两轮phone,还是fail lol
另外一间巨屌的公司也是,HRT(Hudson River Trading)
两面也是面的很好,但就是没过QAQ
不过我知道就算过了也不会上拉哈哈,里面都是强者中的超强者..
Uber面ATG组的时候,两题hard,bug free,45分钟之内解完也是fail
只能摸摸鼻子..
所以这也是为何我一开始会说,面试拿到offer机会,70%靠运气,30%靠实力
首先你要拿到面试机会,这个运气成份真的也是蛮大,你能想像我一个同学
读某校 General CS program哦.. 投intern履历,还是内推
Facebook直接被拒了两次,Google连理都不理
我听他讲完,我都醉了..
面试遇到题目不难,或是你刚好解过,或是刚好顺利会解,然后
又不能只有一道题这样,full time onsite,技术关至少三轮对吧
Behavior关卡时候,又要跟人聊得很开心,让他觉得你fit
一切的一切
运气真的很重要
所以先有了实力,再来就是拼运气罢了
不要气馁,肯定能找到工作的:)
总结一下,人生没有一定要追求Facebook or Google,还有很地方可以去
很多地方可以赚得更多... New Grad去大公司固然好,毕竟好的title
跳槽好跳槽,但没去成也无所谓,之后都还是有机会。
拿了offer之后,怎么比较又是另外一回事了
像我一个好同学,跟另外两个,都是弃了F&G去了别家:)
对不起,排版很乱,文笔差QAQ
但有想要请教面试问题或什么的也欢迎下面讨论或站内信
有时间我也可帮你看履历,可以给我word档 or tex档,这样我比较能够直接改