腾讯广州后台开发一面 面经

第一次参加现场的面试,现在把面试经历写下来,总的来说是被虐的很惨。 之前一个微信事业群后台开发的听说我想去后端,还说叫我不要报,说后端没有女生,结果我还不相信,今天经历后才知道后台开发的要求很高

短信上说11点在大学城的某个酒店面试,天气不好,下着大雨,十点左右的时候收到面试官的电话问我今天会不会出席,说我可以早点过来
我到酒店的时候不到十点半,很多人在一些房间里坐着,还有房间写着笔试区,看了一下各种岗位面试的都有,之前还以为今天只是面后台开发,结果好像是所有技术和非技术的都是在今天面试。

去签到后,马上就有人给我了张纸条,叫我上去某某房间。然后我就上去了,里面坐着一个面试官,大概26,7岁,我把简历给他就开始面试了。
一开始简单介绍自己,我说的太长了,被面试官打断了,他问我高考多少分,家在哪里,然后说先来做一道笔试题,给半个钟时间
题目回忆如下:
腾讯每天上班有员工和主管签到。主管有权限查看签到情况,可以获取的信息有:总共有多少人签到,按照员工的id或者签到顺序查看员工的签到情况,得到倒数n个签到的员工。
要求:1)使用oo设计
2)排序的时间复杂度为O(nlogn), 最差的时间复杂度也不能达到O(n^2)

我不太懂什么是oo设计,刚上来就蒙了,我的理解是面向对象编程。然后就写了一个类。里面有成员变量和成员函数。排序用归并排序
结果面试官看到写的代码,问为什么只有一个类,然后就追问我什么是oo,oo设计的原则是什么。
他说是找名词,然后一个名词一个类。我写的只能叫封装。
然后叫我解释我的想法,我就说了一下。然后他说我没注意到细节,说只用主管才能有权查看签到情况,问我怎么实现权限
我真的不懂oo,就说我不会oo,他就说那就换其他的问吧

然后他说我简历上没写编程技能,问我会什么语言,我说c++, 他问掌握到什么程度,我说会用到熟练之间。不敢说自己熟练
然后他让我解释虚函数的作用, 我就说了多态,动态联编和虚函数表,然后他追问了多重继承的情况,我说了多张虚函数表,这里答得还算他满意。

之后他涉及了各个基础中又比较深入的问题来问我,基本就是先问我懂吗?懂到什么程度,我都说自己只是了解
c++: new 和 malloc的区别,要说的很全面,不然他会一直追问还有什么

linux:系统调用里面有一个sleep()函数,还有一个usleep()函数,然后usleep()函数号称自己是微秒级,你相信它真的能达到这么快吗?或者说系统调用可以达到微秒速度吗(这道题我没理解是什么意思);进程间的通讯方法,我说了管道,有名管道,信号量,套接字,消息。他一直追问我还有一个是什么,让我仔细想一想,我想了好久说不记得了。后来才想起来是共享内存,不知道这是不是在试探我的抗压能力?

操作系统: 说一下操作系统的几种进程调度算法 我说了先来先服务,短作业优先,时间片轮转,基于优先级的调度,他追问linux的进程调度方法,我不知道

数据库:用过哪些数据库? mysql。 说说它的几种引擎,以及各自的特点。innodb和myisam,特点说不上来,就记得myisam是default的,会存三个文件,但是面试官好像不太认可;听说过nosql吗,什么是nosql,nosql的几种产品。我说nosql不是基于关系的数据库,特点是不是严格的一致性,维持最终一致性,有mongdb和redis。他追问用过这些吗?我说没有,只是了解;
什么是事务,事务的作用是什么?我说事务有四个特性,原子性,一致性,持久性,隔离性。但是关于概念答不上来,当时是想到了全部成功或者全部失败,但是说不出来;

网络:TCP为啥挥手要比握手多一次?因为被动关闭方发送ACK和FIN需要两次,发送ACK的时候还没有传完自己的数据;
TCP三次握手有哪些漏洞,有没有被攻击的可能,怎么被攻击。答不上来,后来查了一下,是有漏洞的,主要是如果收到一个恶意攻击的ip一直请求连接,然后服务器会发送ack确认,但是永远等不到回复,就会导致服务器的NIC,内存,cpu占用率超载,这种攻击方式叫做基于TCP半开回话的洪水攻击


数据结构和算法:说说排序算法:插入,冒泡,希尔,选择,归并,快排,基数。说说常用的数据结构:数组,链表,队列,堆栈,优先队列,hashtable,map。 他说我怎么说的都是stl的?(这里我不太懂,这些数据结构虽然stl都有实现,但是不能这么表达吗?他想让我说什么呢)
然后给我了道算法题,给我5分钟,然后说思路。题目如下:双向链表,需要你按顺序输出,要求如下:1)时间复杂度不能超过nlogn,最坏也不能退化成n^2 2)空间复杂度 o(1) ,他让我说思路,我说我首先排除了快排,因为会退化成n^2, 然后排除归并和堆排序,归并要额外空间,因为是链表所以堆排序也不是nlogn,然后他就说那你不是说这道题无解了吗。我说我想不到。然后他问我堆排序的底层结构,我说是一个二叉树,然后说链表的数据结构,我说是数据域和指向前后的两个指针,然后他说他都提示到这里了我还想不出来了。
最后还是他告诉了我答案,说是把双向链表一个个拆出来组合成一个二叉树,然后中序遍历就是输出。(后来面试完的时候他说他拿这道题问过所有面试的人,只有10%能说出来)
然后他说我对数据结构和算法只是了解,但是不深入。感觉他评价我的每个回答都是我对很多东西都只是了解,而不是熟悉

他还问了什么是原子操作,问a+b怎么实现原子操作。我说给a和b上锁,他好像不太满意。我又说放到critical section,保证一次只能被一个线程处理。他还是不满意。他说看我简历本科是学硬件的,应该学过cpu,半加器的吧,怎么这个不知道? 他说答案应该是关中断,然后问我怎么关中断,我记得是有一个寄存器,他说差不多。

最后还问了我一个智力题,一桶有10L的油,以及3L和7L的空桶,问怎么分出5L和5L,给三分钟。我还是没有在时间内推导出来。其中还有一些其他的问题的,我记不得了。

最后他问我,怎么评价我笔试和面试的表现。我说对于笔试还满意,但是面试感觉不太好。主要是我一上来那个编程题就因为不会oo直接跪了,然后之后一直很紧张,不自信。他说我主要的问题就是没有什么工程经验,很多都是偏研究的,做的项目都是单点式的,不系统。建议我找一个不像腾讯要求那么高的公司增强一下自己的工程能力。我说平时都是在学校,做的都是偏理论的东西,他反问那别的同学是怎么会有呢? 他说腾讯招人对本科和研究生的要求不一样,对于本科生就是基础知识够扎实,会灵活的用算法,但是对于研究生就要求你不仅要基础知识够硬,然后还有有一些实际的工程经验。

最后他问给一定的时间,我更喜欢跟机器打交道还是人打交道。感觉这个问题怪怪的,我说要看我是需要停下来和别人讨论还是继续写代码就好。他说不要有这种假设,就说一段时间你是拿来写代码还是和人交流。我说我会拿来写代码,他反问我真的吗?说我的表现看起来没有在利用机器花很多时间钻研啊。我觉得好无语啊。他说做研究做的多不是坏事,但是做工程做的不多就是坏事,腾讯招人85%都是要拿来干工程的,做基础研究的很少很少,而且基本都要求是领域内的大牛。我问他怎么看国内面试注重考工程细节,而国外注重考算法核数据结构,他说国内竞争大,腾讯是个很实际的公司,所以希望招的人有实际经验,但是国外压力没这么大,国外企业也不希望员工加班,员工做的更多是小螺丝钉的工作。他还说他面试的一些有海外大公司工作背景的人,觉得他们的能力还没有国内的人强,主要是在国外负责的项目太小了什么的

最后我问他我是不是挂了,他说不能告诉我,但是我的表现不是很好……
出来的时候看了看表,十二点20,面了快两个钟;

这次面试给我的感觉是腾讯面试偏难,只是招一个实习生也要求很高,和之前面其他公司的感觉很不一样。算是一次难得的经验吧,认识到自己的短板,才能更好的提高自己啊……



更新:下午5点已经查到面试结果了,意料之中挂了。
谢牛客网还有我身边朋友的鼓励!这次的经历很宝贵,也让我有了今后努力的方向,我会继续加油,提高自己的能力的
最后,希望大家都能收到好的offer






#腾讯##C++工程师#
全部评论
OO是Object Oriented面向对象 。 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。 OO 设计模式就是面向对象的设计模式 。 权限可以用类的访问权限来做,排序:快排。 虚函数作用: http://www.cnblogs.com/kyleada/archive/2011/05/19/2051184.html new和malloc的区别: http://blog.csdn.net/zjc156m/article/details/16819357 sleep()和usleep(): http://blog.sina.com.cn/s/blog_66439a3e0101c0fb.html 进程通信: http://blog.csdn.net/yufaw/article/details/7409596 Linux的进程调度: http://blog.chinaunix.net/uid-20797562-id-99305.html 数据库:一脸蒙蔽。 事 务: http://blog.csdn.net/xiaoyu714543065/article/details/8211265 TCP三次握手,四次挥手: http://blog.csdn.net/whuslei/article/details/6667471 攻击三次握手: http://blog.chinaunix.net/uid-25603759-id-228187.html 排序算法 : http://blog.csdn.net/hguisu/article/details/7776068 数据结构: http://blog.csdn.net/kjfcpua/article/details/7300313  不完全 双向链表 那个我选择狗带。ACMer应该能反应过来吧。 原子操作 : http://blog.jobbole.com/54345/ 关中断(汇编好像讲过): http://blog.csdn.net/longronglin/article/details/5634382 10L的油 , 3L和7L的空桶 : 10-3-3-3=1,2+7;8,0+2;5,5。 喜欢跟机器打交道还是人打交道 : http://www.zhihu.com/question/36426051/answer/82579790?from=timeline&isappinstalled=1  第二点 //- -程序媛加油
点赞
送花
回复 分享
发布于 2016-04-10 19:30
3 7 10的桶内装油量用0 0 10代替,其变化过程是。3 0 7 -> 0 3 7-> 3 3 4 ->3 6 1 ->2 7 1->2 0 8-> 0 2 8 ->3 2 5 得证~这题应该就是考验脑袋的反应速度吧
点赞
送花
回复 分享
发布于 2016-04-11 16:11
国泰君安
校招火热招聘中
官网直投
都回答成这样了还不好,我的天呐。 有些东西,哪能是复习好了就会的呀。
点赞
送花
回复 分享
发布于 2016-04-10 18:53
双向链表与二叉搜索树。 剑指offer里面就有呀,挺经典的题目 http://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5?tpId=13&tqId=11179&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
点赞
送花
回复 分享
发布于 2016-04-11 00:51
他妈的好难啊。
点赞
送花
回复 分享
发布于 2016-04-11 20:16
他要招有实际工程经验的,何苦搞校招呢,直接社招不就好了,想招有发展潜力的又不愿意花时间培养新人,这面试官是不是过于现实了
点赞
送花
回复 分享
发布于 2016-04-14 02:13
今天也在大学城面了,没有楼主问得那么难。 看来还是看运气。。
点赞
送花
回复 分享
发布于 2016-04-10 17:58
为何我才面了20多分钟,而且问了一堆不会的,好桑心,基础太差了。。。
点赞
送花
回复 分享
发布于 2016-04-10 18:11
明天去面算法 已被吓坏
点赞
送花
回复 分享
发布于 2016-04-10 18:27
楼主,那个系统调用里面有一个sleep()函数,还有一个usleep()函数,然后usleep()函数号称自己是微秒级,你相信它真的能达到这么快吗?或者说系统调用可以达到微秒速度吗(这道题我没理解是什么意思),可能是有点时候系统调用 需要从用户态切换到内核需要时间,可能达不到微妙速度,应该是这个意思
点赞
送花
回复 分享
发布于 2016-04-11 09:21
实习都这程度要求有点高了 可能是人员够了要求高了 还有就是可能面试的 没有仔细看你简历 自己来问问题
点赞
送花
回复 分享
发布于 2016-04-13 15:55
卧槽,你的面试题跟我第一次内推的面试题基本一模一样
点赞
送花
回复 分享
发布于 2016-04-15 08:29
顶一个,楼主是妹子啊(⊙o⊙)
点赞
送花
回复 分享
发布于 2016-04-10 17:03
感谢楼主,上海苦苦等待中…
点赞
送花
回复 分享
发布于 2016-04-10 17:05
链表怎么快排和归并0.0 最坏的单链表用冒泡 双向链表还能用插入 面试官的意思应该是双向链表转换成搜索二叉树
点赞
送花
回复 分享
发布于 2016-04-10 17:05
学习了
点赞
送花
回复 分享
发布于 2016-04-10 17:10
这个帖子绝对精华。
点赞
送花
回复 分享
发布于 2016-04-10 17:17
什么时候给结果呢?好帖子谢谢了😜
点赞
送花
回复 分享
发布于 2016-04-10 17:32
写的太好了,
点赞
送花
回复 分享
发布于 2016-04-10 17:36
好帖子啊。。还是感觉难了。。
点赞
送花
回复 分享
发布于 2016-04-10 17:40

相关推荐

牛客221235529号:土木只用写:土木 男 能吃苦 就好了
点赞 评论 收藏
分享
39 184 评论
分享
牛客网
牛客企业服务