记录一些题
1. 以下哪种方式实现的单例是线程安全的?
正确答案: A B C D 你的答案: A B C D (正确)
A.枚举
B.静态内部类
C.双检锁模式
D.饿汉式
解释:1.饿汉式(线程安全,调用效率高,但是不能延时加载); 2.懒汉式(线程安全,调用效率不高,但是能延时加载(synchronized 和 volatile 保证懒汉式单例模式的线程安全)); 3.Double CheckLock实现单例:DCL也就 是双重锁判断机制(由于JVM底层模型原因,偶尔会出问题,不建议使用); 4.静态内部类实现模式(线程安全,调用效率高,可以延时加载); 5.枚举类(线程安全,调用效率高,不能延时加载,可以天然的防止反射和反序列化调用)。
2.
代码执行顺序:
父类静态变量,方法→父类静态代码块→子类静态变量,方法→子类静态代码块→父类非静态代码快→父类构造函数→子类非静态代码快→子类构造函数。注:静态变量,方法按照位置顺序执行。
3.
public class IfTest{
public static void main(string[]args){
int x=3;
int y=1;
if(x=y)
System.out.println(“Not equal”);
else
System.out.println(“Equal”);
}
}
What is the result?
正确答案: C 你的答案: B(错误)
A.The output is “Equal”
B.The output in “Not Equal”
C.An error at line 5 causes compilation to fall.
D.The program executes but does not print a message.
解释:其实这个是由于java和C语言的不同处理机制导致的:
C语言中
当if语句中的条件为赋值语句时,实际上是将赋值后的结果与0进行比较【左值】
if(1) 由于1>0 所以认为是true
java语言中,虽然也用了左值,但是不再与0比较,而是直接将0放入if()中
但是int类型,不能转换为boolean,所以会报错:“ Type mismatch: cannot convert from int to boolean ”
4. 关于equals和hashCode描述正确的是 ()
正确答案: A B C 你的答案: A B (错误)
A.两个obj,如果equals()相等,hashCode()一定相等(符合代码规范的情况下)
B.两个obj,如果hashCode()相等,equals()不一定相等
C.两个不同的obj, hashCode()可能相等
D.其他都不对
解释:“= =”:作用是判断两个对象的地址是否相等,即,判断两个对象是不是同一个对象,如果是基本数据类型,则比较的是值是否相等。
“equal”:作用是判断两个对象是否相等,但一般有两种使用情况:
1.类没有覆盖equals()方法,则相当于通过“= =”比较
2.类覆盖equals()方法,一般,我们都通过equals()方法来比较两个对象的内容是否相等,相等则返回true,如String
地址比较是通过计算对象的哈希值来比较的,hashcode属于Object的本地方法,对象相等(地址相等),hashcode相等,对象不相等,hashcode()可能相等,哈希冲突
5. JVM内存不包含如下哪个部分( )
正确答案: D 你的答案: D (正确)
A.Stacks
B.PC寄存器
C.Heap
D.Heap Frame
6.
floor: 求小于参数的最大整数。返回double类型-----n. 地板,地面
例如:Math.floor(-4.2) = -5.0
ceil: 求大于参数的最小整数。返回double类型-----vt. 装天花板;
例如:Math.ceil(5.6) = 6.0
round: 对小数进行四舍五入后的结果。返回int类型
例如:Math.round(-4.6) = -5
7. 下面哪一项不属于优化Hibernate所鼓励的?
正确答案: A 你的答案: B (错误)
A.使用单向一对多关联,不使用双向一对多
B.不用一对一,用多对一取代
C.配置对象缓存,不使用集合缓存
D.继承类使用显式多态
解释:
优化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.消除大表,使用二级缓存
8. 下列不属于算法结构的是()
正确答案: C 你的答案: C (正确)
A.输入数据
B.处理数据
C.存储数据
D.输出结果