发布时间 : 星期四 文章71、阿里巴巴2014校园招聘笔试题及参考答案-研发工程师-哈尔滨站更新完毕开始阅读
14:如下函数,在32bit系统foo(2^31-3)的值是:
Int foo(int x) {
Return x&-x;
}
A: 0 B: 1 C:2 D:4
答案:C 2^31-3=2^(31-3)=2^28=30, 30&(-30)=2,30的二进制表示中1的最低位权值;
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)是:
Struct A {
Int a;short b;int c;char d;
};
Struct B
{int a;short b;char c;int c;};
A: 16,16 B:13,12 C:16,12 D:11,16
答案:C (内存对齐)
17:袋中有红球,黄球,白球各一个,每次任意取一个放回,如此连续3次,则下列事件中概率是8/9的是:
A: 颜色全相同 B:颜色全不相同C:颜色不全相同 D:颜色无红色
答案:C
18:一个洗牌程序的功能是将n张牌的顺序打乱,以下关于洗牌程序的功能定义说法最恰当的是:
A: 每张牌出现在n个位置上的概率相等
B: 每张牌出现在n个位置上的概率独立
C: 任何连续位置上的两张牌的内容独立
D: n张牌的任何两个不同排列出现的概率相等
答案:D
19:用两种颜色去染排成一个圈的6个棋子,如果通过旋转得到则只算一种,一共有多少种染色:
A: 10 B:11 C:14: D:15
答案:C
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表示系统的负载压力在逐渐变小
答案:ABC(认为答案应当是BCD,load是根据运行的进程数来判定的,不包括就绪,而且D选项,在链接中说明的是对多台机子负载的大小并不能说明机子性能的好坏,但是对同一台主机而言,肯定是数字越小,负载越小)
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
24:假设函数rand_k会随机返回一个【1,k】之间的随机数(k>=2),并且每个证书出现的概率相等。目前有rand_7,通过调用rand_7()和四则运算符,并适当增加逻辑判断和循环控制逻辑,下列函数可以实现的有:
A:rand_3 B:rand_21 C:rand_23 D:rand_49
答案:ABCD
25:某二叉树的前序遍历结果为-+a*b-cd/ef,后续遍历结果为abcd-*+ef/-,问其中中序遍历序列为:a+b*c-d-e/f
26. 某缓存系统采用LRU淘汰算法,假定缓存容量为4,并且初始为空,顺序访问以下数据项的时候:1,5,1,3,5,2,4,1,2,出现缓存直接命中的次数为:3 最后缓存数据中即将准备淘汰的数据项为:5
27.(6分)两个较长的单向链表a和b,为了找出node满足node in a并且node in b。请设计空间使用尽量小的算法(用c/c++,java 或者伪代码)
答案:先求出链表长度L1和L2,然后较长的链表先前进abs(L1-L2)步,然后逐一对比。
28. 当存储数据量超出单节点数据管理能力的时候,可以采用的办法有数据库 sharding的解决方案,也就是按照一定的规律把数据分散存储在多个 数据管理节点N中(节点编号为0,1,2,,,,N-1)。