笔试题
1.abstract class 和 interface 的区别?
抽象类可以有私有方法和变量,接口中不能有私有方法和变量。
抽象类可以有方法的实现,接口中不能有方法的实现并且所以的方法都需要实现。
2.try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会不会被执行,
什么时候被执行,在 return 前还是后?
Finally 代码块中的语句是必须执行的,必须在 try 代码块执行完之后执行,在 return 语句后
执行。除非代码块中有 System.exit();方法,因为终止了虚拟机进程,会不执行。
3.int 和 Integer 有什么区别?
Java 中提供了两种不同类型:引用类型和原始类型。Int 是原始类型,Integer 是 int 的封装
类型。
4.说出 ArrayList,Vector, LinkedList 的存储性能和特性?
ArrayList 和 Vector 是按数组的方式存储数据的,此数组的元素大于实际存储的数据,以便
于增加和插入元素,它们允许数组按序号索引元素,由于插入数据时涉及到移动等内存操
作,所以索引数据快而插入数据慢。Vector 由于使用了 synchroinzed(安全性),通常性能
上较 ArrayList 差。LinkedList 使用双向链表实现存储,按索引序号前向或后向遍历 ,插入
数据时只需要记录本项的前后项即可,所以插入数据速度较快。
5.描述一下 JVM 加载 class 文件的原理机制?
Java 中所有的类必须加装到 jvm 中才能运行,这个工作是由 jvm 中的类装载器完成的,类
装载器所作工作实质是把类文件读取到内存当中。
6.STRING 与 STRINGBUFFER 的区别?
String 在追加内容的时候不会在原有的内存区域中追加内容,而是在内存中分配一块内存
区域存放追加内容, StringBuffer 不会。
7.List、Map、Set 三个接口,存取元素时,各有什么特点?
List 以特定顺序来持有元素,元素可重复。
Set 在内部排序,不允许有重复元素。
Map 保存 key-value 值,value 可有多个值。
8.谈谈 final, finally, finalize 的区别
Final 可以修饰变量、方法、类。被 final 修饰的变量必须初始化并且不能被修改。被 final
修饰的方法不能被重载。被 final 修饰的类不能被继承,final 不能和 abstract 同时修饰。
Finally 是在异常处理是提供的,如果抛出异常,那么相匹配的 catch 子句就会执行,然后控
制就会进入 finally 中。
Java 允许 finalize()方法在垃圾收集器将对象从内存中清除出去之前做垃圾清理工作。这个
方法是垃圾收集器在确定对象没有被引用时调用的。Finalize()方法是在删除这个对象之前
对这个对象调用的。
9.sleep() 和 wait() 有什么区别?