本来我是已经决定要保研,但是这个学期还是投了一些实习简历,主要是想看一下我的水平到底如何,顺便也能感受一下找工作的感觉。寒假快要结束的时候给阿里投了内推,在寒假的最后一天接到电面,面试过程相当坑爹,我基本是裸面,结果是毫无悬念的跪了。来到学校之后又尝试着投了腾讯和阿里的正式校招,也参加了微软的在线笔试(到现在都没有动静估计也是没戏了)。上个星期腾讯面试完,今天拿到offer,简单记录一下腾讯实习的面试经历。

笔试

笔试在电子科大在郫县的校区进行,人数还是不少了,占用了不少阶梯教室。基本上所有报技术职位的都使用一张笔试试卷,很长的一张,正反一共十面,不过有大概三分之一是各个事业群的介绍。有20(还是25道?)选择题(都是不定项选择题),和四道简答题。总体来说难度不是很小,考察了js,C/C++,计算机网络,数据库,运维和一些概率统计方面的问题。我感觉至少有一半的题目不确定,印象比较深刻的知识点有字节对齐,基类有虚函数的派生类的大小等等。。。记忆已经有些模糊了。大题第一题是存储了很多很多QQ号的vector、set和map其中的两个(= =我已经记不清了),删除其中是奇数的QQ号,写算法。第二题是经典的斐波那契数列问题。第三题和第四题已经忘记了,只记得做了第三题,第四题和第一题一样是空白。

一面

笔试似乎刷人不多,跟我一起笔试的同学基本都进入面试了。面试是在成都的明宇尚雅饭店进行,就在锦江边上,4月7号晚上发短信要第二天早上11点面试。

第二天早上先坐67路再转地铁到华西坝站,出地铁站走几百米就到了。到那里发现人还是很多的,大概是一面的人比较多的缘故,还遇到了CJW君去霸面(而且还霸面成功了。。。)。签到之后等了没几分钟就让去楼上面试。面试官是一个瘦瘦的眼镜小哥。主要问的问题有

  • 结构体字节对齐(C语言字节对齐问题详解)
  • 要求不对齐有哪些方法
  • 异构网络中怎么解决不同主机对齐不同的问题(没答出来)
  • C可变参数(【C++基础之二十】可变参数的函数)
  • 笛卡尔积(数据库)
  • 左右连接
  • tcp建立拆除(三次和四次握手,这问题几乎是必问,阿里问了,后面的二面也问了)
  • md5冲突(md5重复的问题)
  • 实习地点、时间
  • C++只问了会不会没有具体问

一共大概二十多分钟就出来了,没有要求写代码。

还是一面。。。

我自认为第一次面试回答的还是不错的,只有一个没答出来。可是回学校的时候一查。。。岗位不合适。。。= =#,结合后面的面试经历我猜测面试官一开始就没打算让我进微信事业群(我报的微信事业群后台开发),基本没有问什么有实际意义的东西。

到了晚上十一点多的时候又接到短信,再去初试(一面),看来是换了个部门。第二天下午6点半又到了饭店,这次等待面试的地方人明显少了很多(这个时候一面已经基本结束了)。这次直接到顶楼,面试官年纪比上一个要大一些。上来没有自我介绍,先问我会啥,我说C/C比较熟,于是就问:“说一说C的多态吧”。C++这方面的东西还是前几天恶补的,只能硬着头皮扯。扯到了动态绑定、虚函数等等,然后面试官问虚函数的继承是怎么实现的,有什么意义。我只说出来了虚函数表。。。又问为什么基类的析构函数一般都是虚函数,这个我是看过的,可是一下子想不起来。。。这个话题结束了。。。下一个问题是new和malloc的区别,这个我还有点印象;然后问到堆与栈的区别;静态变量存储在哪个区域。这些都答上来了。然后问到从数据库中读取了很多联系人数据,在内存中用什么数据结构来管理,要求搜索,排序,添加删除都比较快,数组添加删除太慢,链表搜索排序慢,最后我也只扯出来了平衡二叉搜索树这种,本来想说B+树可是实在不熟。接下来是三个数据结构题:

  • 两个单向链表可能相交也可能不相交,求相交的节点(暴力遍历不行)
  • 一个字符串中单词顺序反转(反转两次)
  • 交换单链表的相邻两个节点(这个要手写代码,前面两个讲思路)

这三个题答得都还不错。面试官说可以进入复试,然后我问了一下现在面的是什么部门,结果是SNG(社交网络事业群)的移动客户端。。。就是手机QQ、QQ空间等。然后面试结束,让我明天早上来复试。

二面

坐电梯刚到一楼接到面试官的电话,说我现在就可以去二面,于是又坐电梯上去。这次的面试官气场有点强。。。先问了问项目经历、成绩等等。然后开始写代码,先是经典的上台阶问题,然后要求实现strlen,我只考虑了空指针的问题,然后用遍历来求长度,然后面试官问怎么优化。。我是没想出来(回来之后才知道要优化一要分配寄存器,二要考虑字节对齐);然后是一个很长的字符串,求第一个只出现了一次的字符。接下来问了一个智力题:两个外观大小重量都完全相同的金球和铅球在不破坏它们的情况下怎么区分开。。。我一开始想的是硬度,可是这被认为破坏了,然后是导电性,被说不好操作,其他的我也没想出来。最后问了数据库的问题,谈到了项目中用的框架,于是又聊到了框架对SQL的封装等等。。。最后得到的评价是还不错,但是项目经验太少。

HR面

二面之后我基本确定能进HR面了。HR面没有技术问题,问了籍贯、家庭背景、爱好、对成都怎么看、能不能去深圳实习等等问题。HR小哥明显跟前面的技术面试官不一样,也热情的多。

offer

一个星期后接到电话说拿到了实习名额,但是啊。。但是,考虑再三还是决定保研为重,学院还要求必须七月去实训,时间也不够还是决定拒掉实习offer了。下个月的阿里面试估计也不会再去了。。。

总结

校招时对于本科生的技术要求不是太高,面对面的面试中也不太可能出现复杂的问题,时间上也来不及,所以问的问题多集中在语言的特性(对语言的熟练程度)和数据结构上。还有简历不要乱写,写在上面的每一条都有可能被刨根问底,不是很熟悉的项目还是不要写为妙。我都没有敢说对Python比较熟,因为我只是用它但是却没有极其深入的研究,随随便便就能被问倒。

重点还是在计算机专业的核心科目上:C/C++,计算机网络,数据结构与算法、操作系统和数据库等。

说实话能拿到实习offer还是很幸运的,我的水平还是不够啊。。。