2019年Java面试题基础系列228道
Java面试题(一)
第一篇更新1~20题的答案解析
2019年Java面试题基础系列228道(1),快看看哪些你还不会?
第二篇更新21~50题答案解析
2019年Java面试题基础系列228道(2),查漏补缺!
第三篇更新51~95题答案解析
2019年Java面试题基础系列228道(3),查漏补缺!
Java面试题(二)
第四篇更新1~20题的答案解析
2019年Java面试题基础系列228道(4),查漏补缺!
本篇更新Java面试题(二)21-50题的答案
21、存在两个类,B 继承 A ,C 继承 B,我们能将 B 转换为 C 么?如 C = (C) B;
22、哪个类包含 clone 方法?是 Cloneable 还是 Object?
23、Java 中 ++ 操作符是线程安全的吗?
23、不是线程安全的操作。它涉及到多个指令,如读取变量值,增加,然后存储回内存,这个过程可能会出现多个线程交差。
24、a = a + b 与 a += b 的区别
25、我能在不进行强制转换的情况下将一个 double 值赋值给 long类型的变量吗?
26、3*0.1 == 0.3 将会返回什么?true 还是 false?
27、int 和 Integer 哪个会占用更多的内存?
28、为什么 Java 中的 String 是不可变的(Immutable)?
31、64 位 JVM 中,int 的长度是多数?
32、Serial 与 Parallel GC 之间的不同之处?
33、32 位和 64 位的 JVM,int 类型变量的长度是多数?
34、Java 中 WeakReference 与 SoftReference 的区别?
35、WeakHashMap 是怎么工作的?
36、JVM 选项 -XX:+UseCompressedOops 有什么作用?为什么要使用?
37、怎样通过 Java 程序来判断 JVM 是 32 位 还是 64 位?
38、32 位 JVM 和 64 位 JVM 的最大堆内存分别是多数?
39、JRE、JDK、JVM 及 JIT 之间有什么不同?
40、解释 Java 堆空间及 GC?
41、你能保证 GC 执行吗?
42、怎么获取 Java 程序使用的内存?堆使用的百分比?
43、Java 中堆和栈有什么区别?
44、“a==b”和”a.equals(b)”有什么区别?
45、a.hashCode() 有什么用?与 a.equals(b) 有什么关系?
46、final、finalize 和 finally 的不同之处?
47、Java 中的编译期常量是什么?使用它又什么风险?
48、List、Set、Map 和 Queue 之间的区别(答案)
49、poll() 方法和 remove() 方法的区别?
50、Java 中 LinkedHashMap 和 PriorityQueue 的区别是什么?
21、存在两个类,B 继承 A,C 继承 B,我们能将 B 转换为C 么?如 C = (C) B;
这属于强制类型转换,如果被转换的B实例不是C类型,会有异常
比如你的ABC分别对应动物,猫,黑猫。
向上转型就是比如
C c = new C();
B b = c;
你把c转型为B,黑猫是猫吗?是啊,所以这是ok的。
但是反过来
B b = new B();
C c = (C)b;
这就不ok了,只知道这个b是一只猫,他不一定是黑猫。
但如果这个b已经确定是一只黑猫了,那就可以转型了
B b = new C();
C c = (C)b;
这里的b本来就是黑猫啊。
22、哪个类包含 clone 方法?是 Cloneable 还是 Object?
java.lang.Cloneable 是一个标示性接口,不包含任何方法,clone 方法在object 类中定义。并且需要知道 clone() 方法是一个本地方法,这意味着它是由c 或 c++ 或 其他本地语言实现的。
23、Java 中 ++ 操作符是线程安全的吗?
不是线程安全的操作。它涉及到多个指令,如读取变量值,增加,然后存储回内存,这个过程可能会出现多个线程交差。
24、a = a + b 与 a += b 的区别
+= 隐式的将加操作的结果类型强制转换为持有结果的类型。如果两这个整型相加,如 byte、short 或者 int,首先会将它们提升到 int 类型,然后在执行加法操作。如果加法操作的结果比 a 的最大值要大,则 a+b 会出现编译错误,但是
byte a = 127;byte b = 127;
b = a + b;// error : cannot convert from int to byte
b += a;// ok