2019年12月10日 java3
考点1 数组声明
Which of the following statements are valid array declaration?
(A) int number();
(B) float average[];
(C) double[] marks;
(D) counter int[];
- A (B) & (C)
- B (A)
- C (A) & (C)
- D (D)
解析
显示答案/隐藏答案
正确答案: Avalid有效的
考点2 异常处理
try块后必须有catch块。()
- A 正确
- B 错误
解析
显示答案/隐藏答案
正确答案: Btry
的形式有如下三种:
- try-catch
try-finally
try-catch-finally
但catch
和finally
语句不能同时省略
考点3 异常继承树
有时为了避免某些未识别的异常抛给更高的上层应用,在某些接口实现中我们通常需要捕获编译运行期所有的异常, catch 下述哪个类的实例才能达到目的:()
- A
Error
- B
Exception
- C
RuntimeException
- D
Throwable
解析
显示答案/隐藏答案
正确答案: Berror
是系统出错,catch
是无法处理的,难以修复的,RuntimeException
不需要程序员进行捕获处理,error
和exception
都是throwable
的子类,我们只需要对exception
的实例进行捕获即可
考点4 数据表述范围 值传递
如下代码,执行test()函数后,屏幕打印结果为()
1 | public class Test2 |
- A 127 127
- B 128 127
- C 129 128
- D 以上都不对
解析
显示答案/隐藏答案
正确答案: D- A 127 127
- B 128 127
- C 129 128
- D 以上都不对
解析
显示答案/隐藏答案
正确答案: DByte类型值大小为-128~127之间。
add(++a);这里++a会越界,a的值变为-128
add(b); 前面说了,add不起任何作用,b还是127
add()方法里面的修改值并不会起作用,而add(++a)会使a数值越界成-128,所以输出为-128 127
考点5 设计模式 单例模式
单例模式中,两个基本要点是
- A 构造函数私有
- B 静态工厂方法
- C 以上都不对
- D 唯一实例
解析
显示答案/隐藏答案
正确答案: AD懒汉单例模式
1.懒汉方式。指全局的单例实例在第一次被使用时构建。
1 | public class Singleton2 { |
饿汉单例模式
2.饿汉方式。指全局的单例实例在类装载时构建。
1 | public class Singleton { |
考点6 final关键字 异常处理
下列有关JAVA异常处理的叙述中正确的是()
- A
finally
是为确保一段代码不管是否捕获异常都会被执行的一段代码 - B
throws
是用来声明一个成员方法可能抛出的各种非运行异常情况 - C
final
用于可以声明属性和方法,分别表示属性的不可变及方法的不可继承 - D
throw
是用来明确地抛出一个异常情况
解析
显示答案/隐藏答案
正确答案: ABDthrows
用于在方法上声明该方法不需要处理的异常类型,用在方法上后面跟异常类名 可以是多个异常类
throw
用于抛出具体异常类的对象,用在方法内 后面跟异常对象只能是一个异常类型实体.
try
块必须和catch
块或和finally
同在,不能单独存在,二者必须出现一个.finally
块总会执行,不论是否有错误出现.但是若try
语句块或会执行的catch
语句块使用了JVM
系统退出语句,finally
块就不会被执行了.
一般我们把关闭资源的代码放在finally
里面 保证资源总是能关闭
然后再看这一题 A肯定对了,C根本就跟异常处理没有关系,所以不选。就算有关系也错了final
用于声明属性、方法、类。分别表示
- 属性不可更改、
- 方法不能被覆盖、
- 类不能被继承。
所以C选项说final
方法不能被继承是错误的,final
方法可以继承,但是不能覆盖,
考点7 循环 等差数列
下面是findSum(int m.int n)方法的定义,方法调用findSum(1,5)的返回结果是( )
1 | int findSum(int m, int n){ |
- A 1
- B 5
- C 10
- D 15
解析
显示答案/隐藏答案
正确答案: D1+2+3+4+5=(1+5)×5÷2=15
考点8 JVM内存分类
JVM内存不包含如下哪个部分( )
- A
Stacks
- B
PC
寄存器 - C
Heap
- D
Heap Frame
解析
显示答案/隐藏答案
正确答案: DJVM内存五大区域
栈有帧堆没帧
方法区 堆 pc计数器 本地方法栈 虚拟机栈
考点9
如果一个list初始化为{5,3,1},执行以下代码后,其结果为()?
1 | nums.add(6); |
- A [5, 3, 1, 6]
- B [4, 3, 1, 6]
- C [4, 3, 6]
- D [5, 3, 6]
解析
显示答案/隐藏答案
正确答案: Blist{5,3,1}
nums.add(6); //往后边加一个6,{5,3,1,6}
nums.add(0,4);//往下标为0的数加一个4,{4,5,3,1,6}
nums.remove(1); // 移除下标为1 的元素,{4,3,1,6}
考点10 JVM堆内存
以下哪个不属于JVM堆内存中的区域()?
- A
survivor
区 - B 常量池
- C
eden
区 - D
old
区
解析
显示答案/隐藏答案
正确答案: B堆中的内存可以为了新生代和老年代,新生代由可以分为一个Survivor
和两个Eden(From,To)
,默认比例8:1:1。
其实这个题有问题,从JDK7
开始,常量池就从方法区中被移了到了堆(Hotspot
叫做永久代),JDK8
的时候,永久代被元空间代替。但是这个字符串常量池可是一直都在堆中的。
这里先说一下,方法区和永久代只是针对于HotSpot
而言,在JDK7
之前是一个概念,对于别的虚拟机而言,可没有什么永久代,只有方法区。
为什么HotSpot
把永久代取消了呢,主要是因为这块地方的GC
机制和堆邦定在一起,但是因为它不是堆,所以每一个GC
收集器都需要有很大一部分代码去专门实现这个区域的垃圾,其次,每次一开始为永久代分配内存的时候,因为无法估量对象的大小,所以总是很难分配合适的内存,还容易出现OOM
,所以取代成了元空间。元空间的话相当于一个内地内存,所以基本不会出现什么OOM
,但是内存泄漏还是有的。
考点11 Hibernate
下面哪一项不属于优化Hibernate所鼓励的?
- A 使用单向一对多关联,不使用双向一对多
- B 不用一对一,用多对一取代
- C 配置对象缓存,不使用集合缓存
- D 继承类使用显式多态
解析
显示答案/隐藏答案
正确答案: A优化Hibernate所鼓励的7大措施:
1.尽量使用many-to-one,避免使用单项one-to-many
2.灵活使用单向one-to-many
3.不用一对一,使用多对一代替一对一
4.配置对象缓存,不使用集合缓存
5.一对多使用Bag 多对一使用Set
6.继承使用显示多态 HQL:from object polymorphism=”exlicit”
避免查处所有对象
7.消除大表,使用二级缓存
1、什么是延迟加载?
定义:延迟加载(lazy load)是Hibernate3 关联关系对象默认的加载方式,延迟加载机制是为了避免一些无谓的性能开销而提出来的。就是只有当真正需要数据时,才真正的执行数据加载操作。延迟加载是 hibernate 中用于提高查询效率的一种措施,它的对立面是 立即加载。
2、如何实现延迟加载?
Hibernate 2 实现延迟加载有 2 种方式:
实体对象
集合
Hibernate 3 又引入了一种新的加载方式:属性的延迟加载
一般使用load()的方法来实现延迟加载:
当调用load方法加载对象时,返回***对象,等到真正用到对象的内容时才发出sql语句
3、Hibernate 其他介绍
Hibernate 使用 Java 反射机制,而不是字节码增强程序来实现透明性
Hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
4、优化 Hibernate 所鼓励的 7 大措施
1.尽量使用多对一,避免使用单项一对多
2.灵活使用单向一对多
3.不用一对一,使用多对一代替一对一
4.配置对象缓存,不使用集合缓存
5.一对多使用Bag ,多对一使用Set
6.继承使用显示多态 HQL:from object polymorphism=”exlicit” 避免查处所有对象
7.消除大表,使用二级缓存
考点12 Struts
在Struts框架中如果要使用Validation作验证的话,需要使用以下哪个Form?
- A
ActionForm
- B
ValidatorActionForm
- C
ValidatorForm
- D
DynaValidatorActionForm
解析
显示答案/隐藏答案
正确答案: D有空了解一下
DynaValidatorActionForm 动态验证表单 Validation 确认的意思
考点13 hibernate POJO
在 hibernate 开发中,关于 POJO 类对象的状态说法正确的是()。
- A 自由状态(
Transient
):实体在内存中自由存在,与数据库中的记录无关 - B 持久状态(
Persistent
):实体处于由Hibernate
框架所管理的状态,对应了数据库中的一条记录,同时与某个session
实例发生了关联 - C 游离状态(
Detached
):在session
关闭之后,可以使对象从持久状态转换到游离状态。 - D 不能将对象从游离状态转换成持久态
解析
显示答案/隐藏答案
正确答案: ABC有空了解一下