腾讯阿里巴巴软件开发类笔试考试习题.docx
《腾讯阿里巴巴软件开发类笔试考试习题.docx》由会员分享,可在线阅读,更多相关《腾讯阿里巴巴软件开发类笔试考试习题.docx(19页珍藏版)》请在冰豆网上搜索。
腾讯阿里巴巴软件开发类笔试考试习题
腾讯2014校园招聘软件开发类笔试试题
考试时长:
120分钟
一 不定项选择题(共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.冒泡排序
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;
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%
7 Unix系统中,哪些可以用于进程间的通信?
(BCD)
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
11 下推自动识别机的语言是:
(C)
A. 0型语言 B.1型语言 C.2型语言 D.3型语言
12 下列程序的输出是:
(D)
#define add(a+b) a+b
int main()
{
printf(“%d\n”,5*add(3+4));
return 0;
}
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
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
17 一个栈的入栈序列是A,B,C,D,E,则栈的不可能的输出序列是?
(C)
A.EDCBA B.DECBA C.DCEAB D.ABCDE
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)的调度机制
21 递归函数最终会结束,那么这个函数一定?
(B)
A 使用了局部变量
B 有一个分支不调用自身
C 使用了全局变量或者使用了一个或多个参数
D 没有循环调用
22 编译过程中,语法分析器的任务是(B)
A分析单词是怎样构成的
B 分析单词串是如何构成语言和说明的
C 分析语句和说明是如何构成程序的
D 分析程序的结构
23 同步机制应该遵循哪些基本准则?
(ABCD)
A.空闲让进 B.忙则等待 C.有限等待 D.让权等待
24 进程进入等待状态有哪几种方式?
(D)
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。
3 二进制地址为011011110000,大小为(4)10和(16)10块的伙伴地址分别为:
_________,_________。
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);*/
三、其他方向简答题(共2题,每题20分),选作题,不计入总分)
1 请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在队列中所处的位置和变化,队伍可能随时有人加入和退出;当有人退出影响到用户的位置排名时需要及时反馈到用户。
2 A,B两个整数集合,设计一个算法求他们的交集,尽可能的高效。
阿里巴巴2014秋季校园招聘-软件研发工程师笔试题
2013-09-2122:
381089人阅读评论(4)收藏举报
校园招聘阿里巴巴软件研发算法XX
1.单选题
1.假设把整数关键码K散列到N个槽列表,以下哪些散列函数是好的散列函数
A:
h(K)=K/N;
B:
h(K)=1;
C:
h(K)=KmodN;
D:
h(K)=(K+rand(N))modN,rand(N)返回0到N-1的整数
答案:
D
2.下面排序算法中,初始数据集的排列顺序对算法的性能无影响的是:
A:
堆排序B:
插入排序
C:
冒泡排序D:
快速排序
答案:
A(插入排序:
最优时间复杂度O(n)最差时间复杂度O(n^2)平均时间复杂度O(n^2)
冒泡排序:
最优时间复杂度O(n)最差时间复杂度O(n^2)平均时间复杂度O(n^2)
快速排序:
最优时间复杂度O(nlogn)最差时间复杂度O(n^2)平均时间复杂度O(nlogn)
堆排序:
最优时间复杂度O(nlogn)最差时间复杂度O(nlogn)平均时间复杂度O(nlogn))
3.下面说法错误的是:
A:
CISC计算机比RISC计算机指令多
B:
在指令格式中,采用扩展操作码设计方案的目的是为了保持指令字长不变而增加寻址空间
C:
增加流水线段数理论上可以提高CPU频率
D:
冯诺依曼体系结构的主要特征是存储程序的工作方式
答案:
B
4.不属于冯诺依曼体系结构必要组成部分是:
A:
CPUB:
CacheC:
RAMD:
ROM
答案:
B
5.一个栈的入栈序列式ABCDE则不可能的出栈序列是:
A:
DECBAB:
DCEBAC:
ECDBAD:
ABCDE
答案:
C
6.你认为可以完成编写一个C语言编译器的语言是:
A:
汇编B:
C语言C:
VBD:
以上全可以
答案:
D
7.关于C++/JAVA类中的static成员和对象成员的说法正确的是:
A:
static成员变量在对象构造时候生成
B:
static成员函数在对象成员函数中无法调用
C:
虚成员函数不可能是static成员函数
D:
static成员函数不能访问static成员变量
答案:
A
8:
答案:
C
9:
某进程在运行过程中需要等待从磁盘上读入数据,此时进程的状态将:
A:
从就绪变为运行B:
从运行变为就绪
C:
从运行变为阻塞D:
从阻塞变为就绪
答案:
C
10:
下面算法的时间复杂度为:
Intf(unsignedintn)
{
If(n==0||n==1)
Return1;
Else
Returnn*f(n-1);
}
A:
O
(1)B:
O(n)C:
O(N*N)D:
O(n!
)
答案:
B
11:
n从1开始,每个操作可以选择对n加1或者对n加倍。
若想获得整数2013,最少需要多少个操作。
A:
18B:
24C:
21D;不可能
答案:
A,对2013用除法,显示2013->2012->1006->503->502->251->250->125->124->62->31->30->15->14->7->6->3->2->1
正向只能是+1和×2,所以逆向只能-1和/2,由上过程可得18次
12:
对于一个具有n个顶点的无向图,若采用邻接表数据结构表示,则存放表头节点的数组大小为:
A:
nB:
n+1C:
n-1D:
n+边数
答案:
A
13:
答案:
A.对于几何中的每个字符串取hash可以看作是同分布的独立重复事件,所以每一个事件出现10的概率都是p=1/1024,那么当出现的时候,期望的次数就是1/p,1024.
14:
如下函数,在32bit系统foo(2^31-3)的值是:
Intfoo(intx)
{
Returnx&-x;
}
A:
0B:
1C:
2D:
4
答案:
B
15:
对于顺序存储的线性数组,访问节点和增加节点删除节点的时间复杂度为:
A:
O(n),O(n)B:
O(n),O
(1)C:
O
(1),O(n)D:
O(n),O(n)
答案:
C
16:
在32为系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是:
StructA
{
Inta;
shortb;
intc;
chard;
};
StructB
{
inta;
shortb;
charc;
intc;
};
A:
16,16B:
13,12C:
16,12D:
11,16
答案:
C
17:
袋中有红球,黄球,白球各一个,每次任意取一个放回,如此连续3次,则下列事件中概率是8/9的是:
A:
颜色不全相同B:
颜色全不相同C:
颜色全相同D:
颜色无红色
答案:
A
18:
一个洗牌程序的功能是将n张牌的顺序打乱,以下关于洗牌程序的功能定义说法最恰当的是:
A:
每张牌出现在n个位置上的概率相等
B:
每张牌出现在n个位置上的概率独立
C:
任何连续位置上的两张牌的内容独立
D:
n张牌的任何两个不同排列出现的概率相等
答案:
A
19:
用两种颜色去染排成一个圈的6个棋子,如果通过旋转得到则只算一种,一共有多少种染色:
A:
10B:
11C:
14:
D:
15
答案:
C
解释:
应该有14种方案,设只有黑白两色,默认白色,那么,用p(n)表示有n个黑棋的种类
p(0)=p(6)=1
p
(1)=p(5)=1
p
(2)=p(4)=3//相邻的一种,隔一个的一种,两个的一种
p(3)=4//都相邻的一种,BB0B的一种,BB00B的一种,B0B0B的一种,一共4种
综上是14种
20:
递归式的先序遍历一个n节点,深度为d的二叉树,则需要栈空间的大小为:
A:
O(n)B:
O(d)C:
O(logn)D:
(nlogn)
答案:
B
第二部分:
多选
21:
两个线程运行在双核机器上,每个线程主线程如下,线程1:
x=1;r1=y;线程2:
y=1;r2=x;
X和y是全局变量,初始为0。
以下哪一个是r1和r2的可能值:
A:
r1=1,r2=1
B:
r1=1,r2=0
C:
r1=0,r2=0
D:
r1=0,r2=1
答案:
ABD
22.关于Linux系统的负载,以下表述正确的是:
A:
通过就绪和运行的进程数来反映
B:
通过TOP命令查看
C:
通过uptime查看
D:
Load:
2.5,1.3,1.1表示系统的负载压力在逐渐变小
答案:
BC(对于A不确定)
23:
关于排序算法的以下说法,错误的是:
A:
快速排序的平均时间复杂度O(nlogn),最坏O(N^2)
B:
堆排序平均时间复杂度O(nlogn),最坏O(nlogn)
C:
冒泡排序平均时间复杂度O(n^2),最坏O(n^2)
D:
归并排序的平均时间复杂度O(nlogn),最坏O(n^2)
答案:
D
解释:
归并排序的平均时间复杂度O(nlogn),最坏O(nlogn)
24:
假设函数rand_k会随机返回一个【1,k】之间的随机数(k>=2),并且每个证书出现的概率相等。
目前有rand_7,通过调用rand_7()和四则运算符,并适当增加逻辑判断和循环控制逻辑,下列函数可以实现的有:
A:
rand_3B:
rand_21C:
rand_23D:
rand_49
答案:
ABCD
解释:
对于rand_x(x<7)的直接截断,只要rand数大于x直接忽略,保证rand_x能够做到概率相等。
而对于其他的则采用7×rand_7+rand_7,可以-7得到rand_49,然后截断成rand_42,统一除以2,则是rand_21,其他类似。
阿里巴巴2014秋季校园招聘-软件研发工程师笔试题续
2013-09-2123:
32368人阅读评论(0)收藏举报
校园招聘XX阿里巴巴软件研发算法
第三部分
25、某二叉树的前序遍历序列为-+a*b-cd/ef,后序遍历序列为abcd-*+ef/-,问其中序遍历序列是——。
答案:
a+b*c-d-e/f
26、某缓存系统采用LRU淘汰算法,假定缓存容量为4,并且初始为空,那么在顺序访问以下数据项的时候1,5,1,3,2,4,1,2出现缓存命中的次数是——。
最后缓存中即将准备淘汰的数据项是——。
答案:
3,3
解释:
(LRU是LeastRecentlyUsed近期最少使用算法。
)1-》1,5-》5,1-》5,1,3-》5,1,3,2-》1,3,2,4-》3,2,4,1-》3,4,1,2-》
首先1调入内存,然后5调入内存,然后1调入内存(命中缓存),然后3调入内存,然后2调入内存,然后4调入内存(将最少使用的5置换出内存),然后1调入内存(命中缓存),然后2调入内存(命中缓存)。
最后,最少使用的3将面临被置换出的危险。
27、两个较长的单向链表a和b,为了找出及诶单noed满足nodeina并且nodeinb。
请设计空间使用尽量小的算法(用c/c++,java或者伪代码)
[html]viewplaincopyprint?
1structnode
2{
3intv;
4node*next;
5};
6/*
7返回链表的长度
8链表为空返回0
9*/
10size_tlistLen(node*p)
11{
12size_tnum=0;
13while(p!
=NULL)
14{
15num++;
16p=p->next;
17}
18returnnum;
19}
20//如果找到了则返回指针指向公共节点
21//如果不存在则返回空指针
22node*findFirstCommenNode(node*pheada,node*pheadb)
23{
24size_tlenA=listLen(pheada);
25size_tlenB=listLen(pheadb);
26
27node*plistA=pheada;
28node*plistB=pheadb;
29//调整长度
30//plistA指向较长的一个
31if(lenA32{
33plistB=pheada;
34plistA=pheadb;
35size_tt=lenA;
36lenA=lenB;
37lenB=t;
38}
39while(lenA>lenB)
40{
41plistA=plistA->next;
42--lenA;
43}
44//一样长了
45//寻找公共节点
46while(plistA!
=NULL&&plistA!
=plistB)
47{
48plistA=plistA->next;
49plistB=plistB->next;
50}
51returnplistA;
52}
structnode
{
intv;
node*next;
};
/*
返回链表的长度
链表为空返回0
*/
size_tlistLen(node*p)
{
size_tnum=0;
while(p!
=NULL)
{
num++;
p=p->next;
}
returnnum;
}
//如果找到了则返回指针指向公共节点
//如果不存在则返回空指针
node*findFirstCommenNode(node*pheada,node*pheadb)
{
size_tlenA=listLen(pheada);
size_tlenB=listLen(pheadb);
node*plistA=pheada;
node*plistB=pheadb;
//调整长度
//plistA指向较长的一个
if(lenA{
plistB=pheada;
plistA=pheadb;
size_tt=lenA;
lenA=lenB;
lenB=t;
}
while(lenA>lenB)
{
plistA=plistA->next;
--lenA;
}
//一样长了
//寻找公共节点
while(plistA!
=NULL&&plistA!
=plistB)
{
plistA=plistA->next;
plistB=plistB->next;
}
returnplistA;
}
算法的空间复杂度O
(1),时间复杂度O(m+n)。
28、当存储数据量超出单节点数据管理能力的时候,可以采用的办法有数据库sharding的解决方案,也就是按照一定的规律把数据分散存储在多个数据管理节点N中(节点编号为0,1,2,,,,N-1)。
假设存储的数据时a请完成为数据a计算存储节点的程序。
[html]viewplaincopyprint?
53#defineN5
54inthash(intelement){
55returnelement*2654435761;
56}
57intshardingIndex(inta){
58intp=hash(a);
59_________________________;//这里是空格
60returnp;
61}
#defineN5
inthash(intelement){
returnelement*2654435761;
}
intshardingIndex(inta){
intp=hash(a);
_________________________;//这里是空格
returnp;
}
答案:
p%=N
29、宿舍内5个同学一起玩对战游戏。
每场比赛有一些人作为红方,另一些人作为蓝方。
请问至少需要多少场比赛,才能使任意两个人之间有一场