前言

从2017年3月的实习生招聘开始,到2017年11月秋招结束,跨越半年的找工作之旅终于走到终点,也终于能够停下来好好回忆和总结这段旅程。

写下这段经历也为给即将开始找工作的师弟师妹们提供参考和建议。予人玫瑰,手有余香。

本文主要分为:

  • 实习生招聘和秋招战绩:主要罗列我的实习生招聘和秋招投递的公司以及拿到offer的情况。
  • 实习生招聘和秋招时间线:主要以时间线的方式来记录我的每次应聘状态变化(如网申、笔试、面试等)。
  • 实习生招聘和秋招经历:主要介绍我参加的各个公司的实习生招聘和秋招的笔试&面试亲身经历。
  • 实习生招聘和秋招见闻:尽量从客观的角度来介绍在我参加实习生招聘和秋招过程中的所见所闻。
  • 我的实习生招聘和秋招准备:主要介绍我是如何准备实习生招聘和秋招的笔试和面试的。
  • 我对实习生招聘和秋招的建议:以问答的形式来介绍我对学习学妹们实习生招聘和秋招的建议。
  • 我的实习生招聘和秋招感想:主要介绍我在实习生招聘和秋招时的一些感想,主要是一些主观方面的,同样采用问答的形式。

实习生招聘和秋招战绩

实习生招聘战绩

公司地点岗位批次结果
阿里杭州Android开发内推三面跪
阿里杭州Android开发正式一面跪
腾讯深圳Android开发正式offer
百度上海Android开发正式笔试跪
Google上海Software Engineer正式简历跪
微软苏州Software Engineer正式笔试跪
网易游戏杭州游戏研发内推offer
网易杭州Android开发内推笔试跪
美团点评上海Android开发正式笔试跪
华为南京Android开发正式offer

秋招战绩

公司地点岗位批次结果备注
阿里杭州Android开发正式二面跪
腾讯深圳Android开发实习转正special offer正常挡
百度上海Android开发正式三面跪
Google上海Software Engineer正式笔试跪
微软苏州Software Engineer正式special offer
网易游戏杭州游戏研发内推special offer南京最高挡
今日头条北京Android开发内推special offer最高挡
美团点评上海Android开发内推offerA挡
滴滴杭州Android开发内推笔试跪
滴滴杭州Android开发正式笔试跪
华为南京Android开发FXoffer是否special未知

实习生招聘和秋招时间线

时间公司类别批次状态备注
2017-03-01阿里实习内推网申
2017-03-01美团点评实习正式网申
2017-03-04阿里实习内推一面
2017-03-06阿里实习内推二面
2017-03-06网易游戏实习内推网申
2017-03-08腾讯实习正式网申
2017-03-11网易游戏实习内推笔试
2017-03-13阿里实习内推三面未通过
2017-03-13网易实习内推网申
2017-03-13华为实习正式网申
2017-03-13微软实习正式网申
2017-03-13Google实习正式网申未通过
2017-03-14网易游戏实习内推一面
2017-03-17华为实习正式笔试
2017-03-21美团点评实习正式笔试未通过
2017-03-23阿里实习正式网申
2017-03-24网易游戏实习内推offer告知面试通过
2017-03-25网易实习内推笔试未通过
2017-03-29百度实习正式网申
2017-03-31微软实习正式笔试未通过
2017-04-02腾讯实习正式笔试
2017-04-10网易游戏实习内推offer邮件
2017-04-13腾讯实习正式一面
2017-04-14腾讯实习正式二面
2017-04-15腾讯实习正式三面HR面
2017-04-20华为FX正式笔试
2017-04-24腾讯实习正式offer电话
2017-04-24腾讯实习正式offer邮件
2017-04-26华为实习正式一面
2017-04-26华为实习正式二面
2017-04-26阿里实习正式笔试
2017-04-27百度实习正式笔试未通过
2017-05-02华为实习正式offer告知面试通过
2017-05-10华为实习正式offer邮件
2017-05-23阿里实习正式一面未通过
2017-06-17华为FX正式一面
2017-06-17华为FX正式二面
2017-08-17阿里秋招正式网申
2017-08-20网易游戏秋招内推网申
2017-08-20Google秋招正式网申
2017-08-22百度秋招正式网申
2017-08-22美团点评秋招内推网申
2017-08-22滴滴秋招内推网申
2017-08-24今日头条秋招内推网申
2017-08-25阿里秋招正式笔试
2017-08-26滴滴秋招内推笔试未通过
2017-08-27Google秋招正式笔试未通过
2017-09-05美团点评秋招内推一面
2017-09-05美团点评秋招内推二面
2017-09-05美团点评秋招内推三面
2017-09-05美团点评秋招内推四面HR面
2017-09-10微软秋招正式网申
2017-09-10滴滴秋招正式笔试未通过
2017-09-10今日头条秋招内推笔试
2017-09-13阿里秋招正式一面
2017-09-15阿里秋招正式二面未通过
2017-09-15网易游戏秋招内推笔试
2017-09-17今日头条秋招内推一面
2017-09-17今日头条秋招内推二面
2017-09-17今日头条秋招内推三面
2017-09-19百度秋招正式笔试
2017-09-25网易游戏秋招内推一面
2017-09-25网易游戏秋招内推二面
2017-09-25腾讯秋招实习转正offer电话
2017-09-26腾讯秋招实习转正offer邮件
2017-09-27网易游戏秋招内推offer短信
2017-09-28网易游戏秋招内推offer纸质
2017-09-29微软秋招正式笔试
2017-09-30今日头条秋招内推offer意向
2017-09-30华为FX正式offer意向
2017-10-11美团点评秋招内推offer电话
2017-10-14百度秋招正式一面
2017-10-14百度秋招正式二面
2017-10-14百度秋招正式三面未通过
2017-10-14美团点评秋招内推offer邮件
2017-10-15今日头条秋招内推offer邮件
2017-10-24微软秋招正式一面
2017-10-24微软秋招正式二面
2017-10-24微软秋招正式三面
2017-10-24微软秋招正式四面
2017-11-22微软秋招正式offer电话
2017-11-23微软秋招正式offer邮件
2017-09-26腾讯秋招实习转正offer沟通后调档为special

实习生招聘和秋招经历

由于笔试和面试过去时间较久,很多细节都已记不清楚,所以下面写的笔试/面试经历只挑出了其中印象深刻的部分,并非完整的笔试/面试经历。关于常考的笔试/面试题目,我已整理并放在了GitHub上,如有需要,敬请参考zhantong/interview: Android方向面试、笔试知识整理

实习生招聘经历

阿里

阿里的实习生招聘我参加了内推批次和正式批次一共两场。

阿里的内推批次和正式批次的时间是完全错开的,即在内推全部结束后才开始正式批次。需要注意的是,阿里主要部门(集团、菜鸟、蚂蚁等)的招聘几乎全部放在内推批次中,而正式批次绝大多数是非主要部门(高德、优酷土豆、虾米、钉钉等)的招聘。

阿里的内推没有统一的笔试,在内推成功后,马上就会收到素质测评和编程测验的通知。然而这两个测评其实并没有太大意义,做不做都会很快(一两天)就开始面试的。阿里内推批次的面试全都是电话面试。我在内推后的第二天就接到了一面的电话,部门是菜鸟/无线(记不清了)。

内推一面大概40分钟,主要问的计算机基础,如HTTP、TCP、并发、二叉树遍历、字符串匹配算法等,还让我简单介绍了我做的两个项目。因为我的其中一个项目做的APP中有调查问卷的发放和收集,所以问了我如何防止有人刷问卷;我回答说可以限制IP、记录设备唯一编号、监测做问卷模式等,但都存在一些漏洞。最后我问他Android开发过程中是不是会遇到很多兼容性问题,面试官回答说会遇到,还详细说了他们有专门的大规模真机测试来检查兼容性。一面总体上答的还行,几乎没有涉及到Android相关的问题;因为是电话面试,也就没问什么算法题。

内推一面两天后就接到内推二面电话了。二面大概50分钟,主要问了Java GC机制、Android APP启动过程、Android事件分发、Android View绘制流程。GC机制因为刚看过所以答的比较好,然而因为阿里面试开始太早,我还没来得及复习Android,所以Android相关的问题答的一塔糊涂,比如APP启动过程就支支吾吾乱说一气,View绘制流程干脆说不知道,跟面试官说我知道Android事件分发流程,于是事无巨细说了好长一串,最后被面试官吐槽根本不熟悉Android。最后问了面试官对国内手机厂商乱改Android Framework层有什么看法,面试官回答说他也很无奈,但阿里一般都和手机厂商有合作,直接进白名单,所以没有碰到太大问题。

内推二面后过了一周多才接到内推三面的电话,而且是在周末的晚上11点的时候。三面大概20多分钟,主要问了做过的项目、Java基础、最近看的书、到阿里想学到什么。我不太确定这轮面试是技术面还是HR面,因为是晚上11点和女票刚回到酒店完全不在状态,而且面试官也似乎很不耐烦,加上那段时间一直在准备技术方面的问题对这些HR面相关的问题完全没有准备,所以答的很啰嗦也很糟糕,好多都没有答到点子上。最后我问面试官我答的怎么样,面试官也没有说什么就急忙不耐烦挂电话了。

内推三面结束后就觉得应该是挂了,然后又等了一星期,官网上就从“面试中”变成“已回绝了”。

等到阿里正式批次开始的时候又投了正式批次,正式批次有统一的笔试,笔试用的阿里自己的系统;笔试内容记不清了,但一二十个选择题记忆深刻,好多超出Android相关知识的题目,好多做不出来的智力题。

正式批次的笔试似乎只有很少数的人通过了(主要是因为正式批次的岗位很少),幸运的是我也通过了,在官网预约面试时间后就开始准备视频一面了,面试的部门是钉钉(像之前说的,正式批次的部门都比较边缘)。

正式一面是视频面试,大概不到20分钟,是我实习秋招体验并列第二差的面试。主要问了Activity中能不能执行耗时操作(就是UI线程相关)、Android中有哪些内存泄漏的情况,然后就是共享屏幕写代码:实现单链表的插入删除和查找。为什么说体验非常差呢?首先整个面试就问了两个问题,而且这两个问题几乎任何有Android开发经验的都能对答如流,并且我回答完后就没有然后了,没有继续深入问;其次那个代码在数据结构教材上讲链表的时候一定会讲,而且也没有什么技术含量。最后面试官说还行,也没让我问他问题就结束了。

一天后官网状态就变成“已回绝”了,累觉不爱。

美团点评

美团点评也是很早就网申了,其实最初是找的师兄内推的,然而当时内推的岗位是后台开发,仔细想了想之后我又改成Android开发,于是就不是内推了(直到我笔试挂了才明白这个道理)。

之后就收到了美团点评的统一笔试,美团点评用的是北森系统,奇烂无比。笔试题目记不清了,最后有一个编程题,好像是求最长递增子序列,经典题目了。当时感觉笔试做的挺好的,然而笔试完就再也没有消息了,简直是黑人问号。

后来想了想可能是我当时网申的时候,选“感兴趣的事业群”选了“都感兴趣”导致没有一个事业群对我感兴趣,这个后面再说。

网易游戏

严格来说我投的是网易互娱(区别于雷火&盘古,后面再说更多区别),走的内推。网易游戏以其笔试难度大著名,这次也不例外;所有的内推都要求参加统一笔试,我记得笔试有几场,我是在第一场。内推的岗位是网易游戏最核心的“游戏研发工程师”,地点是杭州。

笔试用的牛客网平台,大大的赞。笔试一共四道编程题,一共150分钟,难度都很大,前三题用不到啥高深的算法,但需要想到解题的思路,最后一题是一个多重背包问题。笔试我一共过了三题半,因为最后一题不知道为啥内存超限了,用的primary int和动态规划,理论上是不会内存超限的。做完笔试题几乎就有把握能进面试了,当时预感能做出两题就能进面试,后来发现好多人只做出了一题就进面试了。

网易游戏实习生招聘很神奇的是整个就一轮面试,HR面是不存在的。面试是视频面试,用的牛客网平台,大概面了一个小时多一点。面试主要就是把计算机四大专业课轮番问了一遍,问了Java语言基础,最后还问了一个算法题。四大专业课问的也就是那些基础问题,不过有些地方问的很深,基础的像问到了各种排序算法的最好、平均、最坏时间复杂度、线程和进程的区别、cache工作原理、计算机网络七层模型;问的深的像问到了进程中有多少个栈、线程中有多少个栈、阻塞是指进程阻塞还是线程阻塞、一台服务器上TCP和UDP监听端口号能不能相同、服务器80端口和客户端建立连接后会不会切换端口等。Java语言基础这里有个小插曲,面试官没想到我不会C/C++(因为岗位介绍里面有写要会C/C++,但五个要求里只要求满足任意两个就可以投递)只会Java和Python,于是他就只好问了一些Java语言基础的问题,比如Integer和int的区别、GC的工作过程等;还问了Python的装饰器的原理,我就说了说面向切面编程相关的;最后面试官觉得不问C/C++不行,然后问我知不知道C/C++里的虚函数,被我一口回绝了。最后问了一个字符串循环移动的算法题,算是一个经典题目了,直接口头说三次翻转就好了。最后问了面试官说岗位介绍里要求会C/C++,但我看招聘网站介绍里有提到Python,实际中是用哪些语言呢?面试官说C/C++主要用在游戏引擎那块,开发主要还是会用Python。虽然整个下来有些题没有答上来或者答错了,但整体来看还是答的很好的,反正对我来说已经发挥到极限了。面试完就感觉这个offer基本要到手了。

等了两周多才收到了网易游戏的offer,但也算是我实习生招聘收到的第一个offer,也是很有分量的一个了,自此我的实习生招聘就有底气了。

腾讯

腾讯的实习生招聘其实我也参加过内推,内推的上海IEG,然而石沉大海,就不多说了。

腾讯正式批次有统一的笔试,笔试用的北森的系统,奇烂无比,编程题测试用例要自己写,考试的时候线上编译器竟然还坏了。另外腾讯的题目也很奇葩,我一个Android开发选择题里十题就有九题是C/C++和Obj-C,简直是蒙着眼睛在选。不过幸运的是腾讯向来以笔试不刷人著称(我周围的几乎全都过了腾讯的笔试,但根据我之后在腾讯的leader说,其实还是有分数线的),笔试过了一两周就收到了南京现场面试的通知,在南京水游城假日酒店,部门是深圳SNG的增值产品部。

正式一面大概40分钟,主要就是照着我的简历里的项目问,时不时拓展到计算机基础。和Android相关的似乎并没有问,拓展到的计算机基础知识比如就有HTTP是基于TCP还是UDP的、虚拟内存的意义和工作过程、死锁产生的条件等,问的很多,但都很基础。最后还问到了我简历上写的Android相机开发系列博客文章,问我怎么想到写文章分享的,我说因为自己就是这么踩坑一步一步走过来的,希望能帮到新手能少踩点坑,他表示赞同。最后他问了我一个算法题,就是链表转置,正好我前一天晚上刚看了的,就一口气写了出来。最后我问了面试官他是哪个部门的(因为我正式批还是投的上海IEG),面试官回答说是SNG的增值产品部。因为回答的很好,跟面试官全程有说有笑,所以感觉一面十拿九稳了。后来实习的时候,这个面试官就是我的leader了,也就是带领大约10个人的Android开发组组长。

一面当天晚上就收到了二面的通知。正式二面大概40分钟,主要让我介绍了我的项目,又出了几个题让我做。项目就是让我介绍我科研做的那个流式二维码数据传输系统,我介绍的时候面试官听的很仔细,让我详细介绍了拍到的二维码是如何定位、采样和识别转换成二进制流的。然后问我传输速率是多少,我大概说了个数结果面试官拿笔在算怎么得到的,然后出了点岔子,传输速率就算是理论值都达不到我说的数,场面一度十分尴尬,不过还好我说后来我们用了彩色二维码,传输速率成倍提高了,他也就没有继续追究。然后面试官问了我内网设备访问外网服务器的访问过程,我就仔细解释了NAT的工作原理。然后问我假如现在有很多手机号,给出一个手机号如何能快速查找到这个手机号是否已经存在,我就用笔和纸仔细解释了Trie树;然后他问我为什么不直接用Hash,我又用笔和纸跟他详细说了Trie树相比Hash是如何节约空间的。最后他问了我一个概率题,大概就是三个蓝球一个红球求任意拿两个球只有一个红球的概率,初中的古典概型题;然而我当时脑袋抽风了竟然想不出来,就跟面试官说我穷举可不可以,他说能做出来就好,于是我就真开始穷举了,然后面试官就看不下去了,说你这么做要做到什么时候;不过在脑袋空白了几分钟后还是慢慢做出来了,有惊无险。最后他就问到了我拿到了哪些offer、女朋友在哪、想在哪里工作、介不介意去深圳的问题,我说我更想去上海(因为腾讯在上海有分公司),实在不行也能去深圳。然后面试官就打电话给HR问后面的面试流程,听电话里大概意思是还有HR面,但HR明天才到南京。这时候我感觉二面也十拿九稳了,于是趁最后的机会直接问面试官说“不能今天就直接HR面吗”,面试官也老实回答说HR明天才到,安排你明天HR面。后来实习的时候,这个面试官就是我们的部门总监了,就是我leader的直接上级。

风平浪静中等到了第二天的HR面,让我见识到了套路可以玩的有多深。HR开始就跟我说,面试过程中可能她会看电脑敲键盘,但这并不代表她没听我说话,只是她在做面试记录而已。然后HR面开始,先自我介绍,然就就是问一些常规性的问题,比如生活中遇到的困难之类的。然后问我知道腾讯的哪些产品,让我说出十几个,最后简直都要说的山穷水尽了。然后问我最近在看哪些书,我说在看设计模式,然后简单介绍了下说有十几种设计模式,对我写代码能力有很大帮助;然后她问我具体有多少种,我说12种吧,然后她就让我说出这12种!于是她步步紧逼,我绞尽脑汁想,也只说出了8种,最后她妥协了,说“那就认为你是真的看了的吧”。然后问我有哪些offer,我说有网易游戏offer在路上了,她就问我怎么看待网易游戏的offer、杭州和深圳怎么考虑,我当然是夸奖了腾讯一番。然后她问我可不可以看看我的手机上有哪些APP,然后我把手机给她,她仔细滑仔细看,最后也没说啥(当时我手机上腾讯的APP似乎只有QQ和微信,网易家的倒挺多,但是没有游戏)。总之呢,当时的气氛真是难以形容,就像一眼就被HR看穿了,根本躲不了。最后问了HR说最早啥时候有结果,HR说要等大概两周,等全国的线路面试结束回深圳了才会作出决定。

后来就是等了不到两周就收到了腾讯的实习offer,不过当时也已经收到了网易游戏的offer,然后纠结的觉都睡不好,这个后面再说。

网易

网易找的内推,因为当时网易游戏的笔试才结束,也不知道自己会不会通过笔试,所以也就投了网易,投的是网易互联网的Android开发。

网易也有统一的笔试,不过要笔试的时候我已经拿到网易游戏的offer了,想着不能消极弃考,于是也就参加了笔试。笔试用的牛客网平台,但画风和网易游戏完全不一样,网易的笔试有很多选择题,还有简答题,最后的编程题难度不大,感觉区分度不高,这里就不详细说了。

做完笔试题感觉难度不大,应该能混到面试,然而笔试跪了,我一直怀疑是不是因为我拿到网易游戏的offer了,网易互联网就不想理我了。

华为

因为南京有华为南研所,所以也投了华为。华为南研所负责江苏和山东地区的招聘,南大作为这里最好的大学,也就没必要找内推了,直接网申。

华为实习生招聘有统一的笔试,用的牛客网平台,难度都很小,不过其中有一题是要用Dijkstra算法,当场写出来还是遇到了一些坎坷。

笔试通过后似乎还做了一个网上的综合测评,其实就是性向测试,听说是华为的传统,这个没什么特殊的,就不说了。

因为在南京,所以就是直接去江宁的华为南研所面试了。面试一共两轮,一面叫业务面试,二面叫综合面试。流程是先去一个很大的阶梯会议室坐着等,等一面面试官过来叫人去面试,面完回来等二面,然后二面面试官来叫人,然后结束。印象中当天拖了很久才轮到我面试,印象不太好。

一面面试官直接就跟我说南大的学生就不用怎么面试了,直接过的。所以面试一二十分钟就结束了,主要就问了下项目,也没问啥计算机基础知识,真的是走过场了。最后面试官看我报的岗位是Android开发,她说南京没有Android开发,深圳是做Android开发的(后面说这里闹了个乌龙),问我怎么办,我说那转软件开发吧,我要留在南京。

二面也没有问太多东西,就是一直盯着我做的科研项目问,对那个流式二维码文件传输系统很感兴趣,问了应用场景、传输速率、有哪些优缺点、用到了哪些技术之类的,我提到用到了喷泉码的技术,他还让我用笔和纸讲喷泉码的工作原理。

二面完了感觉offer十拿九稳了,等了一周就收到了华为的实习offer。

微软

微软找不到内推,就索性直接投正式批了。投的是STCA苏州的software engineer,就是研发岗了。

微软同样有统一笔试,用的是hihoCoder平台,一共四道编程题(题目在微软2017年预科生计划在线编程笔试),共150分钟。然而我第一道题都没做出来,应该说是好多人第一道题都没做出来,这题题意不清,各种规则很容易混淆,给的示例又过于简单,导致得提交代码碰运气才能猜出来题目意思。后来听说微软这一题用力过猛,导致好多人死在第一题上,为了挽回这个事故的损失,微软又给那些没有在考试中提交代码(听说提交了但通过率为0%的也算)的同学第二次机会,组织了第二场笔试。然而我第一题提交过,也就没有收到第二次笔试的通知。

苏州微软本来是我找实习的目标(后面仔细说),然而连笔试都没有通过。

Google

Google我从没找到有中文的实习招聘介绍,可能别人只要上海地区那两所学校的吧。

就在Google上找了个英文的招聘页面,填了各种乱七八糟的东西,选了地点是上海,然后投了出去,然后就没有然后了。

百度

其实本来就不想去百度,但为了凑齐BAT,也就投了,也没找师兄内推,直接网申。投的是上海的Android开发。

百度有统一的笔试,用的赛码网平台。笔试题记不清了,印象最深的是有一个简答题题目说明了APP的类型等,让写出<intent-filter>,当时就感觉日了狗了从来没见人考过这个现在还要我手写出来,最后还是靠着记忆和想象写出来了。笔试题我觉得做的挺好的,但还是在意料之中跪了。为啥?因为百度招聘官网已经明确说了上海的Android岗位只招8个人,哪轮得到我。

秋招经历

华为

我参加的是华为南研所的FX招聘,不是正常的秋招。FX招聘在四月份就开始了,以至于我在发现迟迟不发offer的时候才发现这是秋招不是实习生招聘。

FX的网申、笔试和面试与实习生招聘基本重合,因为实习生招聘已经投过简历了,所以FX的网申就是报个名字的事情。

FX的笔试比较水,就是前面几场实习生笔试的最后一题的集合,然而我正好把前面几场实习生笔试的题都做过,所以这个笔试对我来说也是走过场了。

FX的面试流程除了面试官不一样外其他的都和实习生招聘一样。一面面试官是南京地区消费者云服务的一个大佬(我猜),全程没问什么计算机问题,就是对我的科研项目基于流式二维码的数据传输系统很感兴趣,还想让我现场演示(这时我掏出了老板配的华为平板,顺便吹了一波华为)。整个面试过程中感觉面试官说的比我多,给我详细介绍了消费者云主要做什么、南京有哪些团队、做出来的东西、未来的计划等等。期间他问到我说为什么实习的时候投的软件开发,而现在投的是Android开发?我说可能是忘了改了,我应该投软件开发的,本来投的Android开发,因为实习面试的时候面试官说南京没有Android开发,于是就改成软件开发了。这时面试官一脸震惊,说那个面试官是谁这么不负责任,南研所有几百人在做Android开发,而且从应用层到framework层都有人做,也在大量招聘Android开发,哪里不招了。我一脸懵逼,于是也顺着他一起吐槽实习面试的面试官了。

愉快结束了一面紧接着就是二面了。二面面试官看着有些年纪了,那气场一看就感觉是大佬,说话也不紧不慢,简直VP既视感。全场也没问啥计算机知识,甚至都没问太多技术相关的问题。比如开场问我多大了,这年纪上研究生太年轻了,于是跟我一起反推什么时候上初中什么时候上小学。然后还问到我本科专业,我说我本科学武器的,他说武器好啊,报效国防,然后问我为啥转专业,我就掏心掏肺说我喜欢计算机之类的。总之聊的很多,但技术方面的很少,就像是普通的聊天一样。

六月份面完后一直等到了九月底才收到offer,也算是我秋招史上最长等offer时间吧,中间HR在群里各种沟通各种宫斗大戏后面再讲。九月底接到offer电话当场就拒了,理由是等了太久已经签了其他公司。

阿里

阿里内推8月初就开始了,而那段时间我正在腾讯实习,觉得自己没有精力准备面试,于是就主动放弃了阿里的内推,直奔8月底正式批次。

正式批次和实习的时候一样也有统一笔试,笔试也同样是用的阿里的系统,被选择题虐的死去活来,然后也同样幸运通过了笔试(通过笔试的人数也和实习一样很少),在官网预约视频面试后就开始准备一面啦。一面不分部门,然后二面部门是钉钉。

正式一面是视频面试,大概40分钟。主要介绍了我做的项目,然后问了一些计算机基础的问题、问我是怎么学习新技术的、问我有没有为开源项目贡献代码等。和面试官聊的挺投机的,计算机基础的问题打的都不错,学习新技术我说我每天都在关注技术新闻,有新的技术出现我都会去看看简介,如果感兴趣还会去GitHub主页上star一下;然后在腾讯实习正好给Google的Guetzli提交过代码,也给腾讯新开源的VasSonic提交过代码。最后我问面试官为什么面试中没有问我Android相关的问题,他说这主要是一个综合性的考量,看我有Android开发经验也就没必要问了。

正式一面胸有成竹,不出意外预约了第二天的二面。前面说我二面的部门是钉钉,有没有发现我实习正式批次一面跪的部门也是钉钉呢?而且!之前说实习正式一面是体验并列第二差的面试,那并列的另一个面试呢?没错!就是马上要说的正式二面!为啥?因为面试官又是实习正式一面那个!还是同样的配方!还是同样的味道!

正式二面大概不到20分钟,主要问了我在腾讯实习在干啥、Android中Bitmap的注意事项和优化手段、Broadcast Receiver的使用方法以及与UI线程的关系,然后就是共享编辑器写代码:实现多个无序数组的合并排序。就问了三个问题,我说在腾讯做Android QQ动漫模块截图涂鸦功能,顺带引出Bitmap然后说了Bitmap需要注意内存使用和一些优化手段,然后介绍了Broadcast Receiver。代码其实就是把几个无序数组先合并成一个数组,然后来一遍快排就好了,最开始我把题目理解错了,但还是很快把代码写出来了(因为背过快排)。对于面试阿里秋招的同学来说,这几个问题以及那个算法题应该是信手拈来了,我觉得没有任何区分度。最后我问面试官那个算法题还有更好的解法吗(因为我说合并后快排,他还在一直说有更好的解法),他说我可以回去再想想,但我写的代码能用到快排已经不错了。

二面面试官说他觉得我面试还可以,算通过了,然而我没有接到HR面的通知,过了几天官网状态就变成“已回绝”了。

网易游戏

虽然拒了网易互娱的offer,但秋招还是又走内推投了网易互娱,岗位仍然是游戏研发工程师。

照惯例,网易游戏还是要统一笔试,这次我又参加的第一场笔试。笔试是一共五道编程题,共150分钟。编程题难度相对实习笔试来说要偏难,主要难点在时间不够,好几题都要处理很多的细节问题导致花费大量时间,最后以做出来了三道多交卷。

照实习时的情况,五题我做出来了一半多应该就没问题了,于是就在安心等面试通知。网易互娱这次是到南京现场面试,地点是在金鹰珠江壹号国际酒店。

在面试前有个意料之外的现场编程测验,就是给一张写有编程题的A4纸,和一张白纸,让把代码用C++手写到白纸上,限定时间半个小时。当时我就震惊了,九死一生挺过了笔试,还来现场编程测验这一出。我拿到的题目是,二维平面上有一些点的坐标,这些坐标按顺序连成一条折线,求这条折线上N等分点(N是未知数,即传入参数)的全部坐标。坐着想了几分钟就有思路了,其实就是初中数学题;就是C++手写有点麻烦,不过还是一口气顺利写完了。半小时时间到后,HR把试题那张纸收上去了,剩下那张写有代码的纸让我拿着给待会一面的面试官。

一面是在酒店房间(的桌子两头),大概一个小时。面试官首先看了我写的代码,让我对着代码讲我的思路,讲完之后面试官表示认同。然后根据代码问我为什么要用n * 2而不用n + n,我说懒得涂掉重新写,而且编译器也会自动优化成移位运算;然后面试官继续问了我编译相关,和移位运算的问题。然后还是根据代码问我说看我代码里有好几处调用函数重复计算,我说也是懒得涂掉,其实可以计算一次然后保存成变量以后直接用,面试官也没有深究。接下来面试官就开始问算法题了,最先问了一个在二维平面中有一个圆,怎样可以得到在这个圆上的均匀随机点,这题我见过类似的,就说把这个园外接成正方形,然后在正方形中生成随机的点,如果点在圆外,则重新随机,如果点在圆内,则输出;然后面试官说这样方法执行的时间是不确定的,问我有没有其他方法,然后我又想了用极坐标的方法,跟面试官讨论后认为并不是均匀的,然后继续想,花了挺多时间的。再下面一题是LeetCode上的题目,从两个数组中寻找中位数,我简单讲了讲思路,然后说这题有许多细节问题,面试官也没再深究了。印象中还问了两个LeetCode Medium级别的算法题,但记不清了。最后问面试官说我面试算通过了么,面试官笑着跟我说不要对自己太没信心。于是就安心等二面了。

二面同样也是在酒店房间,大概也是一个小时。二面面试官问的比较广,天南海北的知识全都问了。面试官看了我的简历上写的都是Android开发,然后就让我介绍Android的framework层,这可真是出其不意,不过我还是围绕着Android四大组建说了一通,感觉面试官对Android有些了解,但了解的不深。然后让我详细介绍Java GC机制,这个背的滚瓜烂熟了。然后看到我简历上有写YUV颜色的处理,就让我介绍了一下YUV颜色空间,以及与RGB颜色空间的关系。然后看到我的简历上有写机器学习,就问了我决策树和SVG的区别,这个是必修课上学过的,就从维度、过拟合、分类情形上讲了讲;面试官又继续问决策树怎么解决过拟合问题,我就说剪枝和随机森林;然后面试官又让我介绍随机森林,于是我又从Boosting和Bagging的角度讲了讲。然后面试官看到我写了个12306换乘查询网站,又让我介绍了这个项目,问了我是怎么爬数据的,换乘搜索是怎么实现的,效率怎么样之类的,我一一作了回答。然后问我知不知道计算机图形学,我说我研究生修过选修课,最后基于OpenGL实现了一个光线跟踪算法;面试官很感兴趣,问了我怎么实现的,我主要讲了讲光线跟踪算法的过程,和一些数学计算方法。然后还问了我一个游戏场景题,一个活动有10人报名,需要将其分成2组(每组5人),每个人有门派和伤害属性,问如何分配使得每个队的门派尽可能平均、且两队总伤害尽可能接近;我想了想,说将10个人排序,按顺序每种门派排两人,剩下多余的人全都放在队列尾部,然后队列中每两个人挑一个人出来,使得总伤害尽可能接近总和的一半,我说这个“每两个人挑一个”我暂时只想到了暴力的方法,但应该还有更好的方法,面试官表示同意。再后面就是跟面试官聊了聊为什么选择游戏行业,希望在哪个城市工作的问题,我讲了讲自己在腾讯实习的经历,说对游戏行业并不排斥,希望自己能在杭州之类的。面试官最后直接问了我期望薪资,我也不含糊,直接说年薪30w+。

二面完了就直接回去了,等了两天就收到了第二天去领取offer的短信(颇有霸道总裁的感觉),第二天一早就又去了酒店,HR跟我们讲了讲网易互娱的情况,然后就让我们等着被叫去酒店房间签offer。我大概是第三个被叫到的,在去房间的路上HR跟我说我的面试情况很好,拿的是南京地区最高挡的offer。给我发offer的就是之前二面的面试官,他给我拿出了一张胶装的offer,上面手写了岗位和薪资,然后给我解释了一些薪资和福利待遇,问我有没有问题,我答没有。最后他问我去网易游戏的概率有多大,我说50%,然后就拿着offer跑路了。

网易游戏的offer是我秋招唯一拿到的纸质offer,纸质offer果然比邮件offer有感觉多了。

Google

暑假的时候总算看到了Google校招的海报,说要参加Google Code Jam Kickstart的D轮和E轮才有面试机会,鉴于D轮正好在实习中可能准备不充分,于是就参加了E轮。其实就是三个算法题,但和一般的算法题区别很大(这里不详细说了),鉴于我不太熟悉这种模式,而且自己水平也不够好,只解出了这三题的small dataset,不久后就收到了Google的拒信。

百度

对百度无感,所以还是直接走的正式批次网申,还是投的上海Android开发,虽然官网开始写了只招个位数的人。

既然是正式批次那就肯定有统一的笔试了,笔试是赛码网平台,一共两个小时。笔试题目有选择、简答和编程题,选择题和简答题都是考察的Android,所以答的还不错;编程题也似乎没有太大问题。值得一提的是,笔试过程中接到了头条HR的沟通电话,然后就跟HR长谈了十几分钟,HR问我有没有投百度,我说正在做百度的笔试题,HR才匆匆挂了电话。

因为实习生招聘的时候就是笔试跪了,所以百度笔试完后也没太在意了。不过在等了很久之后还是收到了百度的面试,似乎收到面试通知的人并不多,可见百度笔试刷人之厉害。面试是视频面试,一共三面。

一面的面试官似乎没怎么用过视频面试,面试中断断续续在干别的事情,像是在屏幕上找什么东西。一面一共持续了二十多分钟,问的问题挺少的,基本上都是Android相关的一些典型问题,比如Fragment的使用、与Activity之间的通信之类的。面完了也没怎么让我问他,就说等几分钟二面。

二面面试官就比较轻车熟路了,二面大概持续了半个小时。二面最开始让我简单介绍了一下做的项目,然后就问了我一些Android相关的问题,没有印象特别深刻的,所以应该也是一些常规的问题。再后面就是让我做了两个算法题,难度算是LeetCode Easy级别的,挺容易做出来的。最后就是问我如何学习新技术、项目过程中遇到了哪些难题以及如何解决的之类的,这些都早有准备,所以也答的比较好。最后我问面试官我这轮面试算通过了么,面试官答通过了,等下一轮面试就好。

三面面试官给我的感觉像是总监,态度不那么热情,也不太友好,三面大概持续了不到半个小时。最开始还是介绍项目,然后问了我一个计算机网络的场景题:假设你做一个APP,希望能发现局域网中其他用到这个APP的设备,该如何实现?我答给APP开个后台服务,持续监听某一特定端口;然后因为知道自己的局域网IP,所以可以直接向整个局域网网段逐个向特定端口发请求,如果收到对应的回复,就代表发现了局域网中用到这个APP的设备。面试官说扫描整个网段会花费太多时间,问有没有更快的方法;这个我就不确定了,但还是回答说路由器可能可以提供诸如路由表之类的信息,相当于提供了局域网下所有设备的IP,这样就可以针对这些IP发送请求了;然后面试官就没有继续问了。然后问了一些Java基础知识,比如int和Integer的转换之类的,最后到Java中什么时候该用for什么时候该用foreach;我直接答说在Java里,foreach其实就是for的语法糖,两者并没有本质区别,所以forforeach没有特定的适用场合。我答完这个面试官的表情就变了,又跟我说了一遍问题意思后,我还是坚持之前的答案,最后面试官说forforeach在不同场合效率差别非常大,我说这个我不太了解,回去好好看看。于是就结束面试了。

可能就是因为三面的最后一个问题没答好,也可能是投上海Android的同学都比我牛,面试完就杳无音讯了。

美团点评

有了之前实习生招聘的教训,秋招果断让师兄内推了Android开发,而且还精确部门到美团点评上海酒旅做海外业务的Android开发组。

内推了没几天就收到了面试邀约,没错,直接跳过了笔试。这也是我秋招两次去别人公司现场面试的其中一次,面试从下午开始,共四轮面试,中间没停,一直持续到了晚上。想要吐槽的是,去上海面试竟然不报销来回路费。

一面面试官是个年轻小哥,也是Android开发组的组员,一面持续了大概一个小时。最开始也是让我介绍我做的项目,然后他对我做的科研项目流式二维码文件传输系统很感兴趣,问的很多,我也从头到尾跟他解释了系统的整个运转流程;然后他对我做的科研贡献也很感兴趣,因为短时间解释起来有难度,所以就借助笔和纸跟他用尽量简单的语言解释了。再之后就是问了我一些计算机基础的问题,对我来说没什么难度。然后就问一些Android相关的问题,比如Fragment的使用、Activity和Activity之间如何传输数据等;最后问到Service中启动Activity的原理时答的不太好,不过也算跌跌撞撞答出来了。最后考了一道算法题,也是一道经典的算法题——全排列,这题正好是我前一天刚看了的,所以一口气就写出来了,面试官对我能这么流畅写出来表示震惊。然后扩展问我如果原数组含有重复元素怎么办,我说先把原数组排序一下,然后算法稍微改一下就好了,并且写了出来。继续扩展问我如何得到字典序的全排列结果,我说把结果排个序就好了,面试官不满意,希望我能从算法原理上有序,这就纠结了好久都没想出来。然后面试官问我我写的算法的时间复杂度,这个我倒没有提前准备,于是就当场分析了一番,算出来了一个时间复杂度,我问面试官我算的时间复杂度对不对,面试官说应该不对。然后面试官看我简历里有写机器学习,就问我是怎么学机器学习的,我答主要是因为学校研究生必修课有《数据挖掘》,其实就是机器学习。最后我问了面试官他自己对Android开发中Native和Hybird的看法,面试官跟我讲作为一个Android开发者当然是反感Hybird的,但Hybird的优点不容忽视;还跟我详细介绍了美团点评内部融合Native和Hybird的框架。随后面试官就跟我说让我等二面面试官几分钟。

二面面试官是年轻有活力的大帅哥,是Android开发组的组长,二面持续了大概一个小时。二面面试官上来就说既然我已经有了腾讯的实习经历,而且一面面试官也问了很多问题,就不问我基础的问题了,然后也真的没问计算机基础之类的问题。最开始也是让我介绍项目,围绕着项目也聊了一些。然后让我介绍了一下Android中NDK开发的过程,我详细介绍了该怎么写代码、运行原理、以及在我的项目中的应用。然后就问了我项目开发过程中遇到的问题和解决方法,这个早有准备,说了很多。其他的印象不太深了,但整体下来聊的挺投机的。最后面试官给我接了杯水,让我等下三面面试官。

三面面试官是部门总监,貌似也是某本Android开发相关的书的译作者,三面持续了大概一个小时。三面主要问的问题就明显跟一面二面不一样了。最开始也是介绍项目,但没有深究。然后问我为什么想要到他们部门,我说美团点评平台有用户粘性,国内这几年出境游处在爆发期,美团有很大的潜力之类的。然后问我开发海外版有什么需要注意的,我就从语言、习俗、支付等方面谈了谈我的看法。然后问我怎么做多语言APP,我说Android Studio提供有相关的工具,将resource id表示的字符串自动翻译为国际语言。然后问我用户在使用APP时,多语言该如何切换,我说有两种方法,一个是根据Android系统当前语言类别匹配APP语言,另一个是APP监测GPS信息,根据用户所在国家提示切换APP语言。然后问我海外版该如何优化用户体验,我就主要从非技术层面在讲,比如需要有本土开发团队、需要有本土地推团队、需要和相关的支付公司合作之类的,面试官表示赞同。最后面试官问了我对工作城市的看法,以及还会面试哪些公司之类的。最后面试官就让我坐着再等等,他去找HR。

四面也就是HR面了,这个HR没有腾讯那么有套路,问的问题都很典型,也很容易回答,这里就不细说了。四面面试完已经晚上八点多了,于是就马上奔赴地铁站,赶去火车站坐火车回南京了。

美团点评算是速战速决了,HR当场就跟我说offer应该没问题了。但收到offer也是很久之后了,似乎是因为美团点评的offer是统一审核发放的。给我的offer是A挡而不是S挡让我很不能接受,我跟之前的组长反馈我的不满,他说他没有能力介入定挡定薪,让我跟HR继续沟通。然而HR明确跟我说挡位不能调,薪资也没有谈的空间,于是我就很生气拒绝了offer。

滴滴

滴滴本来没打算投,但想着闲着也是闲着就也投了。滴滴最开始走的内推,投的杭州的Android开发。

内推有统一的笔试,用的牛客网平台。笔试题目记的不太清楚了,但答的感觉挺好的,然后笔试之后就再也没有消息了。听说杭州Android开发,甚至是杭州的岗位就没多少人接到面试通知。

再后来自动投了滴滴的正式批次,和内推一样有统一的笔试,笔试题目也和内推差不多,然而笔试之后也是再也没有消息了。也是听说杭州没几个人接到面试通知。

微软

之前导师跟我说他认识一朋友在微软可以帮我内推,我说能够内推苏州就好,上海或北京不考虑。后来导师询问了之后发现那朋友所在部门在上海,而且在苏州并没有分部,遂作罢。

所以微软直接走的正式批,投的STCA苏州的software engineer。然后等到了统一的笔试,想着不能重蹈覆辙了。

微软这次的笔试平台换成了amcat,而且笔试全程不允许切换窗口、鼠标不能离开窗口,这对我们来说难度突然增大了,因为微软笔试就是几个算法题,不能跳出窗口、全程手撸代码就太恐怖了。

出乎所有人意料的就是微软今年的算法题突然简单了许多,可以说手撸代码完全没问题。一共五题,好几题就是简单几行代码就能写出来了,最难的一个就是换硬币了,其实就是非常明显的动态规划。所以笔试毫无压力,只有两三个测试用例没有通过,坐等面试通知了。

等了好几天后收到了微软苏州现场面试的通知,值得一提的是,同实验室好几个笔试做的不错的同学没有收到面试通知,所以微软恐怕不是单纯根据笔试成绩来发面试通知的。

之后就是去苏州微软现场面试了,签到的时候就看到签到表上密密麻麻全是南大和浙大的学生。面试一共四轮,在一个会议室坐着,面试官带出去面试的模式。微软的面试模式出了名是啥都不问直接白班写代码,这次也不例外。

一面大概持续了半个多小时。面试官最开始就让我介绍我最闪光/特质的地方,上来就把我弄懵了,因为只准备过自我介绍。跟面试官说等我想两分钟后,我就开始说了,切入点就是我学习能力强,而且学的好;我主动说我本科是学的武器,花了接近两年的课余时间准备考研考上了南大,准备考研期间自学了计算机四大专业课和附属课程,在研究生阶段也学的很好之类的;面试官表示满意。然后就问算法题了,问的是一道经典算法题,两个字符串大数相加,这道题是LeetCode原题,所以很快就写出来了。然后面试官扩展问如果是小数该怎么修改算法,我说把数的整数部分和小数部分分开处理,照之前的算法分别相加并处理完小数向整数进位问题后再拼起来,面试官表示赞同。然后问我对于小数还有没有别的方法,我说还可以直接把小数当整数对待,相加完成之后算出小数点的位置,再插入到字符串中就好了,面试官让我写出来,我就很快在纸上写出来了。紧接着面试官让我想想可以设计哪些测试用例来检查算法正确性,我写了几个测试用例。再然后面试官问了我一个概率题,掷一个骰子n次,每次掷完骰子后,可以选择立即停止、以当前骰子的值作为结果,或忽略当前骰子的值,继续掷骰子,问用什么策略可以得到最大的数。这题我就犯难了,因为之前想过类似的问题还把自己绕进去了,这次也马上就把自己绕进去了而且越想越迷糊,最后干脆说每次掷的超过3就立即停止,不超过就继续掷;面试官马上就举例子说假设一共可以掷9次,掷第1次的时候就掷到了4,那应该立即停止吗?我答不上来。面试官提示了我两三次后说应该考虑后面还会掷多少次,我就明白不应该看前面掷的情况,应该根据后面还有多少次没有掷来计算后面掷骰子会超过当前值的概率,概率大于50%就应该继续掷,随后写出了计算概率的公式。面试官对我的这个答案表示赞同,随后他补充说还可以用动态规划的思想来看。最后面试官跟我说我太紧张了,需要放松。

二面差不多也是半个多小时。面试官最开始让我介绍了我做的项目,对我的科研项目很感兴趣,多问了一些,但没有深入。随后开始做算法题,主题是二叉搜索树,问了我搜索的时间复杂度,让我在纸上举例各种情况下(最好、平均、最坏)的时间复杂度,然后让我分析如何在二叉搜索树中寻找仅小于指定结点的结点(就是中序遍历的前驱结点),于是就跟面试官讨论了不同树的形状下如何寻找前驱结点,然后面试官让我写出这个算法。我想了想其实中序遍历就能搞定,于是默不作声写了个非递归逆中序遍历,然后给面试官看,并解释了原理;然而这并不是面试官想要的结果,面试官希望我通过结点父子关系来寻找前驱结点,而非遍历的方式。我想了一下,然后跟面试官说,这样每个节点就必须有一个parent指针指向其父结点,面试官说可以有parent指针。然后我就顺着之前讨论的各种情况一一写出了寻找前驱结点的方法。面试官看了我写的代码表示赞同,但跟我说其实我的代码还可以精简,其实就是两种情况不断向上遍历判断。然后面试官让我设计测试用例,来检查我写的算法的正确性,我很快写了几个。然后让我再之后面试官简单问了我如斐波拉起数列的问题,就愉快结束面试了。

三面也差不多半个小时。三面面试官也是先让我介绍项目,我介绍了我的科研项目,他问了一些性能参数后,问我有没有考虑到手机耗电问题,我说没有,主要因为这个领域都不做这个,他就谈了谈他对耗电的看法,我表示赞同。然后面试官问我前两轮面试有没有问英语,我答没有,面试官就说从现在开始我们用英文交流,所以接下来全程英语了。然后就是做算法题了,不同于前两轮面试是在纸上写,这次直接在墙上的白板写了。问的是LeetCode上的原题——判断镜像二叉树(LeetCode 101),这题我早有准备。首先画了个镜像二叉树跟面试官确认了我没有理解错题意,然后就很顺畅地开始写了,一口气写完之后就让面试官来检查了。面试官首先问为什么我的传入参数是用ab表示两个树的,我答为了简单起见,然后面试官说可不可以用leftright来表示两个树(递归结构,这里指左子树和右子树),我答不可以,因为第一个参数不一定一直是left、第二个参数也不一定一直是right,如果用leftright反而会让人误解,面试官表示赞同。然后面试官让我设计测试用例,我写出了七八种测试用例,面试官看了后说其实我漏掉了最重要的一种测试用例,我想不通,于是问面试官是哪种,面试官说我写的测试用例都是来检查算法不正确的情况,而测试用例最先应该检查的是算法正确的情况,即正常的测试用例,我说这确实是我没想到。然后三面也结束了。

四面就是部门大佬了,一共持续了大概四十分钟。最开始还是让我介绍我的科研项目,他表示很感兴趣,还让我介绍一些系统中的一些细节,于是我就在墙上白板上用整个板面画了我设计的系统的整个流程和一些细节,中间穿插着面试官的问题。然后就进入正题开始做算法题,也是LeetCode上的原题——通配符匹配(LeetCode 44),看到面试官出这题我惊出一身冷汗,因为前一天复习的时候就见过这题,然而没有做出来,而且因为这是一道Hard难度的题,我觉得面试不会问,也就没有去找答案做出来,然而就这么遇到这题了。于是我就主动跟面试官说这题我前一天晚上还见过,但我没有做出来,这题的最优解法应该是动态规划,但我不会;面试官回答说现在是不是很后悔当时没有看这题,没关系现在再好好想想,争取做出来。然后我就在白板前站着想了好几分钟,万幸的是总算想出来了,用递归来做,然后慢吞吞写出了代码。然后给面试官看,还逐行解释了算法工作过程,面试官说挺好的,这不是做出来了么。然后就是写测试用例了,吸取了三面的教训,这次测试用例很快就写出来了。这样就结束了四面。

四面结束后回到会议室,问HR什么时候能出面试结果,HR说等差不多十分钟就有结果了。于是坐在那等,然后有HR叫我,出去跟我说我的面试情况挺好的,现在在hirable list中,大概等两周就可能有是否发offer的决定。然后我就愉快回学校了。

但是等微软offer的日子是漫长的,在HR连续跳票两次后总算接到了offer电话。惊喜的是我拿到了微软的sp,并且今年苏州微软的薪资待遇较往年也有较大提升。

今日头条

投头条主要是因为听说头条的笔试面试难度都高,想试试。最开始也没打算去头条,所以直接投的北京Android开发。

头条走的内推,但还是参加了统一的笔试(有概率免笔试),笔试印象不太深了,只记得有两个算法题,而且难度都挺大,是那种很容易做对30%但很难做对100%的算法题,不过凭借着我刷题的功底(以及当时的灵机一动),还是把两题全都做出来了。

然后就收到了头条视频面试的通知。值得注意的是,头条的笔试刷人比例很大,我周围基本没有人进头条的面试。面试一共三轮,每轮面试完后几分钟都会接到HR的电话通知面试是否通过。

一面大概持续了一个小时。问的问题印象不太深了,主要问的都是计算机基础、Java基础和Android基础的问题,但问的深度较深。比如问到Java并发的时候,就让我用代码来演示线程之间的同步;还深入到了wait()notify()的工作原理(锁池,唤醒的native实现),以及notify()notifyAll()的区别、notify()可能造成死锁的问题。印象中没有要做算法题(如果有也应该是LeetCode Easy难度的)。一面完面试官就直接让我等二面了。

二面大概持续了一个小时。二面记的也不太清楚了,挑几个我记得的说。最开始是问到了一些Java基础,比如intInteger的区别之类的。然后还用实例让我分析Java面向对象编程的一些细节,比如内部类的性质、什么时候用内部类、内部类和静态内部类的关系。还问到了一些进制的问题,比如数的二进制表示、与十六进制的关系、移位运算。问完这些就开始看着我的简历问,问到了我Python学的怎么样(项目中用到一些Python)、怎么学习Python的、主要拿来干什么之类的问题。然后面试官让我解释一下YUV颜色空间,这个让我心里一惊,因为这个第一个问我YUV颜色空间(整个秋招只有两个面试官问到YUV颜色空间,另一个是网易游戏),而且看样子面试官是了解YUV颜色空间的,要知道只有专门做图像视频的才会了解到这些;然后我就详细介绍了YUV颜色空间,以及对应的如I420和NV21格式。随后面试官又问我懂不懂Android上的codec(因为我简历上写了Android的MediaCodec),我说我用过MediaCodec,面试官又问主要用来干什么,我说拿来做视频硬解码。然后面试官针对MediaCodec的使用、注意事项等问了我十多个问题,我都一一很快作了回答。到这里我基本就反客为主了,因为用MediaCodec的人很少,而我因为科研的关系专门钻研过MediaCodec,还实现了第一个通用的视频解码方法,可以说对MediaCodec了解的很深了;而面试官可能就是刚刚入门,正在学习MediaCodec,所以我的回答就是游刃有余了。面试官问完这些问题后很兴奋,看我全都答上来了就觉得我的面试应该算通过了,但他看了看时间发现才四十多分钟,于是就说再出个算法题我做,就是一道经典的算法题——两个字符串大数相加,早有准备,所以一口气就写出来了。最后结束的时候面试官跟我说非常希望我能去头条实习。最后我问面试官为什么他会了解MediaCodec这么冷门的东西,面试官说他目前正在参与西瓜视频APP的研发,接触到视频处理,所以就了解到MediaCodec了。

然后就是三面了,三面也大概持续了一个小时,因为网络的原因,是电话面试的。三面的画风和前两面不一样,没有问太多技术方面的问题。最开始还是让我介绍项目,介绍完了就问我项目中遇到的问题和解决方法,这个我回答的很细,面试官也问的很细;因为这个之前准备过,所以答的也不错,光这个问题就花了大概半小时。面试官之后问我说似乎解决这个问题并没有用到太多技术,我回答说是的,但最困难的应该是寻找原因、作出尝试、再寻找原因、再作出尝试的过程。然后就是问我我的项目代码进行过怎样的优化、现在还存在哪些问题,我说以前代码结构太差,牵一发而动全身,后来学习了设计模式,代码结构就清晰了很多,面试官又仔细问了我用到了哪些设计模式,是怎么改造代码的;然后问存在的问题,我答还缺乏一个通用的框架来支撑各种不同的二维码,然后面试官问了我继续改造的思路。最后面试官跟我说虽然前面两轮面试问了很多基础,但他还是要考考我,问我Java里有哪些Map。这题倒是把我难住了,因为我只是看过Map的各种继承的图,还没专门背下来过,于是我就只说出了HashMap、LinkedHashMap和TreeMap(实际还有ConcurrentHashMap等),然后跟面试官介绍了典型的使用场景。这样就结束了三面。

三面结束后过了十几分钟就接到HR电话说面试通过,接下来几天会有HR的电话面试。然后等到HR电话面试,实际就是聊聊天,HR了解一下我拿到offer的情况、对城市的选择、能否实习等,然后问我对部门有没有喜好(今日头条、西瓜视频、抖音、火山小视频等),因为我也不在意,就说没喜好、都可以。剩下的就不仔细说了。

再后来就是接到了HR沟通薪资的电话,HR说我分到了主端(即今日头条),然后给我的是sp,后来发现是sp里的最高挡。

腾讯

因为我是实习转正,所以严格来说我并没有参加腾讯秋招。腾讯在九月初出实习生考核结果,有一批人被淘汰了,可能因为我是组里唯一一个实习生(也可能是我太牛),就拿到了转正的机会,然而只给了白菜价。后来手上拿到了网易游戏和头条的offer,发现腾讯薪资太低,于是向HR申请调薪,然而HR一直说在走流程;直到拿到微软offer,告知腾讯HR后很快得到了反馈,我的offer调整成了sp,不过这个sp的薪资与另外三家仍有差距,缺乏诚意,在综合其他情况考虑之后最终拒了腾讯的offer。不过,无论如何,我还是感谢腾讯让我的最后一个暑假过的异常精彩。

实习生招聘和秋招见闻

阿里实习生招聘/秋招开始的早

学校下学期开学时间是2017年2月20日,而阿里的实习生招聘内推开始时间是3月1日,也就是说开学一周后阿里就开始内推了,相信很多同学还没从寒假里缓过来吧。阿里的秋招内推开始时间是7月4日,也就是很多学校才放暑假或还没开始放暑假就开始内推了,相信还有很多同学是打算暑假复习两个月再战秋招的吧。而且阿里内推成功即开始面试,同样也没有缓冲的时间哟~

阿里实习生招聘/秋招并不在意素质测评和编程测验

按照阿里校招官网的流程图,内推成功后会收到素质测评和编程测验的邮件通知,要求三天内完成。但是可千万别理解为没完成就不会走到面试流程了,好多小伙伴拖着编程测验不做,准备腾出三天时间抱佛脚的,结果当天或者第二天就接到电话面试了。

阿里实习生招聘/秋招主要在内推,正式批次相当于补招

阿里的绝大多数部门的招聘都放在了内推,等到内推时间截止的时候绝大多数部门都已经招满人了。正式批次笔试后,能够收到面试通知的同学很少,而且面试的部门也主要集中在高德、虾米、钉钉、优酷等部门,而非集团、菜鸟和蚂蚁。

阿里实习生招聘/秋招名额先到先得

一般来说,越早内推,越早面试,面试通过的概率相对来说更大。在内推要截止的时候再内推多半因为部门招满人了没人鸟了。

美团点评实习生招聘/秋招尽量走内推

美团点评走内推的免笔试直接面试的概率比较大,而走正式批的笔试后收到面试通知的概率较小。

美团点评网申填写感兴趣部门时不要选都喜欢

美团校园招聘官网说“如果选择了某一个感兴趣事业群,那么你的简历将优先分配给该事业群。若无明显事业群偏好,可以选择“都喜欢”。”,但实际上若选择“都喜欢”,则简历不会推荐给任何事业群,只会等待事业群有空来挑,若没有事业群挑,则没有面试。所以不是万不得已,千万不要选“都喜欢”。

美团点评秋招坑了内推的学生

美团点评的评级分为B/A/S,其中B和A级的薪资确定不能更改,S级薪资可谈。走美团点评内推拿到offer的普遍拿的是B和A,很少有S,且不能调评级;而走正式批次的拿到S的概率大得多。传闻是因为内推开始的早,在发放内推offer后(众多B和A)很多学生不满薪资待遇且不能调整薪资,遂纷纷拒offer,后期为弥补生源,在正式批次发放S评级offer的数目就多了许多(不知真伪)。

网易游戏注意区分互娱和雷火&盘古

网易游戏分为“互动娱乐事业群”和“雷火&盘古事业群”,两者的招聘是独立且互斥的。且两者的招聘岗位和要求也不相同(详见网易游戏招聘官网),如互娱的核心岗位为“游戏研发工程师”,要求985/211高校;雷火&盘古的核心岗位为“研发工程师”,要求本科高校。互娱相对雷火&盘古来说体量更大。雷火&盘古的招聘开始时间较互娱要早。

注意区分网易游戏和网易

从公司组织架构上来说,网易游戏和网易是平级的,网易游戏并不是网易的下属子公司(注意区分网易和上市公司NetEase)。两者的整个招聘过程都是相对独立的。

网易游戏笔试&面试难度较网易高出不少

网易游戏(互娱)的笔试难度比肩实习生招聘/秋招最高难度,而网易的笔试难度较低。网易游戏(互娱)的面试考察面之广之深也是网易不能比拟的。

网易游戏(互娱)发offer前需要转发导师同意实习的邮件给HR

亲身经历。在收到面试通过的邮件时,HR同时会要求将导师同意实习、和与导师沟通实习时间的邮件转发到HR,然后才会收到正式的offer邮件。

网易游戏(互娱)的招聘岗位较极端

就我的秋招经历,南京地区的面试基本可以分为研发和测试两类(别看招聘网站岗位繁多),且测试岗位面试人数较研发多得多,且研发面试不通过的概率大。在后续补招中,测试岗也有大量名额。

网易游戏秋招情况不理想

往年网易游戏靠30w+的薪资一骑绝尘,从清北招走大量生源。但今年由于各大互联网公司薪资大幅上涨,sp涨幅更大且sp名额更多,而网易游戏薪资并没有怎么变化,导致众多优质生源流入其他公司,网易游戏开启了较大规模的补招。

腾讯笔试题倾向考察C/C++

无论投的是哪个岗位,腾讯的笔试题都会重点考察C/C++的知识,即使所投岗位不要求C/C++基础。

不要被腾讯笔试题吓到

虽然腾讯笔试题考察C/C++很变态,但即使是编程题一个字都没写,也都有很大概率收到腾讯的面试通知。

腾讯网申时“服从工作地点调剂”则很大可能分到深圳

腾讯虽然在北京、上海和成都等都有分公司,但岗位都比较少,而每年招聘的绝大部分岗位都在深圳,所以选择“服从工作地点调剂”的,很大可能分到深圳去。比如,南京离上海近,离深圳十万八千里,但也是有相当大概率分到深圳的。

不要对实习转正后调换工作地点抱太大期望

实习转正后对应转正的岗位也是当前实习的岗位,即在当前组内,所以不太可能可以调换工作地点。如果坚持想要调换工作地点,可能需要按秋招流程重新来一遍。(腾讯是这么干的,但国内互联网公司大同小异)

不要认为实习一定能转正

诸如阿里、腾讯和百度等公司的实习留用率肯定不是100%,所以不要怀着实习一定能拿到秋招offer的心态去实习。

华为招聘分区域

华为的招聘是分区域相对独立自主招聘的,如上合区指上海和安徽、江山区指江苏和山东、武长区指湖北和湖南。通常每个区由一个分公司负责招聘,如江山区由华为南研所负责招聘。招聘后期会开放区域间的调剂。

注意华为FX招聘

华为FX招聘实际是秋招,但其笔试面试时间与实习生招聘基本重合,所以不要误认为FX招聘是招的实习生。

不要对华为FX/优招offer发放时间抱期望

今年华为的FX面试在暑假前就结束了,而华为优招暑假中就面试完成,但offer最早也都等到了九月底才发出来。

华为需要去签约现场才会知道薪资待遇

不像其他公司会发带有薪资的offer邮件,华为只会通知现场签约时间和地点,在现场才会知道薪资待遇,满意则马上签,不满意则走人。

华为秋招今年遭遇滑铁卢

从来不缺生源的华为今年一直持续到12月份都在补招,之前被华为拒的、拒了华为的都会接到华为HR的电话,一旦有意去华为,就可以继续详谈;而华为也一改往常三方发下来第一天就逼签的态度,不再强制要求立即签三方,有些地区甚至可以先签两方。其主要原因是华为往年依靠诱人的薪资在各大高校都有学生抢着签华为,而今年随着以BAT为首的公司薪资大幅上涨,sp薪资轻松破30w,而华为薪资较去年持平,导致学生纷纷签其他公司,华为生源紧缩。

华为毁约返还三方时间在来年三月份

这算是许多公司的惯用伎俩了,一旦交出三方,那么想要拿回三方就至少需要等到春节过后。

微软笔试平台/难度不确定

微软实习生招聘的笔试算是目前最后一次使用hihoCoder平台了,秋招使用的平台就换成了amcat。而且微软一改在hihoCoder上题目由简到难的风格,秋招amcat上的题目难度相当小。

微软笔试&面试&offer时间一如既往地迟

微软的实习生招聘和秋招的笔试、面试和发放offer的时间相比国内互联网公司都迟了许多。甚至,秋招时许多学校已经发放三方各大公司开始逼签时,微软才开始面试。

微软薪资待遇较往年有较大提高

虽然base的涨幅并不大,但微软给的股票多了不少,所以package算起来高了不少。

百度岗位主要集中在北京

百度每年各分公司、各岗位的招聘人数都是提前公布在招聘网站上的,不妨仔细研究一下数据。比如,上海除研发岗外,其他岗位招聘人数很少能超过10人。

不要小看头条笔试&面试难度

头条笔试刷人很恐怖,笔试做的一般般一般进不了面试。头条三轮面试任一面试官认为不满意则面试不通过,而面试官倾向考察代码能力,关键题目代码未当场写出则很有可能面试不通过。

头条薪资傲视群雄

头条秋招白菜价就可以秒杀众多公司sp,而头条sp则一骑绝尘,甩开其他公司sp几个段位。且拿到头条offer去实习可以拿80%薪资(比正式入职到手工资还高)。头条薪资涨幅也值得期待,且能够换公司期权。

我的实习生招聘和秋招准备

我的实习生招聘第一战就是阿里,也是匆忙上阵,当然败的也是很惨:一问三不知。不过也是阿里的失利打醒了我,让我静下心来研究实习生招聘。

首先是关于面试岗位的问题。虽然面试问到的问题五花八门,但很多问题都和面试的岗位关联性很大,比如应聘Android开发不会被问到Spring,应聘Java后台开发不会被问到Android。所以为了减少自己的工作量(也没那么多精力去同时准备不同岗位),就要先确定好自己要投的岗位。然后就搜了不同岗位的面试经历帖子,看了看自己能答多少,发现自己对哪个岗位都不擅长,因为有一些Android开发基础,倒是会一点点Android开发相关的问题。接下来想了想虽然Android开发校招招的人少,但可能和我竞争的人更少,因为绝大部分同学都没接触过Android开发,所以就决定选择Android开发作为我以后要投的岗位了。

接下来是关于面试题目的问题。面试问的问题大概就是计算机基础、Java语言基础、Android开发和算法题了,下面展开来说,各个击破。

先说计算机基础题。计算机基础题是所有面试经历帖里面可以公用的,很快我就总结出来了规律:作为经历过考研的我,一眼就看出来计算机基础题基本都是考研知识点的题。比如,数据结构的二叉树、图、查找、排序章节就覆盖了众多数据结构相关的面试题,而计算机网络的存储器尤其是cache章节、虚拟存储器的段表和页表就完整覆盖了面试问到的cache相关的题,操作系统的进程管理算是面试经常问到的问题,而计算机网络相关的面试题肯定跑步出计算机网络教材。所以我就直接来了个自上而下的复习:买了本计算机专业课考研全书,从后到尾按顺序梳理可能的知识点然后整理出来。

再说Java语言基础。因为Java存在数量巨大的程序员,所以很容易就能找到Java语言的面试题大全。但想要看完并记下这所有的面试题是个挑战,所以需要删掉一些一定不会被问到的面试题。Android开发除Java语言基础外并不会涉及到太多其他的Java套件,比如Java网络开发就肯定不会问到,这时就可以放心大胆把JDBC、JSP、Spring等砍掉,减少了许多工作。

然后是Android相关的面试题。最开始看Android相关的面试经历帖一头雾水,觉得问的知识点太多了完全答不上来,但综合了十多个面试经历帖后发现问的很多问题都是重合的,比如经常问Activity的生命周期、Service的生命周期、Activity之间的通信、消息传递机制等。所以也采用类似复习Java语言的方法,收集各种各样的Android开发面试题。

最后还要说说一些其他的面试题,比较典型的是数据库和设计模式,因为Android开发问到数据库和设计模式的概率比较小,我也就只整理了一些简单的面试题,足够应付面试了。

以上这计算机基础、Java语言基础和Android开发面试题等的收集和整理工作就贯穿了我从实习招聘开始到秋招结束的始终,经常有新的题目被我收集到,也经常有老的题目被我整理得更加系统。为了更加方便和完整地收集和整理,我把整个收集整理过程都用Git来作了版本控制,并且分享在了GitHub上。

下面说说算法题。算法题可能并不是每轮面试都会出现,但一旦出现可能就是生死攸关的——做出来了面试通过,做不出来面试不通过。那么算法题该怎么准备呢?当然就是刷题啦,这里我选的就是知名刷题网站LeetCode了,而刷题顺序的话就是按通过率由高到低排序了一个个刷。并且,我一开始就制定规则:每题都要使用Python、Java和C++三种语言做出来,因为Python适合在纸上手写、Java在在线写代码时常用、C++则是以备不时之需。刷题是一个很消耗时间的事情,但另一方面,刷题又是一个很好的利用碎片时间的方法——做出来一题可能只需要花十几分钟。另外,LeetCode里Easy、Medium和Hard的最后面几题总是会非常难,这时候就可以自己权衡还有没有刷这些题的必要啦,反正我是选择性放弃了。刷题也贯穿了我实习招聘开始到秋招结束的始终,而刷题的主战场集中在三月初到六月底,这段时间几乎是有空就刷题,490+刷了400题左右;而接下来的七月初一直持续到秋招结束则主要在复习和整理刷过的题,在我的GitHub上也有记录。

我对实习生招聘和秋招的建议

这里采用一问一答的方式。

我该不该找内推

内推在绝大多数情况下都是好过走正式批的,其一内推可能免笔试,避免了笔试不通过的概率;其二内推一般面试更早,更早也就意味着机会更多;其三内推能够获得更多面试反馈,内推人可以查询到面试的状态、招聘流程走到了哪一步等。

我该从哪里寻找内推机会

我认为最先寻找的是自己的师兄师姐,因为他们不仅能提供内推机会,还会告诉你公司部门结构、主要业务等,能够更加全面选择投递部门,不仅如此,面试流程中还能经常向他们询问面试情况等。其次可以找朋友圈或者校友帮忙内推,同样他们也能及时反馈面试情况等。最后就去满大街找内推广告了(比如牛客网讨论区),按我的经历,这些内推很难后续联系上内推人。

我该什么时候网申

注意这里网申即包括内推网申也包括正式批网申。网申当然是越早越好了,我就吃过网申太迟的亏。一者,有些内推可以免笔试,而网申早一般获得免笔试的几率要大一些;二者,有些内推/正式批不需要笔试(如阿里内推),而越早网申就会越先面试,要知道招聘是一个萝卜一个坑,面试越早拿到名额的概率也相对越大;三者,如果有统一笔试的话,网申早也不亏,反正还是得等到统一笔试。

简历该如何写

计算机/互联网的简历可能不像其他行业的简历。就我来说,简历里写简单的个人信息(姓名、出生年月、专业、学历、毕业学校、邮箱、手机号等)、个人博客网址(如果有)、GitHub链接(如果拿的出手)、熟悉的编程语言和熟悉程度、项目/科研经历(详细写)、实习经历、发表论文情况、获奖情况、英语能力就好了,而不必写如是否党员(要投如华为之类的公司还是尽量写)、班干部/社团经历(要投如华为之类的公司还是尽量写)、兴趣爱好、主修课程、非计算机/互联网相关的实践/项目活动、非奖学金/计算机/互联网相关的获奖情况等。以上个人观点,但我的简历按这写从来没遇到问题。

项目经历重要吗

项目经历是极其重要的!很多面试都是以“来讲讲你的项目经历”开始的,根据我的经历,许多面试光讲项目经历就会占到面试时间的一半。项目经历不仅会让面试官觉得你更靠谱,而且更重要的是从项目经历中面试官能够挖掘出共同的话题,让面试“有的聊”。所以项目经历不仅重要,而且还应当花大力气去为面试梳理和抽象,主动制造话题。

什么样的项目才拿得出来

简单来说,你的项目经历多的话拿出最好的两三个,项目经历少的话拿出两个也好。怎么定义“好”呢?一是要有趣,讲出来能够吸引面试官的兴趣;二是要有一定难度,至少能够回答出“你的项目有什么难点”;三是要和面试岗位相关,面试官也是有自己的擅长领域的,你要是讲一个面试官完全不了解的领域的项目,多半是雾里看花,面试官早早就没有兴趣了。

没有项目经历该怎么办

如果你真的在简历上不写项目经历,面试官问有没有项目经历时回答没有,那么你就非常危险了。我见过好几个同学谈面试经历,说当面试官问到有没有项目经历,他回答没有之后,面试官的态度就突然变了,然后就草草结束了面试。而且当真的没有项目经历的时候也别慌,不妨把你对“项目”的标准放低,知乎上不是也有大牛说把课程设计做的贪吃蛇当项目讲都没问题吗?要注意项目low不low是面试官的评价,而并非你自己的问题;但你主动说没有项目,面试官想帮也帮不上忙了。最后,如果你发现自己还没有项目经历,而面试又在一两个月后,那为何不现在就开始想个项目动手做呢?

需要在简历中放上GitHub链接吗

简历里放GitHub链接是一种很Professional的做法,好比是在向面试官说“我既有项目,代码也随时给你看,而且写的还工整”,是一个绝对的加分项。但在你放上GitHub链接前,需要先自己看看“够不够格”放上链接。首先,你的GitHub上“绿块”的数目要足够多,“绿块”代表了过去一年中每天提交代码的次数,也就是说你可能需要有一年的积累才够格把GitHub链接贴上,你想想面试官打开你的GitHub发现你的代码提交全都集中在最近一个月是怎样的心情?其次,你的GitHub上需要有项目,可别是每次提交的都是乱七八糟的东西充数的;再次,GitHub主页应该仔细包装,比如设置头像、organization等。

发表论文重要吗

像计算机专业的发表的论文都是A/B/C类会议,如果你有发表的论文当然要贴在简历里了,面试官可能问到,也可能不问到,但重要的是,公司在评sp的时候论文是一个很重要的参考!有顶会一作的论文只要面试通过,基本是大sp随便拿。所以不要想着发论文是给老板搬砖,也是在给自己赚钱呢。

需要实习吗

简单地说,需要。不过实习需要权衡很多,首先,实习岗位一般就是秋招投递岗位,不要一开始计划实习一个岗位,秋招再投递另一个岗位,只有觉得实习后岗位不如自己预期再换;其二,实习需要和导师沟通清楚,众多研究生导师原则上是不同意实习的,为实习跟导师闹翻得不偿失;其三,不要计划一边实习一边准备秋招,实习时可能有各种各样的工作,很难静下心来准备秋招,而秋招一般在实习期间,或实习刚结束就开始;其四,实习意味着少了两个月的秋招黄金准备时间,实习一般在暑假,而暑假两个月在学校专心准备秋招可能会有很大提升。

另外还要注意实习的公司,如FLAG之类的国际大厂、BAT之类的国内第一梯队大厂就放心去,TMD之类的第二梯队就要想想值得值得去(是不是搬砖),而其他的公司就需要慎重考虑了(个人意见),需要权衡实习收益和秋招的代价。

我的实习生招聘和秋招感想

如何选择网易游戏和腾讯的实习offer

待续。