HelloKenLee

记最近的几次实习面试经历

Posted on By KenLee

写在前面

  又到了一年一度的春招,大三的时候因为课程太多,因此真正投出去的申请实习的简历很少,而且当时很慌,不知道自己该做什么方面的工作(>_<)。结果现在研一了,又到了开始投实习的时候了(我读的是两年型的研究生)!本来不是很想这么早就投实习(二三月份应该算内推阶段吧?),但是看到舍友都再投投投,自己也就瞎跟着投了几个。目前为止投了阿里巴巴,YY欢聚时代,网易游戏这3家。

面试经历(按时间排序)

阿里巴巴:(图形学方向)算法工程师

  阿里是最早投的,投了之后就让你做在线编程。我抽到的是用蒙特卡洛法算心型线的面积,心型线他用一条直角坐标系的方程给出,限时40分钟。结果他出的题目表述不清楚,给出的心形可以从4个方向看,我当时只以为是上下两种,所以只过了40%的测试数据。本来想着没希望的,结果2天之后他打电话给我说要电话面试。

  面试的形式是用阿里巴巴的电话会议系统,Web的,Chrome安装一个插件就能使用。问题倒是挺简单的,基本上就是问一些基础知识,C++,操作系统和计算机网络。之后会给你一个网址让你在他的监视下写代码,我抽到的题目是写一个String类的几个基本函数,要求这个String能在STL的其他容器中使用。基本上就是维护一个char* s;和一个int size;,注意拷贝构造和赋值运算符考虑边界和自己赋值自己的情况就可以了。 (这个时候出了一个状况,我写到一半的时候他的在线编程系统出BUG了,哈哈哈哈哈,写不下去。面试官只好远程我桌面然后让我用自己IDE写。能用自己IDE写当然是最好的,也算是比较幸运,很快就写出来了。)然后就问了一下OpenGL的渲染管线,这个我懂的比较多,所以回答的很顺利。

  最后他突然问我能不能接受到北京6个月的实习?我当时是很惊讶的,因为我网申的时候填写的期望工作地点是广州,因此我就和他说我比较希望在广州。而且我们导师说了只放我们两个月实习…所以我就委婉拒绝了他。之后气氛就很尴尬,大家都觉得面试了这么久白面了QAQ。不过面试官还是比较nice的,他安慰我说没事,之后会有别的广州的同事联系你的。结果,之后就没有之后了。。。(突然间蜜汁拒绝了阿里,求别拉我进黑名单啊!)

YY欢聚时代:C/C++研发工程师

  这个是宿舍的学霸说有内推机会,因此我就把简历发他让他同学帮我内推了。说实话,面试YY的经历几乎是我最差的面试经历了。不知道YY的HR怎么想的,没有笔试这个门槛,所以内推和网申几乎没有任何区别,本科生和研究生也没有任何区别,可以想象面试官的压力得多大。他的HR预约了我下午1点30分面试,没有邮件,没有书面通知,就只是打电话口头通知一下。1点30分我准时到了面试地点,就被HR扔在大堂上坐着等,等到3点45分才接到了一面的通知。

  一面的面试官人挺好的,说话也很幽默。问题都挺简单,基本的C++内容,问得不深。然后让我手写代码,写一个map的插入删除操作。之后问了一下从1~10^9个数中选没有出现过的数,他说内存只有128KB,我按照外部排序的思路给回答了。最后他说用bitmap来读入,能够刚刚好读完…我愣了一下一开始以为是问算法,结果还是问C++。后来问了多线程和网络编程。最后问了一下用TCP写了两个端A,B,结果A发的请求B接收不到,让说说排查错误的过程。这个问题我觉得要答得全面还是挺有难度的,一紧张很容易漏到一些情况。最后面试官笑着说没什么问题了。

  之后发生了一个小插曲,我面完一面HR说让我可以走了(大概意思就是你挂了)。我一脸懵逼,一面问的问题我基本都答出来了就莫名其妙挂了?于是我说那我等一下我同学,我同学还在面试。结果没过5分钟,HR又过来说你过来面复试吧。我更是茫然,我说,你们刚刚有个HR让我走啊?结果那个HR说他可能搞错了。(这都能搞错?那如果我刚刚走了是不是变成了我自己放弃面试?)

  后面我就直接去了2面,面试官是一个年纪比较大的人,我去的时候他在看吴军的数学之美哈哈哈。

  二面首先问的也是C++的东西,一开始我有没有读过一些经典的源码,我说我只看过侯捷的STL。然后问了几个STL的实现原理,不算太难。后面问了一下多线程和网络编程。接着问了我一道LRU算法的题目,问完让我分析复杂度。

  二面面完HR按照惯例(???)直接让我走了,因为我朋友也面完了,就直接走了。后来听说因为面试的人数太多,有些人甚至一面都没面试就被赶走了。不过我后来听说有两个同班同学面了3面的,估计是通过了。总的来说这次面试给我的感觉很混乱,不像一间大公司组织的面试。不过可能也只是我运气不好,遇到各种情况了。

网易游戏:游戏研发工程师

  最后面的是网易游戏。一开始是笔试,也是在线编程3道题2个半小时。用的是牛客网这个网站,所以题目上面迟点应该会公布。反正我只用30分钟做了第一题,然后因为某种原因跳过了第二题,结果第三题多维背包问题2个小时没做出来QAQ。结束的时候回头看第二题发现我能做出来,而且能有一个很好的优化方法,可惜没有如果QAQ.

  本来以为GG了结果接到了面试。和YY截然相反的是我去到等待面试发现那天那个时间只有我一个人面试这一个岗位,我早到了30分钟,所以也就只等了30分钟。面试官很准时地叫我去面试。

  面试的过程非常舒服,面试官也非常好人,开始还让我去上厕所。面试可以说是查漏补缺也不过分,总体面试分为4个方面:1.项目经历 2.C/C++ 3.操作系统和计算机网络 4.算法

  1. 项目经历:这个每个人都不一样,让你说说自己做过最喜欢的两个项目。
  2. C/C++: 这个问的还是比较深入的,先问了一下虚函数,多态,然后问了一下构造函数能调用虚函数吗?虚表的实现方式?(《Effective C++》啊!)然后直接问STL Map的实现原理,插入复杂度,红黑树的旋转。然后问了一下迭代器,让我介绍迭代器。问我容器变化的时候不同种类的迭代器的变化,然后让我改进现有的C++的迭代器的实现。总的来说他会从你会的一个知识点问,一直深入问到你不会为止,这样的面试还是非常有价值的。
  3. 操作系统和计算机网络:这部分问了两个问题,一个是多线程的同步方式和多进程的通信方式。然后问了一下网络编程,让你实现一个在线游戏的服务器,用socket写应该怎么写。会由原理问到实现,问的非常细。面试官非常幽默,他说“你不要给我背书,然后错了把锅甩给教科书。我希望是一个工程问题你自己能够提出解,然后分析,然后优化。”
  4. 最后问了算法,一开始问了哈希,也是直接问到实现,考虑怎么扩容。然后问了一题洗牌,就是给一个长度为N的数组,让你随机打乱顺序,但是要求每一个数在每一个位置出现的概率相同。给出了算法之后要用数学证明概率相等,然后分析时间复杂度。问题不太难但是问得很细。

  我只有C++那块面试官问完称赞了我,其他感觉面试官都不算太满意。本来心灰意冷没想到在2天后接到了Offer。

后记

  后来跟着同学让师兄内推了腾讯,腾讯的分类非常不科学,我报的是EIG的C++后台开发,刚刚交了简历,还没接到笔试/面试通知。