找工作一个月了,身心俱疲,出来面试的间隙,又恰逢十一,挺想对这段时间做个总结的。校园招聘还没有结束,或许此文能给身边同学一些参考,我的Job Hunting之旅可能也还要继续,停下来思考或许会有更好的作用。

先说下结果吧(是不是点开就是为了来看结果的 p.s.微笑.jpg),目前正式拿到了几家公司的offer,两家面试完了在等通知,两家面试到一半还在继续,两家在等笔试结果,若干待笔试。薪水分布范围很广,最低的给20w直接拒掉了,有比这个高很多的就不透露了。

我最终会选择的工作,1. 是喜欢的,能满足现阶段自己在技术提升上的需求;2. 是长期职业规划的一部分,有一定的弹性;3. 有一个公道且友好的待遇,小奢侈最好;4. 适当的工作强度,可以累,不能过分累;5. 最好有点小高冷。

进入正题:

一、一定要说的背景

没有背景的故事讲述起来不够凄凉。3、4月份春招,春招就让他过去吧,2年的工程硕不敢在第一学年未结束就在YY实习和工作;7、8月份内推,内推就让他过去吧,暑假没回家是为了在实验室做论文,这时候随便找找工作论文就更遥遥无期了;于是很快开学,进入9月份,开始了校招,我第一次有意识到找工作的重要性,时间和机会都已经不再等人,身边同学大部分都在实习或者准备了很长时间找工作,我仰望的的神犇们更是早早就开始了收割,突然间很慌,是真的慌。

二、后来才明白的几个套路

0. 校招有很多机会,但是(top的工作)竞争太激烈。hc(hire count)可能非常少,很多企业大肆展开招聘只是为了宣传公司罢了。今年百度校招的研发整个辽东半岛有一半是我们宿舍拿到的,可见hc之少(论如何毫不负责地吹B.jpg)。如果对自身实力不是很自信,一定往下看。

1. 实习比校招靠谱,很多企业会把名额留给实习生,实习生也会优先占好一点的坑,因此如果有非常中意的企业,能够去实习是极好的。

2. 内推比校招靠谱,至少简历方面不会有很大问题,甚至还能免笔试,而校招可能会挂在任何一个环节。

3. onsite比电面靠谱,面对面的时候信息传输的渠道就不只是语言了。还好我颜值高,见着面的面试目前只挂过一次indeed。

4. 这个世界充满了鄙视链。非985被刷简历是很正常的事情,985末流薪水不会比清北高,同样是招人,校招的sp(special offer)会比实习和内推少。你看,连工作找的晚了都要被鄙视。

5. 待遇是可以争取的,当你有很多选择的时候也就有了话语权。

三、站在上帝视角说阶段

1. 初期,nothing to loss。

把简历投给近期每一个在招人的企业,让身体做好迎接笔试轰炸和面试轰炸的准备,因为来回跑路赶时间是真的累。面试腾讯的那天就很累,在去面试的路上就想要不就挂掉吧,再跑两天身体一定会爆炸的。恰好简单交流之后发现并不喜欢面试官,然后消极回答果然就挂掉了,回去的路上心情真是轻松不少。(认真脸.jpg)

2. 前期,接受打击并成长。

面试一不小心就跪了,和自身实力有关,也和面试官风格喜好有关。 自信心可能会稍微受挫,及时调整就好,不要过分在意。重要的是要意识到自己在专业方面的不足,或者自己面试时候的表达、心理状态等的不足,我一般会在面试之后迅速回忆刚刚的状态,做一些记录,挂掉的话就努力找原因,一般都能从自身找出一些问题来。

3. 中期,稍有收获。

暂且称现在的时间点为中期吧,在失败中学习了一轮多少会有收获。至少像华为等大厂都会殷切送一波温暖,完全可以先拿一个给自己一些安慰。当然还是会跪,看到很好的机会在自己眼前消失,意识到有时候吸取教训的代价有点沉重。面google的时候因为一个stl的细节直接跪掉着实可惜是吧,可是明明写好就可以了,还得说一通英语也不知道有没有解释清楚。所以在此之后,我尽力去把遇到的一些小的细节搞清楚,在火车上赶路的时候也会帮同学搞笔试保持手感,避免在可控范围内让面试的失败因素来自自己。最近的几次面试中都很快写出了bug free的代码(online judge可以A掉的),面试官给的评价也比较高。

4. 后期,平常心。

其实从准备找工作的最初期到现在,除了专业技术上面的一点点修补完善,更重要的一部分是心态的调整,而我个人期望的心态调整的终点就是平常心。平常心作为签名我用了好多年,事实上这也是做很多事情的心态,不膨胀也不认怂,做最大的努力,然后平常心面对一切。

我个人心理素质比较差,抗压能力又比较强,所以在调整的过程中一直都煎熬在自我的对抗中。面indeed的时候,提早做了很多准备,然而在面试开始之前还是坐立不安,会休息不好也会没有胃口,直到我在眼前的台灯上写上一个平常心时刻提醒自己,然后心里想面试官写算法代码可能还没有我吊、至少英文说的没我标准安慰自己。这是我当时短时调整的一个策略,不知道什么时候才能修炼出不用这么low的方法就能自我调整的更高境界。

后期不知道还有多久,之后我会只关注自己还有可能会去的企业,尽最大努力保证选择的主动权。

四、 长时准备而不是短时突击

1. 既然已经是校招了,保证简历不被刷掉是第一要义。

大二的时候写了人生第一份简历,这几年一直在更新维护,格式和表达还让wangyu老师修改过多次,非常感激。

2. 笔试

今年的笔试题目已经正常好多了,很多公司都开始使用专业的平台做测试。

要求比较高的外企,笔试全是编程题,直接把编码和算法能力不强的拒之门外,很合理。国内企业则更多考察基础,奇奇怪怪的选择题,简简单单的编程题(头条的题目还是挺难的)和不明所以的设计题,看重价值观测评的也不在少数。

一般我会把编程题全部写出来,其他题随便写写,进入面试基本不会有意外。猿题库笔试是挂了的,那天电脑出了点bug,应该是有一份代码没有保存上。写代码的功底和算法能力还是要从平时练起吧,没有基础的过一遍leetcode非常必要,常用的数据结构、算法和编程思想都会涉及到,具体代码写成什么样就要看付出多少努力了。

3. 面试

面试看个人实力,也看运气。比如我面某东的时候,面试官问我一道题,秒速给出正解,他说回答的很好,但是和岗位不太适合(投递的其实没错,是他们内部把岗位搞错了),全程5分钟,GG。

抛开运气因素,个人方面也需要做充足的准备。比如电面的时候,要提前检查设备(电脑摄像头、麦克风、耳机、手机电量、是否需要网络翻墙等)、准备简历和写画的纸笔专业技能要好好准备,除了基础知识(编程语言、计算机网络、操作系统、编译原理、数据库、设计模式、linux内核...),还应该根据岗位在某一方面深入,比如投递C++研发,就需要读《STL源码剖析》、《Effective C++》、《C++ Primer》等书籍,我在某次面试中就写过泛型的hashmap。编程能力一定不可或缺,培养自己mental programming白板写代码的能力,比如我在面试网易的时候,听说《剑指offer》很火准备看一下,却发现里面的题目几乎全部都思考过。如果是外企,还需要有一定的外语能力,至少简单的听说是必要的,提高是以后的事,碰到印度人或者日本人算是倒霉。

充分的准备也会带给人极大的安慰,可能真的是需要尽最大的努力,才能用更好地心态去面对事情。

虽然九月份才开始大规模投递简历看起来有些突击的性质,但是所有的准备都需要在平时有一定、甚至长时间的积累,短时的提高比较有限,比如和同宿舍的其他3位同学相比,我尽力在花时间,却还是分别在基础知识、数学理论和实战开发方面有所不足。最不容易提高但是提高后又比较容易保持的一项能力是编程,个人觉着需要至少一年时间不间断地努力训练才能有明显提高。

五、面试记录Demo

下述是我某次面试完之后的记录(透漏了面试题目就不说抱歉了,因为leetcode都有。其中有一个没有,但是某本书上出现过,后来被我挂在了leetcode上)。

1. 写不出bug free的代码是拿不到offer的。我以为有想法并且写完代码就可以,事实是,边界条件一个都不能少、低级错误一个都不能有。

2016.06,注册LinkedIn不久,推荐并申请了Beijing Hulu Research Software Development Intern。

想起Hulu之前曾傲娇地把B神和G神的简历拒掉,我就没抱着什么希望了。但没想到LinkedIn这么靠谱,申请一周就收到了Hulu HR的电话和电面邀请的邮件。Hulu面试算法巨难还是有所耳闻的,所以还是去wx那里取了下经,得到的忠告就是,要聪明,算法题要做出来,这是通过面试的基础...下午面试,上午就花了一上午时间把网上所有关于Hulu的面经刷了个遍,面经里面提到的算法题稍微想想其实也都是可以做出来的,所以也算是给自己定了下神,平常心就好。

面试开始,还是像之前的电面一样,先自我介绍,聊项目,聊经历。面试官还是比较随和的,很耐心地在听我讲并和我作简单探讨,期间还稍微问了下TCP建立和释放连接过程、C11相比于C98的新特性等问题,回答的一般,我应该多读一些书的,奈何一直准备论文,没有时间啃书。之后面试官说要面试算法题,并发给我一个在线文档的链接,我和面试官可以同时编辑这个文档,他在上面可以定义函数框架、数据结构等,我则要在上面写出面试题目的代码。第一题是用位运算求a+b,想了几分钟并用二进制去做简单模拟,没有发现用位运算哪里有方便或者特别的地方,于是和面试官交流,二进制计算也需要和普通十进制加法一样,考虑加和和进位,他说对,那用二进制如何计算加和和进位呢,我想了想,说分别是a ^ b 和 (a & b) << 1,他说,那能不能把加和和进位分别考虑然后计算呢...在面试官的提示和进一步的交流下,讨论出了子问题和边界条件,这时候面试官说既然想出来了就不必写代码了...于是开始问我第二题...是一个单链表操作,要求把链表从从1->2->3->...->n变换成1->n->2->n-1->3...,想了一两分钟尝试问面试官期望的复杂度并说在空间为O(n)的时候有一个直观的时间也为O(n)的算法,就是对原链表做一次反转,然后两个指针在两个链上扫...面试官表示认同,提示说两个链表是不是只用到了一半的空间,能不能在此基础上做改进?瞬间想到其实只要对len/2以后的部分做翻转就行了,len是链表长度,听到这里面试官示意我可以开始写代码了。于是开始写程序,翻转是核心,于是一边在纸上画翻转过程,一边写,写完之后给面试官讲解并说没有考虑边界情况,要完善的时候面试官说这个题目已经可以了没有必要再写代码了...然后问我有没有什么想问的...1h结束。

这次面试过程要相对顺利一些,但是代码应该写的再流畅一些才是...纵然感觉还不错,算法题也都答了上来,却连onsite都没有拿到,心里落差是有的...wx说运气成分也在吧,intern比fte要难,瞬间也平衡了些,就当攒人品吧。忙完这段时间开始认真准备工作,肯定有机会再战的。

六、用比较吉利的6结束

其实也什么要说的了,用6结束就当是为了自己攒人品吧。攒人品很重要,比如我和小伙伴去逛超市的时候,同样是面,我们会选择名称叫面霸的而不是挂面。这个十一,朋友圈被本科同学刷爆了,他们浪在云南,浪在西藏,而我能够和好gay友约上一发已是足够知足了。

75dd2926b402be8db5eb44bf03f940c1

在这场Job Hunting之旅中,有幸和诸多伙伴一起成长,不管追求的远方是什么,能在这本可以水水就过的时光里如此努力并有所收获也是足够幸运了。

道阻且长,未来也很长,加油。