专项练习二

本文详细解析了多个Java编程基础题目,包括分块查找、数据结构、排序算法、接口与异常处理等方面的知识点。内容涵盖了分块查找的原理、Java方法的访问修饰符、数据类型的转换、内存管理、排序算法的时间复杂度分析、二叉排序树的性质、文件操作、流对象的选择、异常处理策略等。同时,文章讨论了接口的实现、内存映像获取、字符串处理、异常处理的正确做法,以及类与接口之间的关系。此外,还讲解了类加载器的工作原理、关键字的使用规则,以及内存区域的分配。文章最后介绍了基本数据类型的大小和Java的垃圾回收机制。
摘要由CSDN通过智能技术生成

1.分块查找的平均查找长度不仅与索引表的长度有关,而且与块的长度有关。( )
正确答案: 真确

索引分块查找就类似于图书馆的索引,我们先找到第几楼,再找第几个书架,然后再找书。
分块查找就是先找到目标所在的数据块,然后块内查找。因此跟表中元素个数和块中元素个数都有关。

2.若在某一个类定义中定义有如下的方法: abstract void performDial( ); 该方法属于()
正确答案: D
本地方法
最终方法
解态方法
抽象方法

A.JAVA中有两种方法:JAVA方法和本地方法。
JAVA方法是由JAVA编写的,编译成字节码,存储在class文件中;
本地方法是由其它语言编写的,编译成和处理器相关的机器代码,本地方法保存在动态链接库中,即.dll(windows系统)文件中,格式是各个平台专有的。
JAVA方法是与平台无关的,但是本地方法不是。
B.final void A() {},这样定义的方法就是最终方法,最终方法在子类中不可以被重写。
也就是说,如果有个子类继承这个最终方法所在的类,那么这个子类中就不能再出现void A() {}这样的方法了。
C.不存在解态方法这种东西,应该是笔误打错了,是静态方法。
静态方法的使用完全独立于该类的任何对象。
在类中使用static修饰的静态方***随着类的定义而被分配和装载入内存中;而非静态方法属于对象的具体实例,只有在类的对象创建时在对象的内存中才有这个方法的代码段。

3.通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入的排序算法是()
正确答案: D
归并排序
选择排序
希尔排序
插入排序

归并操作(merge),也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。
如 设有数列{6,202,100,301,38,8,1}
初始状态:6,202,100,301,38,8,1
第一次归并后:{6,202},{100,301},{8,38},{1},比较次数:3;
第二次归并后:{6,100,202,301},{1,8,38},比较次数:4;
第三次归并后:{1,6,8,38,100,202,301},比较次数:4;
总的比较次数为:3+4+4=11,;
逆序数为14;
简单选择排序的基本思想:第1趟,在待排序记录r[1]r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。
以下为简单选择排序的存储状态,其中大括号内为无序区,大括号外为有序序列:
初始序列:{ 49 27 65 97 76 12 38 }
第1趟:12与49交换:12 { 27 65 97 76 49 38 }
第2趟:27不动 :12 27 { 65 97 76 49 38 }
第3趟:65与38交换:12 27 38 { 97 76 65 49}
第4趟:97与49交换:12 27 38 49 { 97 76 65 }
第5趟:76与65交换:12 27 38 49 65 { 97 76 }
第6趟:97与76交换:12 27 38 49 65 76 97 完成

4.执行下列程序的输出结果为( )

public class Test {
 public static void main(String[] args) {
 String s1 = "HelloWorld";
 String s2 = new String("HelloWorld");
 if (s1 == s2) {
 System.out.println("s1 == s2");
 } else {
 System.out.println("s1 != s2");
 }
 if (s1.equals(s2)) {
 System.out.println("s1 equals s2");
 } else {
 System.out.println("s1 not equals s2");
 }
 }
 }

s1 != s2
s1 equals s2

1.== 和 equals():
(1)“–” 用于比较基本数据类型时比较的是值,用于比较引用类型时比较的是引用指向的地址。
(2)Object 中的equals() 与 “==” 的作用相同,但String类重写了equals()方法,比较的是对象中的内容。

5.冒泡排序算法的时间复杂度是什么?
正确答案: A
O(N*N)
O(N)
O(log2​N)
O(Nlog2​N)

冒泡,直接插入,选择排序 等排序算法时间复杂度是 O(N^2)
快速排序,堆排序,归并排序 等排序算法平均时间复杂度是 O(NlongN)

6.一个栈的输入序列为123、、、、、n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()
正确答案: B
不确定
n-i+1
i
n-i

当 i = 2时,输出元素是(n - 1)
符合公式(n - i + 1)

int f(int x) return ((x>2) ? x*f(x-1) : 3); } int i; i=f(f(2)):
执行如上函数后. i的值为(9)

答案应该为 9
首先 2 传进去后, 2 > 2 为假,故函数返回 3 ,这时 f(f(2)) 就相当于f(3), 再将 3 传进去应该返回 3 * f(3 - 1) 即 3 * f(2), 又因为 f(2) 为 3,所以 f(3) = 9,因此答案就为 9.

7.public class Test{ static int cnt = 6; static{ cnt += 9; } public static void main(String[] args){ System.out.println(“cnt =” + cnt); } static{ cnt /=3; }; }
正确答案cnt=5

8.对于关键字序列(16,10,20,12,18,7,14,13,5,19),不可能构成其二叉排序树中一条查找路径的序列是( )
正确答案: C 16,10,7,5
16,20,18,19
16,10,7,12,14
16,10,12,14

前面的节点,或者比后面的节点都大,或者比后面的节点都小。
C选项
10>7
10<12,14 所以C不可能构成其二叉排序树中一条查找路径的序列

9.建立Statement对象的作用是?
正确答案: C
连接数据库
声明数据库
执行SQL语句
保存查询结果

1、Statement对象用于执行不带参数的简单SQL语句。
2、Prepared Statement 对象用于执行预编译SQL语句。
3、Callable Statement对象用于执行对存储过程的调用。

10.用希尔排序方法对一个数据序列进行排序时,若第1趟排序结果为9,1,4,13,7,8,20,23,15,则该趟排序采用的增量(间隔)可能是 。

正确答案: B
2
3
4
5

首先,第二个元素为1,是整个序列中的最小元素,所以可知该希尔排序为从小到大排序。然后考虑增量问题,若增量为2,第1+2个元素4明显比第1个元素9要大,A排除;若增量为3,第i、i+3、i+6个元素都为有序序列(i=1,2,3),符合希尔排序的定义;若增量为4,第1个元素9比第1+4个元素7要大,C排除;若增量为5,第1个元素9比第1+5个元素8要大,D排除,选B。

11.如果一个接口Glass有个方法setColor()࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值