2015阿里校招研发工程师笔试题

1、C++内存分配中说法错误的是()

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

  //错,对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,它的生长方向是向下的,是向着内存地址减小的方向增长

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

  //对,对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。对于栈来讲,则不会存在这个问题,因为  //栈是先进后出的队列,他们是如此的一一对应,以至于永远都不可能有一个内存块从栈中间弹出,在他弹出之前,在他上面的后进的栈内容已经被弹   //出,详细的可以参考数据结构

  C 堆容易产生memory leak

  //对,对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak

  D 堆的效率比栈要低很多

  //对,栈是机器系统提供的数据结构,计算机会在底层对栈提供支持:分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的  //效率比较高。堆则是C/C++函数库提供的,它的机制是很复杂的,例如为了分配一块内存,库函数会按照一定的算法(具体的算法可以参考数据结构操  //作系统)在堆内存中搜索可用的足够大小的空间,如果没有足够大小的空间(可能是由于内存碎片太多),就有可能调用系统功能去增加程序数据段的  //内存空间,这样就有机会分到足够大小的内存,然后进行返回。显然,堆的效率比栈要低得多。

  E 栈变量引用容易逃逸

  //对

  F 以上都对

 研究栈和堆可以从下面的几个方面来:

1、管理方式不同; 2、空间大小不同; 3、能否产生碎片不同; 4、生长方向不同; 5、分配方式不同; 6、分配效率不同;

2、全班100个学生,老师让玩如下一个游戏:每个学生在纸上写一个1到100之间的整数(含1和100),不能参考别人写的数字,谁的数字最接近所有数字的3/4,谁就会获得100元。下面的数字中,最糟糕的选择是()

A 1

B 2

C 10

D 20

E 50

F 80

3、下列正则表达式不可以匹配“www.alibaba-inc.com”的是()

A ^w+.W+-w+.w+$

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

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

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

E ^w.*com$

F [w]{3}.[a-z-]{11}.[a-z]{3}   //错

4、关于UNIX系统代码段和数据段分开的目的,错误的说法有()

A 可共享正文  //对

B 可共享数据

C 可重入  

D 可保护代码为只读

E 方便编程

F 更好支持内存回收策略

5、下列关键字序列为堆的是()

A 100,60,70,50,32,65  //对

B 60,70,65,50,32,100 

C 65,100,70,32,50,60 

D 70,65,100,32,50,60

E 32,50,100,70,65,60

F 50,100,70,65,60,32

堆是这样的二叉树:所有孩子节点的值都大于(或小于)本节点的值,都孩子节点的值都大于的本节点的堆,叫小根堆,否则叫大根堆

 

6、用6块1*2的完整瓷砖,铺满2*6的地面,一共有()种不同铺法,不允许将瓷砖划分为小瓷砖。

A 13   B 15   C 22   D 24   E 25   F 26

7、设m和n都是int类型,那么一下for循环语句()

for(m=0,n=-1;n=0;m++,n++)n++;

A 循环体一次也不执行

B 循环体执行一次

C 无限循环

D 有限次循环

E 循环结束判断条件不合法

F 运行出错

8、带头结点的单链表head为空的判断条件是()

A head==NULL

B head->next=NULL  //对

C head->next==head

D head!=NULL

E *head==NULL

F *(head->next)==NULL

9、硬币游戏:连续仍硬币,直到某一人获胜。A获胜条件是先正后反,B获胜条件是出现连续两次反面,问AB游戏时A获胜的概率()

A 1/6  B 1/4  C 1/3  D 1/2 //对 E 2/3  F 3/4 

10、一个函数定义的返回值是float,它不能在return语句中返回的值得类型是()

A char B int  C float  D long  E double  F 以上都可以

11、在一下操作中,数组比线性表速度更快的是()

A 原地逆序   B 头部插入   C 返回中间节点

D 返回头部节点//对  E 选择随机节点

12、已知某二叉树前序为(1-2-3-4-5-6-7-8-9),中序为(2-3-1-6-7-8-5-9-4),则它的后续为()

A 3-2-8-7-6-9-5-4-1  //对

B 1-2-6-5-4-3-8-7-9

C 5-4-2-1-3-7-6-9-8

D 2-3-5-4-6-7-9-1-8

E 3-2-1-4-5-9-8-6-7

F 3-2-1-8-7-6-9-5-4

13、某团队有2/5的人会写java程序,有3/4的人会写C++程序,这个团队里同时会写java和C++的最少()人。

A 3  B 4  C 5  D 8  E 15  F 20

14、某团队负责人接到一个紧急项目,他要考虑在代号为ABCDEF这6个团队成员中的部分人员参加项目开发工作。人选必须满足一下各点:

AB两人中至少一个人参加

AD不能都去

AEF三人中要派两人

BC两人都去或都不去

CD两人中有一人参加

若D不参加,E也不参加

那么最后()参加紧急项目开发。

A ECEF    B AF     C ECF    D F    E ABCF    F ECDEF

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

A 19 43 40 4 79 11 76

B 40 43 19 11 4 76 79 //对

C 40 43 76 79 19 11 4

D 40 43 76 79 4 11 19

E 40 43 76 79 11 4 19

F 40 19 11 4 79 76 43

最短寻道时间优先磁盘调度算法:其要求访问的磁道与当前磁头所在的磁道距离最近,一时每次的寻道时间最短!

16、把校园同一区域的两张不同比例尺的地图叠放在一起,并且使其中较小尺寸的地图完全在较大尺寸的地图的覆盖下。在每张地图上都有经纬坐标,显然,这两个坐标系并不同。我们把恰好重叠在一起的两个相同的坐标称之为重合点,下面关于重合点的说法正确的是()

A 可能不存在重合点

B 必然有且仅有一个重合点

C 可能有无穷多个重合点

D 重合点构成了一条直线

E 重合点可能在小地图之外

F 重合点是一小片连续的区域

17、若路由器接收的IP报文的目的地址不是路由器的接口IP地址,并且未匹配的路由项,则采取策略是(A

A 丢掉该分组 B 将该分组分片 C 转发该分组 D 将分组转发或分片 E 将分组保留存储 F 都有可能

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

A (AB)C  B A(BC)   C (AC)B

D (BC)A   E (CA)B  F 以上效率相同

19、有字符序列(Q,H,C,Y,P,A,M,S,R,D,F,X),新序列(F,H,C,D,P,A,M,Q,R,S,Y,X)是下列()排序算法一趟扫描结果。

A 二路归并排序    B 快速排序   C 步长为4的希尔排序  D 步长为2的希尔排序 E 冒泡排序 F 堆排序

20、不记得了。

 

附加题:

1、 给定一个query和一个text,均由小写字母组成。要求在text中找出以同样顺序连续出现在query中最长连续字母序列的长度。例如,query 为“acbac”,text为“acaccbabb”,那么text中的“cba”为最长的连续出现在query中的字符序列,因此,返回结果应该为其长 度3。请注意程序效率。

2、写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵树中相差最大的两个节点间的差的绝对值。请注意程序效率。

原文地址:https://www.cnblogs.com/sxmcACM/p/3946383.html