亲述我通过腾讯2016暑期实习机会的面试经验-蜗牛派

亲述我通过腾讯2016暑期实习机会的面试经验

2016031178859689

        大家好我是个非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的知识,影响服务器性能的四大杀手及其如何避免这些知识。前提是你得会,不要自己坑自己。类似的,你可以给自己准备点高大上的问题,自问自答,面试官肯定欣赏你。

        我也不知道是不是我的项目把面试官唬住了,他们都没问我数据结构和算法,这个也是人人虚的东西吧,所以说我的运气还挺好,,,

        对于大一大二的同学来说,最想问的应该是这个方向应该学什么,怎么学。首先怎么学这个问题,每个人都有自己的学习方法,我是看视频,有人爱看书,还有人报班,不管咋样,你得努力坚持,我以前也觉得我做不到,努力学习了一年,收获还挺好的,不过学无止境,无知者无畏。书单我就不列举了,博客里边有,那么多书我也没看完,观其大略,抓住重点罢了。

        因为我的面试没遇到c++和数据结构,在这里补充一点,推荐一些学习的资料。c++就一本书《深度探索c++对象模型》,我同学遇到的c++的问题以及看面经问到的c++的问题,在这本书上都能找到答案。数据结构就没的说了,啃书就行了,我并没有读过《算法导论》(不敢读,实话,其实我数据结构不咋地,拿到offer真是运气成分不小的。。),但我觉得能读完并掌握这一本书比我以上说的都牛,都牛,都牛!大家量力而行,牛客网上左老师的课也非常非常不错,我大概刷了8节课,收益匪浅,买了本书支持一下。给大家个参考,我的话,快排这种基本不过脑子就能写出来,快排的非递归也应该掌握(有兴趣的可以试着线程池实现非递归快排,对我来说挺有挑战的),各种排序的优缺点大概知道,BST基本也不用过脑子撸完,前中后层次遍历稍微想一下也可以写完,AVL好好想想也能写出来,RBT手撸不出来,,,kmp理解也能实现,bfptr也懂一点。我数据结构和算法的水平跟ACMer是没法比的,不过本科生能做到应该也算是及格吧。。。。

祝大家都能拿到满意的offer。 

aa

 

分享到:更多 ()
Copyright © 2015-2024 woniupai.net 蜗牛派 版权所有
皖ICP备18016507号-1 | 本站内容采用创作共用版权 CC BY-NC-ND/2.5/CN 许可协议