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、下列正则表达式不可以匹配“”的是()
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、写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵树中相差最大的两个节点间的差的绝对值。请注意程序效率。