您的位置:首页 > 其它

阿里巴巴2015实习生笔试真题

2015-08-22 10:03 369 查看
1.有两个N*N的矩阵A和B,想要在PC上按矩阵乘法基本算法编程实现计算A*B。假设N较大,本机内存也很大,可以存下A、B和结果矩阵。那么,为了计算速度,A和B在内存中应该如何存储(按行存指先存储第一行,再第二行,直到最后一行;按列存指先存储第一列,再第二列,直到最后一列)?

A.A按行存,B按行存。

B.A按行存,B按列存。

C.A按列存,B按行存。

D.A按列存,B按列存。

答案:A

想到的是传统矩阵相乘的方法,时间复杂度为O(n3 ),但是这不是最优的方法,最优方法为Strassen矩阵相乘发,时间复杂度降低为O(n2.81),用分治的思想将矩阵分块计算,在这个算法中按行存储更有利。所以正确答案为A。

2.IP数据报头采用()字节序,在此字节序下从低地址到高地址0x1234的表示形式为 () 。

A.big_endian,0x12 0x34 0 0

B.little_endian,0x34 0x12 0 0

C.big_endian,0 0 0x12 0x34

D.little_endian, 0 0 0x34 0x12

答案:C

big_endian:高位在低地址;

small-endian:地位在低地址。

3.设集合A={1,2,3},A上的关系R={(1,1),(2,2),(2,3),(3,2),(3,3)},则R不具备 ()?

A.自反性

B.传递性

C.对称性

D.反对称性

答案:D

假设集合A,以及基于A上的关系R

自反: 如果a是A的元素,那么<a,a>是R的元素

反自反: 如果a是A的元素,那么<a,a>不是R的元素

对称:如果<a,b>是R的元素,那么<b,a>是R的元素

反对称:如果<a,b>,<b,a>是R的元素,那么a,b相等

传递:如果<a,b>,<b,c>是R的元素,那么<a,c>是R的元素

4.无锁化编程有哪些常见方法?

A.针对计数器,可以使用原子加

B.只有一个生产者和一个消费者,那么就可以做到免锁访问环形缓冲区(Ring Buffer)

C.RCU(Read-Copy-Update),新旧副本切换机制,对于旧副本可以采用延迟释放的做法

D.CAS(Compare-and-Swap),如无锁栈,无锁队列等待

答案:D

A 这方法虽然不太好,但是常见

B ProducerConsumerQueue就是这个,到处都是

C linux kernel里面大量使用

D 本质上其实就是乐观锁,操作起来很困难。。单生产者多消费者或者多生产者单消费者的情况下比较常见,也不容易遇到ABA问题。

5. 以下措施中,不可能改进分布式系统读写(IO)性能的有____。

A.网络从千兆网升级为万兆网

B.优化调度系统,尽量做到任务与数据相近(Locality)

C.数据预取机制

D.实现异步读写机制

答案:D

异步IO就是调用系统IO来完成实际的IO操作,而不需要应用程序自己写代码完成IO,每次系统IO完成后给应用程序返回一个IO完成的信号,从而实现应用程序真的的异步无阻塞式的IO,异步IO可以提高应用程序的性能,而对操作系统IO没什么影响。影响分布式系统读写(IO)性能的关键因素应该是请求数据,而数据可能在别的机器上,所以ABC都能明显改善性能。至于D,感觉在非分布式系统上都已经出现了,貌似对 分布式系统读写(IO)性能的影响不大。

6.假定x=500,求下面函数的返回值______ 。
int fun(int x)
{
int countx = 0;
while (x)
{
countx++;
x = x & (x – 1);
}
return countx;
}A.2

B.3

C.5

D.6
答案:D

很有意思的一道题目,500(d)=(111110100)b,由于当x为2的整数次幂时,x&(x-1)==0,所以,500的二进制表示中有多少个二进制位就会循环多少次,问题得解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: