1、下列关键字序列为堆的是______。
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
2、如果一个博物馆参观者到达的速率是每分钟 20 人,平均每个人在馆内停留20分钟,那么该博物馆至少需要容纳______人才行?
A、100 B、200 C、300 D、400 E、500 F、600
3、计算三个稠密矩阵 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
4、通过算法生成的随机数是“伪随机”的,也就是说,在设定好第一个数之后,后面的数字的序列是确定的,并且经过一个非常大的循环会回到第一个数的状态,然后周而复始。显然,摇号、抽奖的程序是不能通过伪随机数来实现的。现实中常常基于某种热噪声来实现真正的随机数。假定某热噪声是标准正态分布,那么能否将它转换成(0,1)区间上的均匀分布______。
A、忽略测量和计算误差,可以转换为(0,1)区间上的均匀分布 B、无法转换为(0,1)区间上的均匀分布 C、信息不足,无法判断
D、借助伪随机数生成算法可以转换为(0,1)区间上的均匀分布 E、仅仅靠伪随机数生成算法,就可以生成(0,1)区间上的均匀分布 F、以上说法都不对
5、有一个用数组 C[1..m]表示的环形队列,m 为数组的长度。假设 f 为队头元素在数组中的位置,r 为队尾元素的后一位置(按顺时针方向)。若队列非空,则计算队列中元素个数的公式应为_______。
A、(m+r-f)mod m B、r-f C、(m-r+f) mod m D、(m-r-f) mod m E、(r-f) mod m
6、某足球队有四名外援,分别来自巴西、荷兰、意大利和美国。他们分别擅长前 锋、后卫或守门,其中:
① 美国外援单独擅长守门;
② 意大利外援不擅长前锋;
③ 巴西外援和另外某个外援擅长相同的位置;
④ 荷兰外援擅长的位置和巴西外援不同。
以上条件可以推出巴西外援擅长的位置是______。
A、前锋 B、守门 C、后卫 D、前锋或守门 E、后卫或守门 F、前锋或后卫
7、二分查找树里查询一个关键字的最坏时间复杂度是______。
A、O(n) B、O(n log n) C、O(n^2) D、O(n^3) E、O(logn) F、不确定
8、假设某段通信电文仅由 6 个字母 ABCDEF 组成,字母在电文中出现的频率分别为2,3,7,15,4,6。根据这些频率作为权值构造哈夫曼编码,最终构造出的哈夫曼树带权路径长度与字母 B 的哈夫曼编码分别为______。(这里假定左节点的值小于右节点的值)
A、86,1011 B、70,1000 C、86,0001 D、70,0010 E、92,1000 F、92,0100
9、并发进程执行的相对速度是______。
A、由进程的程序结构决定 B、由进程本身来控制 C、进程被创建时决定
D、与进程调度策略有关 E、与进程的销毁时间有关 F、由内存分配策略决定
10、某团队有 2/5 的人会写 Java 程序,有 3/4 的人会写 C++程序,这个团队里同时会写 Java 和 C++的最少有______人。
A、3 B、4 C、5 D、8 E、15 F、20
11、有一个装过食盐的瓶子,容积是 w,在食盐用完之后,还有一些食盐粉末(体 积可以忽略)残留在瓶子壁上。现在要把该瓶子改装糖,给你 u 体积的纯净 水,用来清洗该瓶子。在每次清洗之后,瓶子里会残留至少 v 体积的水(食盐 溶液,可以忽略盐的体积) 。假设 w>u>v,请问下述哪种方式使用这些纯净 水,能把瓶子洗得最干净______。
A、 把所有的纯净水全部倒入瓶子,然后把水倒掉 B、将纯净水平均分成两份,用每一份清水洗一遍瓶子 C、每次注入体积为 v 的纯净水清洗瓶子,直到纯净水用尽
D、每次注入体积为 2v 的纯净水清洗瓶子,直到纯净水用尽 E、将用过的水重新诸如瓶子,多次清洗 F、以上方法清洗效果相同
12、下列 C 代码中,不属于未定义行为的有:______。
A、int i=0;i=(i++); B、char *p=”hello”;p[1]=’E’ C、char *p=”hello”;char ch=*p++
D、int i=0;printf(“%d%d\n”,i++ i--) E、都是未定义行为 F、都不是未定义行为
13、毕业典礼后,某宿舍三位同学把自己的毕业帽扔了,随后每个人随机地拾起帽子,三个人中没有人选到自己原来带的帽子的概率是_______。
A、1/2 B、1/3 C、1/4 D、1/6 E、1/8 F、1/9
14、村长带着 4 对父子参加爸爸去哪儿第三季第二站某村庄的拍摄。村里为了保护小孩不被拐走有个前年的规矩,那就是吃饭的时候小孩左右只能是其他小孩或者自己的父母。那么 4 对父子在圆桌上共有___种坐法。 (旋转一下,每个人面对的方向变更后算是一种新的坐法)
A、144 B、240 C、288 D、480 E、576 F、960
15、分布式系统中,______不是可扩展性所需要的
A、无状态应用集群 B、分布式缓存 C、负载均衡 D、硬件共享存储 E、分而治之的策略 F、以上所有都是
16、若干个等待访问磁盘者依次要访问的磁道为 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
17、C++内存分配中说法错误的是:______。(多选)
A、对于栈来讲,生长方向是向上的,也就是向着内存地址增加的方向 B、对于堆,大量的 new/delete 操作会造成内存空间的不连续
C、堆容易产生 memory leak D、堆的效率比栈要低得多 E、栈变量引用容易逃逸 F、以上都对
18、下列关于网络编程错误的是______。
A、UDP 是不可靠服务 B、主动关闭的一端会出现 TIME_WAIT 状态 C、服务端编程会调用 listen(),客户端也可以调用 bind()
D、TCP 建立和关闭连接都只需要三次握手 E、Linux 通过提供提供 socket 接口来进行网络编程 F、长连接相对短连接可以节省建立连接的时间
19、在 32 位操作系统中,下列类型占用 8 个字符的为______。
A、short int B、Int C long C、Unsigned int D、Long long E、Char F、Int
20、在小端序的机器中,如果
union X{ int x; char y[4]; };
如果:
X a;
a.x=0x11223344;//16 进制 则:______。
A、a.y[0]=0x11 B、a.y[1]=0x11 C、a.y[2]=0x11 D、a.y[3]=0x11 E、a.y[0]=0x22 F、a.y[3]=0x22
21、java 中的 wait()方法和 sleep()方法的区别是什么?
22、写一个函数,输入一个二叉树,树中每个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率。
23、给定一个 query 和一个 text,均由小写字母组成。要求在 text 中找出以同样的顺序连 续出现在 query 中的最长连续字母序列的长度。例如, query 为“acbac”,text 为 “acaccbabb”,那么 text 中的“cba”为最长的连续出现在 query 中的字母序列,因此, 返回结果应该为其长度 3。请注意程序效率。
1、A 2、D 3、A 4、A 5、A 6、C 7、A 8、A 9、D 10、A
11、C 12、C 13、B 14、D 15、F 16、B 17、AF 18、D 19、D 20、D
21、解析:
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。
在调用sleep()方法的过程中,线程不会释放对象锁。
而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备。
22、参考代码:
/** *1)先构造二叉树; *2)利用二叉树遍历的方法得到min和max即可; */ class Test{ public static void main(String[] args) { TestALBB mTestALBB=new TestALBB(); int array[]={1,5,-5,9,-10}; mTestALBB.createTree(array); int value=mTestALBB.getMax(); System.out.println("value: "+value); } } class TestALBB{ public int min=0; public int max=0; public TreeNode t=null; /* * 有一组数据 构造二叉树; */ public void createTree(int array[]){ //方法1--》顺序存储构造二叉排序树;利用队列; TreeNode t=new TreeNode(); t.data=array[0]; t.left=t.right=null; int i=1; java.util.Queue<TreeNode> mQueue=new java.util.LinkedList<TreeNode>(); mQueue.offer(t); TreeNode temp=null; while(i<array.length-1){ temp=mQueue.poll(); TreeNode left=new TreeNode(); left.data=array[i]; left.left=left.right=null; temp.left=left; mQueue.offer(left); TreeNode right=new TreeNode(); right.data=array[i+1]; right.left=right.right=null; temp.right=right; mQueue.offer(right); i=i+2; } this.t=t; } /* * 利用先序排序得到 min和 max */ public void getValue(TreeNode t){ if(t!=null){ if(t.data>max)max=t.data; else if(t.data<min)min=t.data; } if(t.left!=null){ getValue(t.left); } if(t.right!=null){ getValue(t.right); } } public int getMax(){ this.getValue(this.t); return Math.abs(max-min); } } /** * * @author Administrator * 节点的数据结构 * */ class TreeNode{ public TreeNode right=null; public TreeNode left=null; public int data=0; }
23、参考代码:
int GetLCSLength(int m, int n, char *str1, char *str2) { int max = 0; int *array = (int *)malloc(m * n * sizeof(int)); memset(array, 0, sizeof(array)); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (str1[i] == str2[j]) { if (i > 0 && j > 0) { array[i][j] = array[i - 1][j - 1] + 1; } else { array[i][j] = 1; } if (array[i][j] > max) { max = array[i][j]; } } } } return max; }