2015年暑假实习生面试经历(谷歌,微软,阿里,腾讯,百度,小米)

2015年大三下学期开学开始陆续投了不少公司的暑假实习,这篇博客记录下笔试面试的经历。
2015年5月11日最终更新

综述

一共投了7家公司,分别是谷歌,微软,网易游戏,小米以及BAT。
简历写的并不是很专业,好在大部分还没有在简历关就跪的,除了网易游戏的研发因为投的岗建议是研究生学历,看来网易游戏学历关卡的很紧。
下面按照时间顺序介绍下每个公司的面试经历,着重介绍下阿里的面试过程。

阿里

投阿里是在三月初的时候拿了在杭州阿里的某学长部门的内推,投的是C/C++研发,实际上也就是做后台系统相关的,因此面试和系统相关的问题很多。
阿里的内推和正常校招暑假实习生走的是两个流程,因此即使内推这边面试跪了,依然可以走笔试再面试的正常校招实习生流程。

阿里零面

在三月中下旬接到了阿里的第一个电话,是在杭州的大数据相关部门的。
面试我的工程师非常和善,先聊了一会我本科的一些项目经历和学的东西,然后他介绍了下他们部门做的一些东西,SparkHadoop这些我都略有耳闻但并没有相关经验,感觉这个部门做的这些比较适合研究生阶段搞过大数据相关的人,面试我的工程师也发现了我似乎没有相关经验。好在之前聊的项目经历比较丰富,他对我印象还好因此把我推荐到搞数据系统后台的部门了,没有直接把我挂掉。

阿里一面

过了几天,我再接到了新的部门的第一个面试电话,这应该才算正式的一面。
根据声音面试我的工程师应该是比较年轻而且比较沉稳的类型。一面的时间十分长,面了有一个小时。一开始也是谈谈项目经历,然后他开始问了C++语言相关的问题,例如static的几种用法,多态等;也问了数据结构相关的问题,包括List,Vector之类的一些题目;还问了道在某个场景如何优化快排的算法题;因为是数据后台部门的,系统和网络的题目也没少,例如多线程同步的问题,加锁,信号量等,还有TCP/IP协议。
总之这一个小时下来不少于10道题目,我大概除了网络的题目,其余的答的都是正确的或者差不多正确。

阿里二面

过了几个小时后来了二面的电话,二面的工程师比较开朗的类型,同样讨论了下项目跟学习经历。然后说到操作系统,CSAPP这本书,改Unix内核的Lab等,聊的比较愉快,问了2个系统方面的技术问题之后就结束了面试。
二面一共只用了20分钟。

阿里三面

二面结束立刻来了三面的电话,让我不得不怀疑这一个部门的人是接力面试的,三面的工程师属于比较外向浮夸的类型。
三面的问题比较奇葩,包括TCP协议栈有几层进程间通信的方法有哪几种,诸如此类的。
还有一道一时半会没想出来的算法题,1000个连续的自然数随机取出2个再打乱顺序,用O(1)的空间和O(n)的时间找出这2个被取出的数。
后来我想出来的一个方法是:

  1. 默认给的数据是在内存连续存放的,遍历第一遍找最大最小值。
  2. 根据最小值,可以得到跟数字大小跟内存的一个映射关系,然后再遍历移动对应的数字到对应的位置,被覆盖的数字同样做这个操作,最终排好序。每个元素最多移动一次时间是O(n)
  3. 再遍历找空的。

这样做有点利用了默认内存连续存放从而不额外用空间,感觉有点作弊,面试的工程师并没有回应对错或者其他正确的方法。
这里出现了阿里几次面试电话中最奇葩的问题——“请说明你的优势”,之后就是一番吹比。
三面一共用了40分钟,这一面是感觉最没把握的,好在最后结果给了通过。

阿里后续

之后有不知是否是HR的人打电话询问了能够开始实习的时间等问题,此后就是意向书跟offer邮件,并没有传说中的HR面。并且阿里面试给人感觉面试官都比较友善。

  • PS:更正一下,根据同学们的反馈得到结论,三面其实就是HR面,不然也不会问奇葩问题,只是HR可能是技术出生的所以问了点技术问题。
  • PS2:透露了这么多需要给阿里打一下广告,据我所知阿里在实习生的待遇上所得上特别好的了,并且各种报销。

巨硬(微软)

巨硬投的是预科生计划,毕竟是传统IT巨头,职位分的不是很细,于是只有Software Engineering这么一个统称。

巨硬网测

网测用的hihoCoder平台,我原来没用过。时间两个半小时,4道算法题,结果如下:

  • 第一题比较基础,10分钟AC。
  • 第二题主要是用数据结构再加索引,思路很清晰但是写的不是很熟练,各种奇怪的事情冒出,一开始没加索引大数据超时,索引又写了20分钟,一共花了1个小时才搞定。
  • 第三题图论算法要剪枝,算法水平太弱,最后只跑了小数据,拿了一半分。
  • 第四题目测是ACM选手能去搞的,也就没看了。

巨硬面试

4月27日上午去现场面,就在学校对面的紫竹。听HR说面试一共有3天,这是第一天。
当时是上午第一批,9点半开始面试,我翘了上午的两节课骑自行车就到了微软。因为是独立建的一幢大楼,因此微软感觉很大,比在市中心开瓶器61层的谷歌宽敞很多,路宽,而且工位很大,在大楼里感觉很舒服。
被分配到了Visual Studio部门。看了下名单很多是我交的电院研究生,也有浙大,复旦跑过来面试的,路费可以报销。
所有人都有两轮面试,根据前两轮的结果会告知是否有第三轮面试。我很幸运地通过了前两轮面试,在下午进行了第三轮面试。

第一轮面试是个毕业多年的校友,问了关于对程序语言的看法,Solid,设计模式之类的东西,面试官应该是带团队或者精通管理的人,所以没有问很多细节问题。我也给他看了下我的BlogGitHub,面试官感慨了下现在的学生合作开发都用这个了,我们当年之类的。一面感觉很不错的样子,半个小时就结束了。

第二轮面试的面试官问了各种各样的问题,时间比较长面了一个多小时。因为简历上有写Scala他也正好最近接触这个,问了一些关于函数式语言的问题,恰好最近在学一门关于函数式语言的课,因此相关的问题都答的不错。后来还问了一些测试用例如何设计,不同语言的机制,某个很大的系统如何设计,我之前做的编译器项目相关的一些问题,以及MapReduce,而正好前不久刚看过GoogleMapReduce论文,所以又撞上好运气了。

中午在微软吃了饭,感觉并不是很好吃,也许是因为是打包而不是自己去选菜的原因。

下午三面我本来约在3点,而我还在睡觉的时候2点突然被叫去面试。三面只问了一道算法题,个人感觉给出的2个解都不是最优解,感觉答的不是很好。就这样,微软的三轮面试就结束了。

巨硬后续

过了2个星期,接到HR电话,被发配到了技术支持部门,不是VS或者Azure的研发部门,然后回绝了,sad。

从“某种意义”上来说是拒了微软,已经升华,进入人生巅峰。

谷歌

投的Software Engineering,之前没找内推直接投的,又没有算法比赛的任何奖,简历被默拒。
后来找了大牛学长内推,才给了面试。

由于签了保密协议,并不能透露太多。面试是英文的,然后一轮游。

腾讯

投的移动客户端开发,4月18日线下笔试,笔试题目面十分广,由于开头也有个保密协议就不在博文中透露太多了,只能说笔试的测试面十分广。

本以为笔试过应该没问题,后来发现大部分我院同学都过了,但我这个考场的我院同学(大概4,5个)一个都没过,我也不知道为什么。也许岗位出问题了或者卷子弄丢了,亦或是劣质2B铅笔的受害者。

百度

投的系统工程师,4月19日网测,网测的编程题相对不难,但是选择题很多很奇怪的题目,甚至还有PHP的语法题,为什么系统工程师要做PHP的语法题,或许度娘的系统全部都是web系统吧。

4月27日收到了HR的电话,本来约了28日下午3点电话面试,因为我之前投的上海但是上海并没有系统工程师这个岗位,大部分都是前端,因此被分配到了北京的部门。
但是这段时间面试面多了,尤其是前一天面微软大半天,晚上还赶接的外包项目的DDL,整个人累的不行,而且之前已经签了阿里北京的意向书,因此也不太想面百度了。一是浪费百度的工程师的时间,二是万一面过了占用其他人名额,再是百度近年来愈发流氓有点不能忍,综上原因我拒了面试。

小米

投的Android底层,投了很久过后,4月23日收到了在线笔试的邮件和短信。

网测的平台有问题,我和另外一个同学都无法调试跑代码,而且页面不允许鼠标移出去,否则会警告作弊。因此写完了3道算法题再把后面的特定方向的选作题做了2道就交了。

题目本身不是很难,第一题是个很简单的位运算的题目,第二题是个一般难度的动态规划,第三题是个很基础的图论。考试时间一共2个小时,有经验的人做完三题可能只需要半个小时。后面四道题目是选做,前端,安卓,服务器后台,算法各一道,感觉和投的岗位没关系的题目不做应该也没关系。

值得一提的是选做题里的后台系统设计题,是关于抽奖系统的设计的。我很想写只要像小米官网抢购一样学雷军耍猴,直接返回未抽中就行了,但这样写估计就直接被拒了,所以没这么写。

小米面试

5月8日电话面试,面试的工程师晚了20分钟打我电话,一度以为被放鸽子了。

小米的面试是投的所有公司里最后一个,有一定的面试吹比经验,加之这天状态特别好,吹比吹出了人生新巅峰。

先问了问项目经验,一番吹比。然后问了几道很常规的算法题,数据结构设计题,又是一番吹比。之后工程师问想去什么部门,根据之前的了解他应该是搞MIUI上层的,然后我说是想搞LinuxAndroid虚拟机这方面,他竟然说了“牛逼”两个字,也是很欢乐,然后面试就愉快的结束了。

坚持原创技术分享,您的支持将鼓励我继续创作!