2015阿里校园招聘笔试题(8.29 测试开发工程师)

【注】因为换了博客,所以这篇是从我之前的博客里copy过来的。


这是8.29日阿里2015校招笔试题,题目来源于网络,所以题目可能略有问题,但大部分题目是正常的。这些题是网上各套题总结出的题库,稍后会继续更新不重复的。

答案都是自己做的,如果有不同意见欢迎讨论。。。

 

1. 小端序的机器中,如果

union X{

int x; 

char y[4];

};

如果:

X a;

a.x = 0x11223344;//16进制

则:____

a.y[0] = 11

a.y[1] = 11

a.y[2] = 11

a.y[3] =11

a.y[0] = 22

a.y[3] = 22

【析】大端字节序:高字节位于内存低地址;小端字节序:低字节位于内存低地址;

 

2.  下列关键字序列为堆的是:_____

100, 60, 70, 50, 32, 65

60,70, 65, 50, 32, 100

65,100, 70, 32, 50, 60

70,65, 100, 32, 50, 60

32,50, 100, 70, 65, 60

50,100, 70, 65, 60, 32 

【析】堆分为大堆排序和小堆排序,从最后一个非叶子节点开始,计算节点和其叶子节点的大小,若是大堆排序,则根节点大于叶子节点,若是小堆排序,则根节点小于叶子节点,并根据该原则进行调整。100, 60, 70, 50, 32, 65构造的最大堆

          100

     60         70

50   32   65

 

3. 有一个用数组C[1.,m]表示的环形队列,m为数组的长度。假设f为队头元素在数组中的位置,r为队尾元素的后一位置(按顺时针方向)。若队列非空,则计算队列中元素个数的公式应为?

(m+r-f)mod m

r-f

(m-r+f) mod m

(m-r-f) mod m

(r-f) mod m

需要判断边界

 

4.二分查找树里查询一个关键字的最坏时间复杂度是:_____

O(n)

O(nlogn)

O(n^2)

O(n^3)

O(logn)

不确定

【析】二分查找在一个有序数组里每次取(i+j)/2,即将中间的数和要找的数比较,再将前一半或者后一半的数组作为整部分重复上述操作。

二分查找最好为O(1), 最坏为O(logn)

 

5. 计算三个稠密矩阵A、B、C的乘积ABC,假定三个矩阵的尺寸分别为m*n,n*p,p*q,且m<n<p<q,以下计算顺序效率最高的是:______

(AB)C

A(BC)

(AC)B

(BC)A

(CA)B

以上效率相同

【析】AB的结果中每个元素是做了n次乘积后得到的,每行有p列,所以一行做了n*p次,共m行,所以计算AB时共进行mnp次乘积

以此类推,(AB)C= mnp + mpq;A(BC)= mnq + npq;……

mnp+mpq - mnq - npq <0

 

6. 假设某段通信电文仅由6个字母ABCDEF组成,字母在电文中出现的频率分别为2,3,7,15,4,6。根据这些频率作为权值构造哈弗曼编码,最终构造出的哈弗曼树带全路径与字母B的哈弗曼编码分别为:_____

86, 1011

70, 1000

86, 0001

70, 0010

92, 1000

92, 0100

【析】哈弗曼树的构造:在一堆数中取出最小的两个构造成一棵树,左子树值小于右子树值,根节点为两数之和,并将和添加到原数组中,一次类推,直到数组中只有一棵树。

             37

    15            22

               9        13

           4     5    6   7

                 2 3

 

7. 并发进程执行的相对速度是_____

由进程的程序结构决定

由进程本身来控制

进程被创建时决定

与进程调度策略有关

由内存分配策略决定

【析】相对速度,即哪个进程先哪个进程后

 

8. 下列C代码中,不属于未定义行为的有_____

int i = 0;i = (i++);

Char *p = "hello"; p[1] = 'E';

Char *p = "hello";char ch = *p++;

int i = 0; printf("%d%d\n", i++, i--);

都是未定义行为

都不是未定义行为

【析】未定义行为即未指明的行为,是C里的错误写法,但编译器不会报错,而不同的编译器对此有不同的处理方式

根据果壳网http://www.guokr.com/blog/471312/里的部分描述,可以将未定义行为分为以下几类(不全)

(1)  如a= 0,a += a++,即a = a+ a++,在a++完后a = 1,那么此时a+ a++是1+0呢还是0+0呢?这是未定义的,但是大部分编译器会编译成1+0

       又如同时printf a++ 和a--

(2)  数组越界char s[] = "hello"; s[18] = 'e';

(3) 对malloc,free了的内存的使用,如printf()

(4)  指针操作int *p; p = 0x12345678; p[8] = 24;

(5) 未初始化int x; printf("%d", x);

(6) char t[] = "No"; if(...){strcpy(t, "Yes");}//这个我也不是很清楚

 

9. 毕业典礼后,宿舍三位同学把自己的毕业帽扔了,随后每个人随机的捡起帽子,三个人中没有人选到自己原来带的帽子的概率是:____

1/2

1/3

1/4

1/6

1/8

1/9

【析】都捡对了:1/3* 1/2 * 1 = 1/6

            只有一个人捡对了:3 * 1/3 *1/2 * 1/1 = 3/6

            没人捡对:1 - 1/6 -3/6 = 1/3

 

10.村长带着4对父子参加爸爸去哪儿第三季第二站某村庄的拍摄。村里为了保护小孩不被拐走有个千年的规矩,那就是吃饭的时候小孩的左右只能是其他小孩或者自己的父母。那么4对父子在圆桌上共有____种坐法。(旋转一下,每个人面对的方向变更后算式一种新的坐法)

144

240

288

480

576

960

【析】爸儿儿儿儿爸爸爸:4 * 3 * 2 * 1 * 2 * 8 = 384

            爸儿儿爸爸儿儿爸: 4 * 3 * 2* 1 * 8 / 2 = 96      即共480

 

11.  分布式系统中,____不是可扩展性所需要的

无状态应用集群

分布式缓存

负载均衡

硬件共享存储

分而治之策略   //不确定

以上所有都是

 

12. 若干个等待访问磁盘者依次要访问的磁道为19,43,40,4,79,11,76,当前磁头位于40号柱面,若用最短寻道时间优先磁盘调度算法,则访问序列为:____

40,43,19,11,4,76,79

 

13. C++内存分配中说法错误的是:

对于栈来讲,生长方向是向上的,也就是向着内存地址增加的方向

对于堆,大量的new/delete操作会造成内存空间的不连续

堆容易产生memoryleak

堆的效率要比栈低很多

栈变量引用容易逃逸

以上都对 

【析】当一个对象的指针被多个方法或线程引用时,该指针发生了逃逸,逃逸分析优化之一就是栈上分配,即找到未逃逸的变量,将变量类的实例化内存直接在栈里分配,完成后继续调用栈内执行;

            堆需要malloc& free,手动分配& 回收。需要找到适合的大小的内存,所以效率低于栈

 

15. 下列关于网络编程错误的是:____。

UDP是不可靠服务

主动关闭的一端会出现TIMEWAIT状态

服务端编程会调用listen(),客户端也可以调用bind()

TCP建立和关闭连接都只需要三次握手

Linux通过提供socket接口来进行网络编程

长连接相对于短连接可以节省建立连接的时间

【析】主动关闭的一端会出现timewait状态,一是因为防止上一次连接中的包迷路后重新出现影响新连接,二是因为可靠的关闭TCP连接

           TCP的建立需要3次握手,(1)SYN = 1Seq = X(2)SYN = 1ACK = X + 1 Seq = Y (3)ACK = Y +1 Seq = Z

           关闭需要4次握手,(1)Fin = 1Ack = Z Seq = X(2)ACK = X +1 Seq = Z(3)Fin = 1Ack = X Seq = Y (4)ACK = YSeq = X

 

15. 在32位操作系统中,下列类型占用8个字符的为:____

short int  (2)

int   (4)

long

unsigned int  (4)

long long

char   (1)

 

16. int main(){fork()||fork();}共创建几个进程:3

【析】 若调用fork()函数的为主进程,则返回所创进程编号,若调用的为子进程,则返回0,所以后面的fork只被主进程调用,即,共创建2个子进程,1个主进程

 

17. 下列正则表达式不可以匹配www.alibaba-inc.com的是

^\w+\.\w+\-\w+\.\w+$

[w]{0,3}.[a-z\-]*.[a-z]+

[c-w.]{3,10}[.][c-w.][.][a]

[w][w][w][alibaba-inc]+[com]+

^\w.*com$

[w]{3}.[a-z\-]{11}.[a-z]{3}

【析】

\b:代表单词的开头或结尾,即单词的分界处   \bhi\b 表示hi

\d:代表数字  \d\d\d 表示3个数字

\s:任意空白字符

\w:字母、数字、下划线、汉子

. :非换行的任何字符

*:*前的内容重复任意次,可为0次

+:1次或者更多次

^, $:前者表示开头,后者表示结尾,^\d{5,12}$表示输入的整个为5-12个的数字

?:重复0次或者1次

{n}:重复n次,{n,}:重复大于等于n次,{m,n}:重复m-n次

[]:括起来的表示这里的内容选一个

():用()表示分组,可对()里的内容重复

\W,\S,\D,\B:匹配非上述对应的字符

[^X]:非X的字符

[^abcde]:非abcde这几个字母的任意字符

 

18. 50k的基本逆序数排序,哪种排序算法性能最优?

冒泡 n^2

改进冒泡 n^2

选择 n^2

快速 n^2

堆 nlogn

插入 n^2

 

19. 如果一个博物馆参观者到达的速率是每分钟20 人,平均每个人在馆内停留20

分钟,那么该博物馆至少需要容纳______人才行?

100 

200 

300 

400 

500 

600 

700 

800

 

20.  某足球队有四名外援,分别来自巴西、荷兰、意大利和美国。他们分别擅长前

锋、后卫或守门,其中:

①美国外援单独擅长守门;

②意大利外援不擅长前锋;

③巴西外援和另外某个外援擅长相同的位置;

④荷兰外援擅长的位置和巴西外援不同。

以上条件可以推出巴西外援擅长的位置是______。

前锋守门 

后卫

前锋或守门 

后卫或守门 

前锋或后卫

 

21. 下面描述中,唯一错误的是:

A. 本题有五个选项是正确的

B. B正确

C.D正确

D.DEF都正确

E. ABC中有一个错误

F. 如果ABCDE都正确,那么F也正确

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值