发布于 2014-09-24 10:15:41 | 13406 次阅读 | 评论: 9 | 来源: 网友投递
腾讯
腾讯控股有限公司(腾迅)是一家民营IT企业,成立于1998年11月29日,总部位于中国广东深圳,是中国最大的互联网综合服务提供商之一,也是中国服务用户最多,最广的互联网企业之一。
本文是一份2014年的腾讯开发工程师面试题,并附有网友的解答,感兴趣的同学参考下
一 不定项选择题(共25题,每题4分,共100分,少选、错选、多选均不得分)
1 已知一棵二叉树,如果先序遍历的节点顺序是:ADCEFGHB,中序遍历是:CDFEGHAB,则后序遍历结果为:(D)
A.CFHGEBDA B.CDFEGHBA C.FGHCDEBA D.CFHGEDBA
根据先序遍历和中序遍历能唯一确定二叉树:
注意:要想唯一确定一颗二叉树,必须已知两种遍历,并且其中必须有中序,因为先序和后序不能确定左右子树,如下图所示:
从上图中我们可以看出,没有中序是不能确定一颗树的!
2 下列哪两个数据结构,同时具有较高的查找和删除性能?(CD)
A.有序数组 B.有序链表 C.AVL树 D.Hash表
数组的删除性能比较差,而链表的查找性能比较差!
3 下列排序算法中,哪些时间复杂度不会超过nlogn?(BC)
A.快速排序 B.堆排序 C.归并排序 D.冒泡排序
快排和冒泡排序在最坏情况下的时间复杂度是O(n^2);
4 初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为:(A)
A.8 3 2 5 1 6 4 7
B.3 2 8 5 1 4 6 7
C.3 8 2 5 1 6 7 4
D.8 2 3 5 1 4 7 6
建立小根堆的过程如下图所示:
5 当n=5时,下列函数的返回值是:(A)
int
foo(
int
n){
if
(n<2){
return
n;
}
else
return
foo(n-1)+foo(n-2);
}
A.5 B.7 C.8 D.10
6 S市A,B共有两个区,人口比例为3:5,据历史统计A的犯罪率为0.01%,B区为0.015%,现有一起新案件发生在S市,那么案件发生在A区的可能性有多大?(C)
A.37.5% B.32.5% C.28.6% D.26.1%
3*0.01% /( 3*0.01%+5*0.015%)=28.6%
7 Unix系统中,哪些可以用于进程间的通信?(ABCD)
进程间通信主要包括管道, 系统IPC(包括消息队列,信号量,共享存储), SOCKET.
A.Socket B.共享内存 C.消息队列 D.信号量
8 静态变量通常存储在进程哪个区?(C)
A.栈区 B.堆区 C.全局区 D.代码区
栈区一般用于存储比较小的临时变量;
堆区一般用于存储比较大的临时变量;
代码区用于存储代码;
全局区用于存储全局变量,静态变量等。
9 查询性能(B)
A. 在Name字段上添加主键
B. 在Name字段上添加索引
C. 在Age字段上添加主键
D. 在Age字段上添加索引
如果经常依据特定的字段搜索表或对表的记录进行排序,则可以通过创建该字段的索引来加快执行这些操作的
10 IP地址131.153.12.71是一个(B)类IP地址。
A.A B.B C.C D.D
A类:0打头
B类:10打头
C类:110打头
D类:1110打头
11 下推自动识别机的语言是:(C)
A. 0型语言 B.1型语言 C.2型语言 D.3型语言
参考:维基百科
http://zh.wikipedia.org/wiki/%E4%B8%8B%E6%8E%A8%E8%87%AA%E5%8A%A8%E6%9C%BA
12 下列程序的输出是:(D)
#define add(a+b) a+b
int
main()
{
printf
(
"%d\n"
,5*add(3+4));
return
0;
}
5*3+4=19
A.23 B.35 C.16 D.19
13 浏览器访问某页面,HTTP协议返回状态码为403时表示:(B)
A 找不到该页面
B 禁止访问
C 内部服务器访问
D 服务器繁忙
14 如果某系统15*4=112成立,则系统采用的是(A)进制。
A.6 B.7 C.8 D.9
逐个带入即可:
对于6进制而言:15的十进制就是11;112的十进制就是44,11*4=44。
15 某段文本中各个字母出现的频率分别是{a:4,b:3,o:12,h:7,i:10},使用哈夫曼编码,则哪种是可能的编码:(A)
A a(000) b(001) h(01) i(10) o(11)
B a(0000) b(0001) h(001) o(01) i(1)
C a(000) b(001) h(01) i(10) o(00)
D a(0000) b(0001) h(001) o(000) i(1)
16 TCP和IP分别对应了OSI中的哪几层?(CD)
A Application layer
B Presentation layer
C Transport layer
D Network layer
TCP是传输层协议
IP是网络层协议
17 一个栈的入栈序列是A,B,C,D,E,则栈的不可能的输出序列是?(C)
A.EDCBA B.DECBA C.DCEAB D.ABCDE
A:全部入栈后出战
B:ABC入栈,D入栈然后出栈,E入栈然后出栈
C:不可能,
D:A入栈然后出栈,B入栈然后出栈,...
18 同一进程下的线程可以共享以下?(BD)
A. stack B.data section C.register set D.file fd
每个线程包括:
线程状态: 线程当前的状态。
一个执行栈
私有的数据区: 用于每个线程局部变量的静态存储空间
寄存器集: 存储处理器的一些状态
19 对于派生类的构造函数,在定义对象时构造函数的执行顺序为?(D)
1:成员对象的构造函数
2:基类的构造函数
3:派生类本身的构造函数
A.123 B.231 C.321 D.213
20 如何减少换页错误?(BC)
A 进程倾向于占用CPU
B 访问局部性(locality of reference)满足进程要求
C 进程倾向于占用I/O
D 使用基于最短剩余时间(shortest remaining time)的调度机制
SRT算法(SPN算法的抢占式版本):总是选择剩余时间最短的进程运行。
因为时间短的结束运行快,不需要频繁切换进程(导致刷新内存),所以换页错误发生的概率就减少了
21 递归函数最终会结束,那么这个函数一定?(B)
A 使用了局部变量
B 有一个分支不调用自身
C 使用了全局变量或者使用了一个或多个参数
D 没有循环调用
22 编译过程中,语法分析器的任务是(B)
A分析单词是怎样构成的
B 分析单词串是如何构成语言和说明的
C 分析语句和说明是如何构成程序的
D 分析程序的结构
23 同步机制应该遵循哪些基本准则?(ABCD)
A.空闲让进 B.忙则等待 C.有限等待 D.让权等待
24 进程进入等待状态有哪几种方式?(ABCD)
A CPU调度给优先级更高的线程(运行态转为就绪态)
B 阻塞的线程获得资源或者信号(阻塞态转为就绪态)
C 在时间片轮转的情况下,如果时间片到了(运行态转为就绪态)
D 获得spinlock未果(运行态转为就绪态)
25 设计模式中,属于结构型模式的有哪些?(BC)
A 状态模式 B 装饰模式 C 代理模式 D 观察者模式
二、填空题(共4题10个空,每空2分,共20 分)
1 设有字母序列{Q,D,F,X,A,P,N,B,Y,M,C,W},请写出按二路归并方法对该序列进行一趟扫描后的结果为DQFXAPBNMYCW。
将字母分成两两(二路)一组,然后组内有序。
2 关键码序列(Q,H,C,Y,Q,A,M,S,R,D,F,X),要按照关键码值递增的次序进行排序,若采用初始步长为4的Shell的排序法,则一趟扫描的结果是QACSQDFXRHMY;若采用以第一个元素为分界元素的快速排序法,则扫描一趟的结果是FHCDQAMQRSYX。
希尔排序就是分组插入排序。
快排的思想:
设置两个指针,分别执行序列头(i)和序列尾(j)。
以第一元素(key)为分界,从最后一个元素开始判断,若该元素大于key,指针j向前移动;若小于,则使用该元素覆盖
指针i所指向的元素,然后i向后移动,并判断i指向的元素是否小于key,若小于,i向后移动,若大于,用i指向的元素覆盖j,同时j向前移动,直到i==j,然后在该位置上放入key,则序列以key为界分为两个子序列,然后递归,直到序列长度为1.
3 二进制地址为011011110000,大小为(4)10和(16)10块的伙伴地址分别为:011011110100,011100000000。
伙伴块必须满足的条件是:(1)两个块具有相同的大小,记作b。(2)它们的物理地址是连续的。(3)第一块的第一个页的物理地址是2*(2^b)的倍数。
4 设t是给定的一棵二叉树,下面的递归程序count(t)用于求得:二叉树t中具有非空的左、右两个儿子的结点个数N2;只有非空左儿子的个数NL;只有非空右儿子的结点个数NR和叶子结点个数N0。N2,NL,NR、N0都是全局量,且在调用count(t)之前都置为0。
typedef
struct
node
{
int
data;
struct
node *lchild,*rchild;
}node;
int
N2,NL,NR,N0;
void
count(node *t)
{
if
(t->lchild!=NULL)
if
(t->rchild!=NULL) N2++;
else
NL++;
else
if
(t->rchild!=NULL) NR++;
else
N0++;
if
(t->lchild!=NULL) count(t->lchild);
if
(t->rchild!=NULL) count(t->rchild);
}
/* call form :if(t!=NULL) count(t);*/
腾讯的工资还不错,不过据说现在不如阿里高。