阿里巴巴2015实习生笔试

  出色的实习经验为你以后的职业生涯打造一个很好的基础,阿里巴巴的实习生涯更会为你的求职加分。以下是阿里巴巴2015实习生笔试,以供参考。

  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的元素,那么是R的元素

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

  对称:如果是R的元素,那么是R的元素

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

  传递:如果,是R的元素,那么是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)性能的影响不大。

本文已影响6827
上一篇: 下一篇:品质QC笔试

相关文章推荐

|||||