文章目录
每日一练
6.1
- 对长度为 3 的顺序表进行查找。若查找第一个元素的概率为 1/2 ,查找第二个元素的概率为 1/3 ,查找第三个元素的概率为 1/6 ,则查找任一元素的平均查找长度为()。
A. 5/3
B. 2
C. 7/3
D. 4/3
【答案】A
【解析】平均查找长度为 1 × 1 2 + 2 × 1 3 + 3 × 1 6 = 5 3 1 \times \frac{1}{2} + 2 \times \frac{1}{3} + 3 \times \frac{1}{6} = \frac{5}{3} 1×21+2×31+3×61=35 。
6.2
- 已知一个长度为 16 的顺序表 L ,其元素按关键字有序排列,若采用二分查找法查找一个 L 中不存在的元素,则关键字的比较次数最多是()。
A. 4
B. 5
C. 6
D. 7
【答案】B
【解析】比较次数最多为 ⌊ log 2 n ⌋ + 1 \lfloor \log_2{n} \rfloor + 1 ⌊log2n⌋+1 。
6.3
- 下列选项中,不能构成二分查找中关键字比较序列的是()。
A. 500, 200, 450, 180
B. 500, 450, 200, 180
C. 180, 500, 200, 450
D. 180, 200, 500, 450
【答案】A
6.4
- 在有11个元素的有序表A[1, 2, …, 11]中进行二分查找(floor((low + high) / 2)),查找元素A[11]时,被比较的元素下标依次是()。
A. 6, 8, 10, 11
B. 6, 9, 10, 11
C. 6, 7, 9, 11
D. 6, 8, 9, 11
【答案】B
【解析】第一次 ⌊ ( 1 + 11 ) / 2 ⌋ = 6 \lfloor (1 + 11) / 2 \rfloor = 6 ⌊(1+11)/2⌋=6 。 第二次 ⌊ ( ( 6 + 1 ) + 11 ) / 2 ⌋ = 9 \lfloor ((6 + 1) + 11) / 2 \rfloor = 9 ⌊((6+1)+11)/2⌋=9 。 第三次 ⌊ ( ( 9 + 1 ) + 11 ) / 2 ⌋ = 10 \lfloor ((9 + 1) + 11) / 2 \rfloor = 10 ⌊((9+1)+11)/2⌋=10 。 第四次 11 11 11 。
6.5
- 以下各DOS命令能够显示出本机DNS服务器地址的是:( )
A. ping -a
B. ipconfig -all
C. netstat
D. telnet
【答案】B
【解析】DOS命令的使用
- ping:利用它可以检查网络是否能够连通,用好它可以很好地帮助我们分析判定网络故障
- ifconfig all:显示或设置网络设备
- netstat:用于查看当前基于 NETBIOS 的 TCP/IP 连接状态,通过该工具你可以 获得远程或本地的组名和机器名。
- telnet:使用telnet命令访问远程计算机
6.6
- 你判断下面语句,有什么作用?
GRANT update ON inventory TO joe WITH GRANT OPTION;
A. 一个系统权限被授予用户JOE
B. 一个对象权限被授予用户JOE
C. 用户JOE被授予在这个对象上的所有权限
D. 一个系统权限和一个对象权限被授予用户JOE
【答案】B
【解析】with admin option 只能在赋予 system privilege 的时使用;with grant option 只能在赋予 object privilege 的时使用
6.7
- 设一共有 n n n 个关键字,则Hash查找法的时间复杂度是()。
A. O(1)
B. O(n)
C. O(lgn)
D. O(n^2)
【答案】A
【解析】Hash查找法是由关键字结合Hash函数和冲突处理方法直接计算出关键字在表中的位置,与表的长度 n n n 无关,其查找的时间复杂度对于 n n n 为常量级,即 O ( 1 ) O(1) O(1) 。
6.8
- Hash函数有一个共同的性质,即函数值应当尽量以()取其值域的每个值。
A. 最大概率
B. 最小概率
C. 平均概率
D. 同等概率
【答案】D
6.9
- 将 10 个元素散列到 100000 个单元的Hash表中,则()产生冲突。
A. 一定会
B. 一定不会
C. 仍可能会
D. 不能确定
【答案】C
6.10
- 设Hash表长为 14 ,Hash函数是 H(key) = key % 11 ,表中已有数据的关键字是 15、38、61、84 共 4 个,现要将关键字为49的节点添加到表中,用平方探查法解决冲突,则放入的位置是()。
A. 8
B. 3
C. 5
D. 9
【答案】D
【解析】初始Hash表如下
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
15 | 38 | 61 | 84 |
d = H ( 49 ) = 49 m o d 11 = 5 d=H(49)=49\mod11=5 d=H(49)=49mod11=5,但该位置发生冲突,因此继续按照下列地址序列进行探查: d + 1 2 , d − 1 2 , d + 2 2 , d − 2 2 … d+1^2,d-1^2,d+2^2,d-2^2\dots d+12,d−12,d+22,d−22…,经探查得知 d + 2 2 = 9 d+2^2=9 d+22=9 处有空位置,因此 49 49 49 存放在下标为 9 9 9 的空间。
6.11
- 关于Hash查找以下说法不正确的有()个。 ① 采用链地址法解决冲突时,查找任一个元素的时间都是相同的。 ② 采用链地址法解决冲突时,若查找规定总是在链首,则插入任一个元素的时间都是相同的。 ③ 用链地址法解决冲突易引起堆积现象。 ④ 线性探查法不易产生堆积现象。
A. 1
B. 2
C. 3
D. 4
【答案】C
【解析】①③④错误,②正确。 如果两个元素在同一个链表中,查找时间肯定不相同,因此①不正确。 若插入规定在链首,则插入操作不需要查找插入位置即可直接进行,因此插入任何一个元素的时间均相同,因此②正确。这是相对于链表的尾插法而言的,在尾插法中,需要找到链表的尾部,因此链表的长度决定了插入元素的执行时间。 所谓堆积问题,即在Hash表的建立过程中,某些Hash地址是由冲突处理产生的,而不是由Hash函数直接产生的,这就可能造成原本Key1与Key2虽然不是同义词,但是最后却得出了相同的Hash地址。 例如,在线性探查法处理冲突的过程中,设第一个同义词占用单元d,这之后连续的若干同义词将占用Hash表的d、d+1、d+2等单元,此时随后任何d+1、d+2等单元上的Hash映射都会由于前面的同义词堆积而产生冲突,尽管随后的这些关键字并没有同义词,因此④不正确。 显然链地址法不会产生堆积现象,因为多个同义词只会占用表中的一个地址,因此③不正确。
6.12
- 下列说法正确的是()
A. 在类方法中可用this来调用本类的类方法
B. 在类方法中调用本类的类方法时可直接调用
C. 在类方法中只能调用本类中的类方法
D. 在类方法中绝对不能调用实例方法
【答案】B
【解析】在类方法中不能使用this关键字;在类方法中可以调用其它类中的类方法;在类方法中可以通过实例化对象调用实例方法。
6.13
- 从下面四段(A,B,C,D)代码中选择出正确的代码段()
// A
abstract class Name {
private String name;
public abstract boolean isStupidName(String name) {}
}
// B
public class Something {
void doSomething() {
private String s = "-";
int l = s.length();
}
}
// C
public class Something {
public static void main(String[] args) {
Other o = new Other();
new Something().addOne(o);
}
public void addOne(final Other o) {
o.i++;
}
}
class Other {
public int i;
}
// D
public class Something {
public int addOne(final int x) {
return ++x;
}
}
【答案】C
【解析】A:抽象方法不能有方法体;B:方法中定义的是局部变量,不能用类成员变量修饰符private;D:final修饰为常量,常量的值不能被改变。
6.14
- 设无向图的顶点个数为 n ,则该图最多有()条边。
A. n-1
B. n(n-1)/2
C. n(n+1)/2
D. 0
【答案】B
【解析】每个点可以和其他的 n-1 个点形成一条边,每条边被重复计算了两次,故有 n(n-1)/2 条边。
6.15
- 含有 n 个顶点的连通无向图,其边的个数至少为()。
A. n-1
B. n
C. n+1
D. nlgn
【答案】A
【解析】连通图要求 n 个点两两互相可达,因此至少有 n-1 条边。
6.16
- n 个节点的完全有向图含有边的数目为()。
A. n^2
B. n(n+1)
C. n/2
D. n(n-1)
【答案】D
6.17
- ()的邻接矩阵是对称矩阵。
A. 有向图
B. 无向图
C. AOV图
D. AOE图
【答案】B
6.18
- 对于一个具有 n 个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小是()。
A. n
B. (n-1)^2
C. n-1
D. n^2
【答案】D
6.19
- 提供Java存取数据库能力的包是()
A. java.sql
B. java.awt
C. java.lang
D. java.swing
【答案】A
【解析】java.sql是JDBC的编程接口、java.awt和java.swing是做图像界面的类库、java.lang: Java 编程语言进行程序设计的基础类
6.20
- 中央处理单元(CPU)的两个主要组成部分是运算器和什么。
A. 寄存器
B. 主存储器
C. 控制器
D. 辅助存储器
【答案】C
【解析】控制器:由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成, 它是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。 运算器:arithmetic unit,计算机中执行各种算术和逻辑运算操作的部件。 运算器由:算术逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等组成。 主要功能:执行所有的算术运算;执行所有的逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。
6.21
-
**下列关于无向图连通性特性的叙述中,正确的是()。 **
**I. 所有顶点的度之和为偶数 **
**II. 边数大于顶点个数减1 **
III. 至少有一个顶点的度为1
A. 只有I
B. 只有II
C. I和II
D. I和III
【答案】A
【解析】当图是一棵树的时候,边数刚好等于顶点个数减1,故II错。当所有顶点形成一个首尾相连的环的时候,所有顶点的度均为2,故III错。
6.22
-
**下列关于图的叙述中,正确的是()。 **
**① 回路是简单路径 **
**② 存储稀疏图 用邻接矩阵比邻接表更省空间 **
③ 若有向图中存在拓扑序列 则该图不存在回路
A. 仅①
B. 仅①、②
C. 仅③
D. 仅①、③
【答案】C
【解析】回路中可能存在既不是起点也不是终点的相同点,故①错。邻接矩阵始终占用最大空间,故②错。
6.23
- 对有n个顶点、e条边且使用邻接表存储的有向图进行广度优先遍历,其算法时间复杂度是()。
A. O(n)
B. O(e)
C. O(n+e)
D. O(n*e)
【答案】C
6.24
- 若用邻接矩阵存储有向图,矩阵中主对角线以下的元素均为0,则关于该图拓扑序列的结论是()。
A. 存在、且唯一
B. 存在、且不唯一
C. 存在、可能不唯一
D. 无法确定是否存在
【答案】C
6.25
-
下列关于最小生成树的叙述中,正确的是()。
I. 最小生成树的代价唯一
II. 所有权值最小的边一定会出现在所有的最小生成树中
III. 使用Prim算法从不同顶点开始得到的最小生成树一定相同
IV. 使用Prim算法和Kruskal算法得到的最小生成树总不相同
A. 仅I
B. 仅II
C. 仅I、III
D. 仅II、IV
【答案】A
6.26
- 编译和执行下面的程序时将输出什么
class Base {
void test() {
System.out.println("Base.test()");
}
}
public class Child extends Base {
void test() {
System.out.println("Child.test()");
}
static public void main(String[] a) {
Child anObj = new Child();
Base baseObj = (Base) anObj;
baseObj.test();
}
}
A. Child.test()、Base.test()
B. Base.test()、Child.test()
C. Base.test()
D. Child.test()
【答案】D
【解析】测试代码相当于:Base baseObj = new Child();父类的引用指向子类的实例,子类又重写了父类的test方法,因此调用子类的test方法。
6.27
- 编译和执行下面的程序时将输出什么
class Base {
static void test() {
System.out.println("Base.test()");
}
}
public class Child extends Base {
void test() {
System.out.println("Child.test()");
Base.test(); //Call the parent method
}
static public void main(String[] a) {
new Child().test();
}
}
A. Child.test()、Base.test()
B. Child.test()、Child.test()
C. Compilation error. Cannot override a static method by an instance method
D. Runtime error. Cannot override a static method by an instance method
【答案】C
【解析】静态方法不能在子类中被重写
6.28
- 无向图 G = (V, E) ,其中点集 V = {a, b, c, d, e, f}, 边集 E = {(a, b), (a, e), (a, c), (b, e), (c, f), (f, d), (e, d)}。对该图进行深度优先遍历,不能得到的序列是()。
A. acfdeb
B. aebdfc
C. aedfcb
D. abecdf
【答案】D
【解析】a-b-e后下一个节点只可能是d。
6.29
- 使用DFS算法递归地遍历一个有向无环图,并在退出递归时输出相应节点,这样得到的顶点序列是()。
A. 逆拓扑有序
B. 拓扑有序
C. 无序的
D. 都不是
【答案】A
6.30
- 图的广度优先生成树的树高比深度优先生成树的树高()。
A. 小或相等
B. 小
C. 大或相等
D. 大
【答案】A
【解析】BFS生成树是所有生成树中树高最小的。