"Java面试宝典2011版"
这篇资料包含了Java面试中常见的问题,涵盖了基础、面向对象、异常处理、多线程、集合框架、流与序列化等多个方面。以下是部分知识点详解:
1. **非static方法的调用**:只能通过对象来调用非static方法,因为它们与对象的状态相关联。
2. **Integer与int的区别**:Integer是int的封装类,支持对象操作,如自动装箱拆箱,而int是原始数据类型,效率更高。
3. **Math.round()方法**:Math.round()用于四舍五入,Math.round(11.5)等于12,Math.round(-11.5)等于-11。
4. **作用域的区别**:public、private、protected分别代表公共、私有、受保护的访问权限。未指定访问修饰符的默认为包内可见。
5. **Overload与Override**:Overload是重载,发生在同一个类中,方法名相同但参数列表不同;Override是重写,发生在子类中,方法名、参数列表和返回类型都必须与父类一致。
6. **构造器不可被override**:构造器不能被重写,但可以重载。
7. **接口与抽象类**:接口只包含方法声明,不允许有方法实现,可以多继承;抽象类可以有方法实现,只能单继承,但可以实现多个接口。
8. **内部类**:内部类是定义在另一个类内部的类,分为静态嵌套类(Static Nested Class)和非静态嵌套类(Inner Class)。静态嵌套类不持有对外部类的引用,而Inner Class持有对外部类的隐式引用。
9. **多态的机制**:Java中的多态是通过继承和接口实现的,同一接口或基类的引用可以指向不同的子类对象,调用方法时根据实际对象决定。
10. **abstract与static、native、synchronized的组合**:abstract方法不能是static或final,因为它们不涉及具体实现。abstract不能是native,因为native表示方法由C/C++实现。abstract可以是synchronized,但不常见。
11. **异常处理**:异常处理使用try-catch-finally语句块,finally块中的代码总会在try和catch之后执行。如果try中有return,finally仍然会被执行,但return语句不会被执行。
12. **集合框架**:Collection是所有集合类的顶级接口,分为List、Set、Queue等。常用实现包括ArrayList、LinkedList、HashSet、HashMap等。ArrayList和Vector都是动态数组,但ArrayList是非同步的,Vector是同步的。HashMap和Hashtable类似,但HashMap允许null键值,而Hashtable不允许。
13. **线程**:Java通过Thread类或Runnable接口实现多线程。线程状态包括新建、就绪、运行、阻塞和死亡。同步方法使用synchronized修饰,防止并发访问。sleep()让线程休眠,wait()使线程等待,两者都需要捕获InterruptedException。
14. **异常处理的关键字**:throws用于声明方法可能抛出的异常,throw用于抛出异常,try用于包围可能抛出异常的代码,catch用于捕获异常,finally用于确保某些代码无论如何都会执行。
15. **线程通信**:可以通过wait()、notify()、notifyAll()实现线程间的通信,解决生产者消费者问题等。
16. **集合与流**:Java集合框架提供了丰富的数据结构,如ArrayList、LinkedList、HashSet等。流(Stream)是Java 8引入的新特性,用于处理集合数据,支持链式操作。
这些只是面试宝典中的一部分内容,实际上还涉及到更多诸如String操作、异常处理策略、反射、I/O、网络编程、设计模式等多个领域的深入问题。理解和掌握这些知识点对于准备Java面试至关重要。