腾讯面试
声明,腾讯笔试的时候曾填写过保密协议,题目是不准泄露的。可是今天面试的时候并没有填写保密协议什么的,想来也不会有什么侵权之类的。假设有,本文会无条件删除。
腾讯大范围的校招实习生,不知道成都要招多少人可是參加笔试的人直恐怖,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语言中的宏定义有什么坏处。以前在哪一本书上看到过具体的介绍,可是想不起来了,当时仅仅举了个非常easy的样例比方#define Max(a,b) a > b? a: b这样写会造成假设给的參数是1+2的会出错,须要加括号。另外可能使代码不太easy阅读,须要寻找原始的宏定义。反正记得有本书上讲的尽量少使用宏定义,理由给忘记了,悲催。
第五道题问c++的多态是怎样实现的。当时仅仅想到通过继承虚函数,在子类中实现其方法实现多态。忘了函数重载也是一种多态。最失误的不是这个,是他让我当时就写代码实现我所说的多态,忘记keyword了,没有写。汗… 他说连主要的keyword都没有记住???我仅仅能说大一的时候学过c++后来就差点儿相同忘了,思想是知道详细代码没有写好。如今想应该是一个virtualkeyword吧,基础不扎实。
第六道题问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学得不多,一直没搞懂他里面的对象,笨死了。太诚实了,直接说自己刚才说错不就得了,还说自己不太熟悉,笨哦。
第十五题,问了一下假设我自己的server,就自己的程序挂掉了,有没有方法让我提供的服务继续提供。我想server挂掉了,怎么提供服务啊,就说导向一个友好页面,他不惬意,说算了。让我直接想,我想不出来就算了。
第十六道题是问的gdb的非常多命令,比方打印,单步,执行等等。
第十七道题是问的数据库的,可是问的都比較基础,比方插入语句。然后问了replace和update语句的差别,根本没实用过replace,悲剧,不知道。
第十八题是问的什么是贪心算法,以及什么情况下使用贪心算法。
其它另一些零零星星的小问题,忘记了。反正感觉非常不好,非常多问题答的相当不好。面试官比較和蔼,人还能够,长的也挺好的,以后希望自己也能那样。反正仅仅答出不到一半的东西,预计是没有再面的机会了。
ps.好多川大的研究生哦,看到好几个,压力大。