声明,腾讯笔试的时候曾填写过保密协议,题目是不准泄露的。但是今天面试的时候并没有填写保密协议什么的,想来也不会有什么侵权之类的。如果有,本文会无条件删除。
腾讯大范围的校招实习生,不知道成都要招多少人但是参加笔试的人直恐怖,3000多个。另外还没有加上霸笔的同学,比如我朋友就霸笔了,不过还是过了笔试,进了一面了。(以后学了一招,简历被刷无所谓,可以霸笔只要有实力是有机会的)。笔试的题目觉得选择题有点变态,不定项选择,内容基本上接近微机原理,不能说下去了,保密。
昨天晚上收到短信,今天早上11点钟参加面试。叹腾讯的工作效率,淘宝上次要两个星期。因为本人小菜,所以压力还是蛮大的,过的概率基本不大,今天答对的内容可能只有百分之四十左右吧。
切入正题
第一题面试的是自加++的问题,a=1,b=2, c = a+++b。当时比较轻敌,直接就是答的a先++返回1加2也就是c=3,a=2,b=2。不过之后就被面试官问住了,为什么不先算++b,当时啥的糊涂直接就挂那里了,光想翻开教材看看a++,++a到底是哪个优先级高,运算顺序是什么的,唉...结果被他问的又改口说是先++b。汗... 网上给出的答案是在编译程序的时候,会进行词法分析,词法分析先将输入的内容切成token,并形成token序列。当遇到+token的时候他首先期望得的是=那么好, 是+=如果不适,那么期望得到的是 + ,如果是,那么得到的是 ++; 以上都不是 则后退返回。此题当中编译器先得到+号期望得到+或者=,出现了+号那么他就会先++存入token,然后再+b返回,正确的答案为:c=(a++)+b。
第二题就比较简单了,问了main函数的参数问题,想这个问题就没有解释的必要了。一个是整型的参数列表个数,一个是字符串数组存储参数列表。他就问了有几个参数,类型,作用。
第三题问的是typeof 和 宏定义的区别。这个相信只要C语言懂一些的应该都不是问题,typedef是为已存在的类型定义一个别名不能定义不存在的类型。#define就是简单的字符串替换而已,当然也可以定义类型,比如 #define INT int,不过一般会使用typedef。
第四道题还是宏定义,问c语言中的宏定义有什么坏处。曾经在哪一本书上看到过详细的介绍,但是想不起来了,当时只举了个很简单的例子比如#define Max(a,b) a > b? a: b这样写会造成如果给的参数是1+2的会出错,需要加括号。另外可能使代码不太容易阅读,需要寻找原始的宏定义。反正记得有本书上讲的尽量少使用宏定义,理由给忘记了,悲催。
第五道题问c++的多态是如何实现的。当时只想到通过继承虚函数,在子类中实现其方法实现多态。忘了函数重载也是一种多态。最失误的不是这个,是他让我当时就写代码实现我所说的多态,忘记关键字了,没有写。汗... 他说连基本的关键字都没有记住???我只能说大一的时候学过c++后来就差不多忘了,思想是知道具体代码没有写好。现在想应该是一个virtual关键字吧,基础不扎实。
第六道题问linux进程间是如何通信的。这个比较悲催那天差点看到,后来下课了就没有看。只答出了一个是通过管道的。他又问管道具体有几种,我狂飙汗,我只用过shell命令中的|这个管道,自己编程从来没有用过。所以直接就不知道了,吹也没办法吹。刚才百度了一下,基础太差了,管道分为匿名管道和命名管道。匿名管道是pipe创建,在父子进程间通信。命名管道是通过mkfifo通信,可以使无亲缘关系进程通信。linux通信主要分为,socket,管道,信号量,共享内存,消息队列。当时说windows下可以通过发送消息和动态链接库。想到通过共享内存和信号量了,没有说怕说错,悲剧。
第七题是网络编程socket知识。前面答的不错,主要问了几个主要函数比如socket,bind还有Server和Client的一些问题比较简单。问的比较细的是他要问出你每个函数的返回值类型,汗... 查文档嘛。然后问了一个问题又把我问傻了,问如果有两块网卡我如何监听两块网卡的地址,我说用两个socket她说只用一个,我就说可不可以绑定两个地址嘛,他说不行,然后我就说不会了。
第八道问的是linux下堆,栈和代码段的分布情况,我直接说的是堆最大,其次是栈最后是代码段。后面查资料是这样的。
堆栈和堆的顺序弄反了,应该先是堆栈后是堆,然后是代码段。数据段在代码段上面,主要存放全局变量和静态变量。准确的顺序由大到小是,堆栈,堆,全局变量静态变量,字符串常量,和代码段。
第九题是问数据结构中的二叉树,这个是我最郁闷的事情,因为我会来才知道自己死这里了。他问二叉树了解嘛,我说一般,他问平衡二叉树的好处,我当成排序二叉树了,吹了半天他也没有纠正我,还接着问我在什么场合使用,我汗... 回来我才知道自己根本就驴唇不对马嘴。
第十题B+树和B-树,我只说了一下自己理解的感念估计没有答道什么东西,最后说了句没有用过不太了解。只知道大量数据存储经常用这些,里面的数据是按一定的规则存放,是一种扩充形式的二叉树。
第十一题是hash算法冲突,两种线性探测和链表法比较简单。
第十二题是堆,我只说只用过堆排序,他说最小堆最大堆是如何构造,好歹答了一下,不懂太多,他就没有深入问我。正题数据结构和算法这一块比较失败。
第十三题,前面吹到自己大一做c++后来不做了,做.NET了,做网站。他就问了一些网站方面的事情,感觉我答非所问,问了三层架构业务逻辑层的实现等等。自己回答的不是他想要的答案,我们俩应该都比较郁闷。
第十四题,回到做前台js,问我写过没有。我说只用过jQuery写过一点点,他问了一下jQuery事件的添加还有返回值。以及问了一下$这个符号是什么,我回答就是jQuery,他又问我jQuery是什么,我说类他说类吗?类可以加()调用?我又解释说自己js学得不多,一直没搞懂他里面的对象,笨死了。太诚实了,直接说自己刚才说错不就得了,还说自己不太熟悉,笨哦。
第十五题,问了一下如果我自己的服务器,就自己的程序挂掉了,有没有方法让我提供的服务继续提供。我想服务器挂掉了,怎么提供服务啊,就说导向一个友好页面,他不满意,说算了。让我直接想,我想不出来就算了。
第十六道题是问的gdb的很多命令,比如打印,单步,运行等等。
第十七道题是问的数据库的,但是问的都比较基础,比如插入语句。然后问了replace和update语句的区别,根本没有用过replace,悲剧,不知道。
第十八题是问的什么是贪心算法,以及什么情况下使用贪心算法。
其他还有一些零零星星的小问题,忘记了。反正感觉很不好,很多问题答的相当不好。面试官比较和蔼,人还可以,长的也挺好的,以后希望自己也能那样。反正只答出不到一半的东西,估计是没有再面的机会了。
ps.好多川大的研究生哦,看到好几个,压力大。