CS找工作经验

avatar 68553
1guangnian
6945
11
楼主经过两个多月,找好工作啦,和大家分享一下经验。顺便提醒大家平时要多锻炼身体,楼主这学期课少,经常坐在电脑前,也不锻炼,眼睛和腰感觉都快不行了T.T

1.实习经历很重要
楼主是fall来美帝读ms的,第一学期就准备找实习,觉得自己本科搞过一些竞赛,就没刷太多题,事实证明太naive了,磕磕绊绊拿了个亚麻的实习,后来发现楼主做的题都是leetcode原题,但我的solution都不是optimal的,但是有一道题当时跟面试官讨论了各种optimize的方法,还有各种c++里stl的操作复杂度。
有一句说一句,亚麻的实习还是不错的,各种活动,还可以看各种tech talk,而且西雅图夏天特别好玩,找工作的时候也很好用,各大公司都很给面子。后来一起去实习的小伙伴,很多都拿到了更好的full-time offer。拿到return offer的话就很开心了,有个不错的保底,找工作压力也小很多。当然啦,楼主没有拿到,亚麻的hr给了很多经验,教我们怎么拿return offer,但楼主一直没当回事,结果跪了。不过没拿到也不要太担心,相信自己,可以拿到更好的offer。我认识的几个没有return offer的小伙伴,都拿到了不错的offer现在。

2.behavior也很重要
刷题只是基础一方面,一些behavior问题,例如为什么对公司感兴趣,对公司产品的了解/如何提高,以及和面试官的交流在实际面试中也是很重要。还有找工作不要只顾着刷题,如果自己的沟通交流能力不行,还是要多想办法提高。拿到题目不要只顾着写代码,要多想想有没有tricky的地方,多跟面试官交流,为什么要这么做,优缺点什么的。
楼主之前一直被周围小伙伴当作大神,就觉得自己叼叼的,觉得刷刷题,拿个offer是水到渠成的事情,但是楼主接二连三被拒后,发现自己cs基础其实还不够,而且面试的临场发挥不行,跟面试官交流不好,在一些behavior的问题上,也答得不够聪明。所以呐,认清自己实力也是很重要的。

3.多多练习
楼主感觉,做题呢,是需要状态的,所以找工作期间最好坚持每天刷刷题,不需要多,保持感觉就好。对于每个题目,不但要知道怎么做,还要会分析时间/空间复杂度。在投自己想去的公司前,最好可以找一些其他的练练手,若不是大牛,不要像楼主这样作死,连return offer都没有上来就直接投一些高大上的公司。如果没有面试,也可以找小伙伴mock interview,楼主最近有帮别人mock,虽然比不上正式面试,感觉大家都还是有收获。

楼主也没有面很多公司,下面简单说说面过的几家公司:

1.snapchat, 第一个电面,题目不难,就是二分查找,但是在跟面试官交流细节的时候不顺畅,暴露自己基础不行,后来提问时问的问题也很傻逼,挂了,通过朋友打听,面试官给的feedback是交流有问题

2.twosigma, 前后花了差不多一个月时间,Onsite的时候上午我是三轮engineer的面试,有一轮要改bug,关于闰年算日期的。下午面了两个manager。第一个engineer的表达式匹配我给出了dp的做法,但是面试官似乎不太明白,问我有没有别的办法,当时说了个暴力的,但最后还是写了dp,调了一会,面试官说他lost了,最后给的feedback不好。事后总结下就是面试时候还是顺着面试官的思路走比较好,写代码前要确认他觉得行才下手,毕竟人家才是爷。另外一个manager看我简历上有mapreduce的东西,问了我相关方面的问题,现在想想都不难,但是楼主去之前没有看过那篇经典论文,结果栽了。总结就是如果你只是懂个皮毛的话,简历上的东西不要瞎写,还有啊,学东西要dive deep,不要学个皮毛了事。

3.google, 跪在on-campus interview了,早知道之前选电面了,周围小伙伴电面题目都水的一B。第一个面试官看到我是面full-time的,特别跟旁边的人确认了下,给我来了套感觉不是那么常规的题,都没有写代码,可能是面了一下午烦了吧。我第一志愿选的早上没选中,给安排到第二志愿最后一轮了,这也是个败笔,下午人状态不好。有一个题问我算法复杂度,我说了一个自己的想法,然后面试官让我用他的思路分析,用一个estimated的值,我不太会,陷入了深深的思考,没有跟面试官交流太多,也不知道怎么问问题来一步步推出答案,后来他不耐烦了给我写了两层for循环都没反应过来,然后system desgin方面就一直很糟糕了,自己听来的一些像load balance之类的概念经不住问,一问深了就不会,感觉就像在被审问,所以还是要dive deep啊。第二轮正常向的面试是设计怎么根据前缀自动填充,然后写代码,感觉答的不错,也挽救不了第一轮的差劲表现,过了两个礼拜才据了,也是不痛快。

4.fb, 这个可能是准备的最认真的了,他们家hr发了一大堆东西给我看,而且运气不错,遇到的都是leetcode水平的题,面试官也没有刁难。面试那天安排的也很棒,面试完了吃完饭跟engineer talk问问题,因为是在西雅图面,最后还去了duck tour, 晚上还请我们去餐厅吃饭,相当有诚意。都是先聊下简历,再做个题目,然后问问题的节奏,中间有一轮时间长点,多问了几个behavior问题。
a)第二面的时候,一开始想不到处理重复的好方法,问了下面试官能不能先写个比较搓的搞法,面试官说当然可以啦,我们平时也是这样慢慢优化的,后来在他提示下,我画了一墙壁找idea, 写出了比较优越的方法,最后提问时问到一开始他介绍自己组的事情,给我画了一墙壁他做的东西的流程图,也是聊的很开心,展现出了我的热情,感觉这点也是很重要的。
b)另外一个感觉就是,onsite时候跟平时做题不一样,平时一道题写起来可能几分钟就完事了,onsite的时候,最好还是多交流idea,多画画图,解释下为什么对,为什么是这个复杂度,跑下test case什么的。我觉得一道题,不是特别水的话,花个25-30分钟搞完差不多,加上一开始聊简历和最后提问,差不多就是45分钟,一方面和面试官交流充分,他们也会天马行空问你一些奇怪的问题,另一方面,避免再写一道题,可能时间不够。跟第三个面试官交流的时候,问他我一轮只做一个题会不会不够,他说没事,他平时一般也只问一个题,所以呢,我们要从这一个题里面表现出我们的综合水平。

5.blomberg,面了四轮没offer,感觉是跪在hr和最后的manager那里了,感觉manager对我兴趣不大,听我讲实习经历的时候没发表什么意见。电面问了问os相关的知识,virtual memory, stack overflow什么的,因为我简历上写了吧,然后问了问数据结构,怎么支持大量询问inverted index。onsite算法题目也不难,有一问用到了拓扑排序,跟算法期中考试的题目很类似,就是告诉你很多x必须在y前面的关系,然后找一个满足条件的顺序。hr问了很多behavior的问题,常见的就是为什么要去他们家,想做前端还是后端,为什么,给她介绍我做过的东西,看我本科不是学的cs,还问我为什么要做码工。还有就是system design的题,关于数据处理和询问的,没有固定答案,都是凭着感觉想到哪说到哪,然后他们不断challenge你。

6.palanti r, 很开心简历没有被据掉,online test后又来了两个电面,一个问了lru, 一个问了stream不断求中位数,然后接着是hr的电面,问我为什么想去他们家之类的问题,楼主那天看了电话号码的地区,以为是fb打来的,后来hr问我最近还在面什么公司,我说palantir, 然后她说电话就是他家打来的,脸一黑,过了一天多被呵呵

关于system design, 话说楼主确实没怎么准备,地里其他帖子有一些不错的介绍,大家可以多挖挖矿
  • 16
11条回复