A. 先序遍历
B. 中序遍历
C. 后序遍历
D. 按层遍历
【答案】B
【解析】后根遍历树可分为两步:① 从左到右访问双亲结点的每个孩子(转化为二叉树后就是先访问根结点再访问右子树);② 访问完所有孩子后再访问它们的双亲结点(转化为二叉树后就是先访问左子树再访问根结点)因此树T的后根序列与其相应的二叉树BT的中序遍历序列相同。
A A
/ \ / |
B C B E C
/ \ / \ 左孩子,右兄弟 / / /
D E F G <<=======>> D H F G J
/ / \ / \ / \
H I J I M K L
\ /
M K
\
L
int a = 10, b = 4, c = 20, d = 6;
System.out.println(a++*b+c*--d);
A. 144
B. 28
C. 140
D. 不能运行
【答案】C
【解析】++在前,先自增后运算;++在后,先运算后自增。
A. InnoDB
B. MyISAM
C. Memory
D. Merge
【答案】B、A
【解析】5.5版本以前默认 MyISAM 引擎,不支持事务;5.5版本以后默认 InnoDB 引擎,支持事务。
A. acgabfh
B. adbagbb
C. afbeagd
D. afeefgd
【答案】D
【解析】0100 011 001 001 011 11 0101
A. 00, 1011, 01, 1010, 11, 100
B. 00, 100, 110, 000, 0010, 01
C. 10, 1011, 11, 0011, 00, 010
D. 0011, 10, 11, 0010, 01, 000
【答案】A
【解析】根据出现的次数画出对应的哈夫曼树
33 33
/ \ / \ a: 00
14 19 14 19 b: 1011
/ \ / \ / \ / \ c: 01
⑥ ⑧ 9 ⑩ =======>>> a c 9 e ===>> d: 1010
/ \ / \ e: 11
④ 5 f 5 f: 100
/ \ / \
② ③ d b
A. n-1
B. n
C. 2n-1
D. 2n
【答案】A
【解析】n 个结点构造的哈夫曼树需要 n-1 次合并过程,每次合并新建一个分支节点,故选A。
A. 56
B. 57
C. 58
D. 60
【答案】C
【解析】n 个符号构造哈夫曼树的过程中,共新建了 n-1 个结点(双分支结点),因此哈夫曼树的结点总数为2n-1 = 115,求解得到 n = 58,故选C。
【答案与解析】根据哈夫曼树的构造方法,每次从森林中选取两个根结点值最小的树合成一颗树,将原先的两棵树作为左、右子树,且新根结点的值为左、右孩子关键字之和。构造的哈夫曼树如下:
40
/ \
17 23
/ \ / \
⑧ ⑨ 10 13 ------- (8 + 9) * 2 = 34
/ \ / \
⑤ 5 ⑥ ⑦ ------- (5 + 6 + 7) * 3 = 54
/ \
② ③ ------- (2 + 3) * 4 = 20
WPL = 34 + 54 + 20 = 108
ArrayList list = new ArrayList(20);
中的list扩充几次()A. 0
B. 1
C. 2
D. 3
【答案】A
【解析】这里有点迷惑人,大家都知道默认 ArrayList 的长度是 10,所以如果要往 list 添加 20 个元素,肯定要扩容一次(扩容为原来的 1.5 倍)但是这里显示指明了需要多少空间,所以就一次性为你分配了这么多空间,也就不用再扩容了。
public class NULL {
public static void haha() {
System.out.println("haha");
}
public static void main(String[] args) {
((NULL) null).haha();
}
}
A. 编译不通过
B. 运行不通过
C. 能正常打印“haha”
D. 能正常运行,但什么也不打印
【答案】C
【解析】输出为 haha,因为 null 值可以强制转换为任意 Java 类类型,(String)null 也是合法的。但 null 强制转换后是无效对象,其返回值还是为 null,而static方法的调用是和类名绑定的,不借助对象进行访问所以能正确输出。
A. E
B. F
C. G
D. H
【答案】C
【解析】根据先序和中序遍历的结果,可以画出该二叉树的结构如下。所以根节点是 E,根节点的右孩子是G。
E
/ \
F G
/ \ /
H I J
\
K
A. -A+B*C/DE
B. -A+B*CD/E
C. -+*ABC/DE
D. -+A*BC/DE
【答案】D
【解析】本题相当于给出树的中序遍历和后序遍历求前序遍历的结果。可以画出这棵树:
-
/ \
+ /
/ \ / \ ==>> 前序遍历:-+A*BC/DE
A * D E
/ \
B C
A. 4
B. 5
C. 6
D. 7
【答案】C
【解析】设树的总结点数为n,度为i的结点数记为ni,则有 n = n0 + n1 + n2 + n3 和 n-1 = n1 + 2n2 + 3n3 那么有n0 = n2 + 2n3 + 1 = 1 + 2*2 + 1 = 6。
A. 39
B. 52
C. 111
D. 119
【答案】C
【解析】第六层有8个叶子结点,说明第六层另外的32-8=24个结点不是叶子结点,每个结点最多有2个孩子结点,故结点总数为63+24*2=111个。
A. 95, 22, 91, 24, 94, 71
B. 92, 20, 91, 34, 88, 35
C. 21, 89, 77, 29, 36, 38
D. 12, 25, 71, 68, 33, 34
【答案】A
【解析】由选项A做出查找路径的一部分,发现在91的左子树中出现了大于91的结点94,因此选项A不可能。
A. 可以
B. 不可以
【答案】B
【解析】不可以,因为根据路由算法shard=hash(document_id)%(num_of_primary_shards),当主分片数量变化时会影响数据被路由到哪个分片上,导致数据存储和查询都出现问题。
A. 不需要设置
B. 设置最少投票通过数量大于候选节点数量的一半
C. 设置最少投票通过数量等于候选节点数量的一半
D. 设置最少投票通过数量小于候选节点数量的一半
【答案】B
【解析】可以通过设置最少投票通过数量(discovery.zen.minimum_master_nodes)超过所有候选节点一半以上来解决脑裂问题。
A. 3
B. 4
C. 5
D. 6
【答案】C
【解析】我们使用完全二叉树的编号机制来描述二叉树上的节点。根节点设为1号节点,那么节点总数为3的二叉树可能有5种
① ① ① ① ①
/ \ / / \ \
② ③ ② ② ④ ④
/ \ / \
④ ⑤ ⑥ ⑦
A. 1, 2, 3, 4, 6, 7, 5
B. 1, 4, 2, 6, 3, 7, 5
C. 1, 4, 3, 2, 6, 7, 5
D. 5, 4, 3, 7, 6, 2, 1
【答案】C
【解析】
⑤
/ \
② ⑦
/ \ /
① ③ ⑥
\
④
A. 所有结点的平均查找效率是 O ( lg N ) O(\lg N) O(lgN)
B. 最小值一定在叶节点上
C. 最大值一定在叶节点上
D. 中位值节点在根节点或者根的左子树上
【答案】C
【解析】最大值可以是没有右子树的非叶节点。
{10, 12, 1, 14, 6, 5, 8, 15, 3, 9, 7}
逐个插入到初始为空的小根堆中,然后连续执行两次删除最小元素操作,再插入{4, 16}
,此后堆顶的元素是什么?A. 4
B. 5
C. 7
D. 9
【答案】A
【解析】此题无需模拟建堆操作,堆顶的元素始终为最小的元素,因此答案为4。
A. 4
B. 6
C. 8
D. 10
【答案】C
【解析】根据定义有 n = n 0 + n 1 + n 2 + n 3 + n 4 n = n_0+n_1+n_2+n_3+n_4 n=n0+n1+n2+n3+n4,以及 n = n 1 + 2 n 2 + 3 n 3 + 4 n 4 + 1 n=n_1+2n_2+3n_3+4n_4+1 n=n1+2n2+3n3+4n4+1。 解得 n = 16 n=16 n=16,叶子结点的个数为 n 0 = 8 n_0=8 n0=8。
A. 启动类加载器(bootstrap class loader)
B. 扩展类加载器(extensions class loader)
C. 应用程序类加载器(system class loader)
D. 自定义类加载器(user class loader)
E. 以上全是
【答案】E
【解析】启动类加载器(bootstrap class loader)、扩展类加载器(extensions class loader)、应用程序类加载器(system class loader) 、自定义加载器(user class loader)都属于JVM类加载器,并且加载过程采用双亲委派进行加载。如果对这些名词没概念的同学,自己私下一定要去补充一下jvm类加载的相关知识。
A. 标记-清除算法
B. 标记-整理算法
C. 复制算法
D. 整体回收算法
【答案】D
【解析】标记-回收算法、标记-整理算法、复制算法、分代回收算法都属于JVM的垃圾回收算法。
A. {100, 80, 90, 60, 120, 110, 130}
B. {100, 120, 110, 130, 80, 60, 90}
C. {100, 60, 80, 90, 120, 110, 130}
D. {100, 80, 60, 90, 120, 130, 110}
【答案】C
【解析】A、B、D选项中构造的二叉搜索树层序遍历结果为{100, 80, 120, 60, 90, 110, 130},而C选项中所构造的二叉搜索树层序遍历结果为{100, 60, 120, NIL, 80, 110, 130, NIL, NIL, NIL, 90}。
A. ①②
B. ①②③
C. ①③
D. ①②③④
【答案】D
A. FIND(1)与FIND(4)的结果一致
B. FIND(3)与FIND(6)的结果一致
C. FIND(5)与FIND(6)的结果一致
D. FIND(5)与FIND(12)的结果一致
【答案】C
【解析】根据题意可以得到如下的不相交集合: {1, 2, 4, 8}、{3, 6, 9, 10}、{5, 7, 11, 12}。 5和6并不在同一个集合中。
A. 所有结点的左子树都为空的二叉搜索树
B. 所有结点的右子树都为空的二叉搜索树
C. 平衡二叉搜索树
D. 以上结果都不对
【答案】C
【解析】二叉树的查找效率取决于其高度,对于结点个数相同的二叉搜索树,平衡二叉搜索树的高度最小,因此平均查找效率最高。
A. 10
B. 12
C. 15
D. 17
【答案】B
【解析】设 N h N_h Nh表示高度为 h h h的平衡二叉树中所含有的最少结点数,则有: N 0 = 0 N_0=0 N0=0、 N 1 = 1 N_1=1 N1=1、 N 2 = 2 N_2=2 N2=2, N h = N h − 1 + N h − 2 + 1 N_h=N_{h-1}+N_{h-2}+1 Nh=Nh−1+Nh−2+1,递推可得 N 5 = 12 N_5=12 N5=12。