0%

腾讯实习面试经历总结和记录

之前因为学校考试时间原因拒绝了阿里巴巴的实习机会。几天后腾讯那边通知笔试过了,要去面试。腾讯的面试经历也是相当宝贵的经历,因为是第一次参加现场的面试,所以记录一下(4月底面的,问的问题可能不止这些,时间久记不住所有问题)。

一面

一面面试问了一些基础问题,因为投的是后台开发,问了很多网络方面的问题,但是都十分基础。比如:HTTP协议是TCP还是UDP之上的?讲一下HTTPS协议。对Linux套接字编程了解如何,发送和读取数据有哪些方法(我不知道什么意思,答的是那几个API:read/write, send/recv, sento/recvfrom,然后扯了一下udp的发送和接受)。阻塞和非阻塞通信的区别(中间有个概念搞错了,设置超时也是属于阻塞的)?还有套接字怎么关闭的(四次挥手),为什么有等待时延,套接字关闭后还能收数据么(没答出来)?算法问题比较简单:从两个链表中找出重复数字。我一开始用哈希表,就着优化哈希表扯了半天,后经提醒换用位图法,用01位标记数字是否出现。不过答题前我问面试官数字范围,他说int范围。我觉得这样用位图的话空间开销很大,如果链表不长还是哈希好点,但是我猜这是正确答案吧,所以没用开始没用位图的理由我就没说。最后问C和C++,static关键字的作用(忘了答在C++类里的作用了),static变量在内存的布局。没问项目经历和参加的比赛。一面问了二十多分钟。

可能是早上六点多就从学校赶到市区面试的原因,平时睡眠时间本来就不是很多,一早起脑袋有点晕。好多会的问题没回答好。。。答题前一定要想好再说,要点要说全。。。

二面

二面还是没怎么问项目。。。问了比赛:介绍数学建模是什么比赛,你负责干什么?我就介绍了一下,然后讲了下15年国赛题(作了个死,说这个比赛和计算机关系不大。。。),我说我负责编程辅助写作,LaTex比较熟。然后问最近在干什么,我说学校让组队做个大课设,我和另外两个同学写一套ftp服务器和客户端,我负责整个项目。之后就是让深入介绍服务器的架构,以及你们怎么学习、了解、实现ftp协议的。我大概讲了一下我们怎么用ftp和FileZilla与vsftpd通信看报文,怎么看RFC文档。我们写的服务器是如何用单进程和select实现并发。大概讲了select在我们的服务器里怎么用的。中途被问知道epoll不?我说知道,但是面试官没继续问,让我接着讲服务器。又问为什么不用多线程,我说另外两个同学不熟悉pthread(糊涂了,应该讲讲单进程并发的好处)。。。然后就是问整个服务器性能怎么优化,第一反应什么都没想到。。。经提醒后回答了可以根据文件大小情况预读一部分文件到内存里,这样就不会因为fread的buffer太小反复读硬盘(服务器五一节的时候写好了,没加这个功能,传了个上G的文件,感觉可能有必要加这个功能)。中间扯优化的时候不知道怎么说起加锁上了,于是说了pthread_mutex的用法,又说了pthread_rwlock。最后问了算法,问1亿条短信中怎么找重复出现频率最高的100条短信(也就是这100条其实内容一样)。面试官挺好的,说这个问题可以多想想,没有标准答案,想你觉得最好的方法。最后我说的是数据随机分到多台机器上,每台机器找用hash找100个重复率最高的数据,然后直接把统计结果汇总一下,在一台机器上加起来,汇总后出现最多的100个就是答案了。面试完了想想貌似不对,如果某条前100的短信被比较“平均”地分发到所有机器上,那么可能它不会进入这些机器的前100。。。所以应该就直接每个返回这个机器上所有的统计结果,最后汇总。虽然麻烦,但不会错。最后一个问题是如何存储和查询一个短信是否存在于这1亿条短信中。开始直接说的哈希,然后觉得太low了。。。又说了如果短信内容有由多片段重复组成的,可以采用类似字典树的方法,还能省些空间,然后画了一下示意图。现在想想直接哈希肯定不行的,因为数据量太大(后来知道了一个东西叫Hash Tree,感觉用来解决这个问题或许可行)。二面大概半小时。

感觉就是最后的开放性问题回答不太好。平时这类问题没看过,学校课程和项目中也不出现这类问题,是个短板。问最近干什么居然说的做学校课设也是low爆了,应该说在学些什么技术之类的。。。不过这也是实话是说吧,这学期专业必修课开太多了,光是作业和实验就挺忙了,加上找实习,确实就没学新东西。

HR面

HR面主要就是问问爱好,家在哪里,有女朋友么,聊点学校学习的事情,喜欢哪个城市。可能因为以前在高考人口大省上学,又聊了学校和为什么学计算机。HR居然还问了简历上的比赛经历,这个我很意外。HR挺友好,知道我们学校在郊区,进来面试时候给了我一瓶宾馆的矿泉水。

HR面没什么感觉。。。不知道刷人的标准是什么,我猜测是主要依据是前两面表现,另外看性格和交流能力吧。

最后过了一周,在五一前通知面试过了,分配到了TEG做后台开发。也总算是告一段落了。运气不错的是我认识的另外两个人也过了面试。