腾讯2016暑期实习面经

 大家好我是个非211普通一本的大三学生,计科专业,我3.8号在hr那里得到消息,确认已经通过了腾讯的暑期实习招聘,虽然还没有官方的电子offer(统一发),不过勉强算是个成功拿到offer的人了,应同学邀请,写一下所谓的经验吧(本人c++后台开发方向)。
    今天是3.10号,大规模的面试轰炸还没开始,我海投了7、8家公司,目前只经历了腾讯技术一面,技术二面和hr面、腾讯另一家部门A一面,以及国内某大型互联网公司B一面(不方便透露)  
    面试的问题、流程、时间长短都没有固定套路,大家最好也不要纠结句这些。
    下面来点干货,我在面试过程中遇到的问题:项目描述(以上5次面试都是从这个开始的,hr面也是哦。。。);大端与小端的概念;time_wait状态的产生原因,危害,如何避免;select/poll/epoll的区别;epoll中ET和LT的区别;UDP协议的使用领域;守护、僵尸、孤儿进程这种概念;学习成绩如何(这个让本学渣没法回答。。。);滑动窗口协议。腾讯二面还问了一道智力题。没了。。。。。大家可能很奇怪,这么多面试就这么几个题,其实我三次一面的时间分别是:18分钟,15分钟,13分钟。所以大家不要纠结于时间长短,我腾讯和A一面都过了,B那边不知道。以上的问题,我觉得都挺基础的,如果你也是c++后台方向,如果面临找工作,不会的话赶紧搞明白,如果是大一大二那不懂很正常,一年时间也能学会(我就是疯狂学习了一年,注意,疯狂)。
    下面讲一下我所感觉到的面试的注意点:
    第一个讲项目的时候一定要准备点高端的话题:不要太早的陷入细节,因为我们的项目在面试官眼里都没有啥价值(大牛项目请忽视这句话。。。),他们更加想听到的是你从这个项目中学到了什么知识。比如我在腾讯二面的时候就没注意这个问题,从细节处下手,感觉被面试官鄙视了,第二天A的一面我总结了原因,感觉回答的很满意,B的面试官听完项目就没问其他的问题,(13分钟就结束了,我也不知道是答好了还是没答好。。。)举个例子:我的项目是个小型的FTP服务器,看视频学着做的,面试官问我项目描述的时候,我觉得最失败的就是腾讯二面的时候了,当时太紧张,脑子有点蒙,就基本按简历上写的念了一下,面试官就开始问我,我就开始答,最后面试官来一句:感觉也不是很厉害、、(瞬间被鄙视)。后来AB的面试官问这个问题,我就从大方向上描述,比如我的FTP服务器是多进程程序,我说我刚开始想用reactor模式+线程池实现,然后发现这不可能实现,分析为什么不能实现:进程的工作目录必须独立,不能共享,__thread和pthread_key_t都只是提供特定数据结构,工作目录本来就是一个进程拥有一份,这个时候可以问一下面试官有没有什么实现方法(交流很重要,能和面试官互动起来那就完美了),他有你就涨知识学习了,没有的话他也会对你的分析很满意(实际上基本不可能有,因为Linux下的vsftpd就是多进程实现的);为什么要使用两个进程为一个客户端提供服务(协助进程有root权限,不能把这么高权限的进程直接给用户,不安全);为什么ftp服务器有主动和被动两种工作模式,因为有防火墙和NAT,两种工作模式可以解决因为防火墙和NAT引起的问题,(B的面试官想问我怎么解决防火墙NAT,我直接告诉他我是编程人员,对这种运维的操作不熟练,其实我是一点不会,所以就实现两种模式,一个不行就用另一个解决),实际上所有FTP客户端都可以选择工作模式,不信你们找找看,保证有。以上就是我能想到的,所谓高级话题,大家给自己的项目也准备一点。
    第二个注意点是,不要局限于一个问题,把每个小问题都答的透彻一点,迁移的多一点广一点没关系,我个人认为,hr面的时候别太爱扯淡,言多必失,技术面的时候,如果你脑子里有更多的知识点,就跟面试官说一说,他不会嫌你啰嗦,当然前提是你会,不要胡说八道--、,技术官更加希望看到你的知识理解深度。比如说问我select/poll/epoll的区别的时候,这题烂大街的答案就是前两个遍历后者回调,所以后者效率高,我答的更加深一点:select内部是数组实现、poll内部是链表实现,所以select有最大fd限制,poll没有限制(系统资源假设无穷大的话),它俩都有用户态到内核态拷贝的过程,两者的切换和数据拷贝都很消耗性能,而epoll是内部是一棵红黑树,(你要是不懂红黑树就说内部是哈希表,因为epoll以前是哈希表,现在是红黑树,这个点说错了面试官也不会太责罚,他也不一定知道),这个数据结构效率很高,epoll还没有内核和用户态的切换,因为epoll内部采用了共享内存机制,共享内存就这特点。对这个问题的回答,我提到了红黑树,提到了共享内存,提到了影响服务器性能的点,你可以根据这个很自然的迁移出RBT和AVL的知识,IPC的知识,影响服务器性能的四大杀手及其如何避免这些知识。前提是你得会,不要自己坑自己。类似的,你可以给自己准备点高大上的问题,自问自答,面试官肯定欣赏你。
    我也不知道是不是我的项目把面试官唬住了,他们都没问我数据结构和算法,这个也是人人虚的东西吧,所以说我的运气还挺好,,,
    对于大一大二的同学来说,最想问的应该是这个方向应该学什么,怎么学。首先应该学什么这个问题我就不回答了,直接来个博客,我去年也是看了这个博客才知道大概要学什么的 http://blog.csdn.net/zjf280441589/article/details/45639523   。怎么学这个问题,每个人都有自己的学习方法,我是看视频,有人爱看书,还有人报班,不管咋样,你得努力坚持,我以前也觉得我做不到,努力学习了一年,收获还挺好的,不过学无止境,无知者无畏。书单我就不列举了,博客里边有,那么多书我也没看完,观其大略,抓住重点罢了。
    因为我的面试没遇到c++和数据结构,在这里补充一点,推荐一些学习的资料。c++就一本书《深度探索c++对象模型》,我同学遇到的c++的问题以及看面经问到的c++的问题,在这本书上都能找到答案。数据结构就没的说了,啃书就行了,我并没有读过《算法导论》(不敢读,实话,其实我数据结构不咋地,拿到offer真是运气成分不小的。。),但我觉得能读完并掌握这一本书比我以上说的都牛,都牛,都牛!大家量力而行,牛客网上左老师的课也非常非常不错,我大概刷了8节课,收益匪浅,买了本书支持一下。给大家个参考,我的话,快排这种基本不过脑子就能写出来,快排的非递归也应该掌握(有兴趣的可以试着线程池实现非递归快排,对我来说挺有挑战的),各种排序的优缺点大概知道,BST基本也不用过脑子撸完,前中后层次遍历稍微想一下也可以写完,AVL好好想想也能写出来,RBT手撸不出来,,,kmp理解也能实现,bfptr也懂一点。我数据结构和算法的水平跟ACMer是没法比的,不过本科生能做到应该也算是及格吧。。。。
    祝大家都能拿到满意的offer。 
#腾讯##C++工程师#
全部评论
可以啊,叶神给你实力安利了一波,我感觉我得更努力了 /奋斗
点赞 回复 分享
发布于 2016-03-10 21:55
佩服楼主,对select、poll、epoll的解释很清楚啊,请问平时看哪些系统编程方面的书?
点赞 回复 分享
发布于 2016-03-10 21:46
楼主好厉害~请问面你的是哪个部门呢?
点赞 回复 分享
发布于 2016-03-10 20:45
windows的ftp.exe就不支持被动模式
点赞 回复 分享
发布于 2016-04-14 22:39
楼主收到offer了么?
点赞 回复 分享
发布于 2016-03-23 11:25
楼主你评级是多少?
点赞 回复 分享
发布于 2016-03-22 21:32
恭喜楼主!你们是哪个地区的啊?为什么我前天才收到面试通知?不过我是网申的,请问内推是怎么推?
点赞 回复 分享
发布于 2016-03-19 16:23
恭喜楼主,我HR面后过了一周还没信。。估计挂了 TAT
点赞 回复 分享
发布于 2016-03-18 21:09
请问楼主腾讯内推的流程是怎么样的?内推的人会给你发来一个链接那
点赞 回复 分享
发布于 2016-03-14 23:22
小型的ftp服务器可以开源,学习学习吗??
点赞 回复 分享
发布于 2016-03-11 14:40
恭喜楼主啊,请问你是内推的吗
点赞 回复 分享
发布于 2016-03-11 10:24
你好,我也是3月8号HR通知通过了,现在也在等offer的阶段,HR有跟你说过什么时候统一发offer吗?
点赞 回复 分享
发布于 2016-03-11 09:34
楼主是在腾讯投了两个事业群?这样允许吗
点赞 回复 分享
发布于 2016-03-11 01:16
请问楼主是投的sng吗
点赞 回复 分享
发布于 2016-03-10 22:14
恭喜楼主
点赞 回复 分享
发布于 2016-03-10 21:58
首先恭喜你拿到offer,我想问下你, 你那个ftp服务器学习视频是哪个?我也想学习下,不知能否告诉我,谢谢
点赞 回复 分享
发布于 2016-03-10 21:57
恭喜
点赞 回复 分享
发布于 2016-03-10 21:55
赞楼主,可惜我没有在linux下的项目经验
点赞 回复 分享
发布于 2016-03-10 21:52
棒!
点赞 回复 分享
发布于 2016-03-10 21:46
赞!!!
点赞 回复 分享
发布于 2016-03-10 21:02

相关推荐

04-03 12:09
東京大学 C++
点赞 评论 收藏
分享
评论
27
127
分享

创作者周榜

更多
牛客网
牛客企业服务