Java面试必备:核心知识点解析

4星 · 超过85%的资源 需积分: 46 51 下载量 193 浏览量 更新于2024-09-19 1 收藏 184KB TXT 举报
"Java面试题集锦" 在Java面试中,常常会遇到一系列技术问题,这些问题是考察候选人的基础知识、编程技巧以及对语言特性的理解。以下是一些关键的Java面试知识点: 1. 关键字final, finally, finalize - `final` 用于声明变量不可变,类不可继承,或方法不能被重写。 - `finally` 用于异常处理,无论是否发生异常,finally块中的代码总会被执行。 - `finalize` 是一个对象的终结方法,系统在垃圾回收前会调用它,但不保证一定会执行,因此不应依赖此方法进行资源清理。 2. 匿名内部类与类的关系 - 匿名内部类可以实现接口或继承类,但只能有一个父类(包括抽象类和具体类)。 - 它们可以作为局部变量、成员变量或方法参数存在,但不能声明为静态。 3. 静态嵌套类与内部类的区别 - 静态嵌套类(Static Nested Class)不持有对外部类的引用,可以直接创建实例。 - 内部类(Inner Class)持有对外部类的引用,需要外部类实例才能创建内部类对象。 4. HashMap与Hashtable的比较 - HashMap是非线程安全的,而Hashtable是线程安全的。 - HashMap允许null键值对,Hashtable不允许。 - HashMap的迭代器是fail-fast的,而Hashtable的迭代器是legacy的,不支持快速失败。 5. Collection与Collections的区别 - Collection是接口,它是所有集合类的父接口,定义了集合的基本操作。 - Collections是工具类,提供了一系列静态方法来操作集合,如排序、查找、转换等。 6. 关于垃圾收集(Garbage Collection, GC) - GC是Java自动内存管理的一部分,负责回收不再使用的对象所占用的内存。 - 何时触发GC取决于多种因素,如内存使用情况、对象可达性等。 - `System.gc()` 可以建议JVM进行垃圾回收,但不保证执行。 7. String对象的特性 - String是final类,不可被继承。 - 字符串常量池存储字符串,相同内容的字符串会共享内存空间。 - 使用`new String("xyz")`会创建一个新的String对象,不使用常量池。 - `String s = "abc"; s += "def";` 会创建新的String对象,而`s = s + "def";` 则使用StringBuilder或StringBuffer避免额外的对象创建。 8. 数据类型的自动装箱与拆箱 - 自动装箱是将基本类型转换为对应的包装类对象。 - 自动拆箱是将包装类对象转换回基本类型。 - 这两个过程在编译时由Java自动完成,减少了程序员的工作。 9. sleep()与wait() - `Thread.sleep()` 让当前线程休眠指定的时间,不会释放锁。 - `Object.wait()` 使线程等待,释放了对象锁,通常用于多线程同步。 10. Java中没有goto关键字 - Java设计时选择不包含goto,以提高代码的可读性和可维护性。 以上仅是Java面试中的一部分核心知识点,涵盖类与对象、集合框架、内存管理等多个方面。面试时,还会涉及到异常处理、多线程、IO流、网络编程、设计模式等更多主题。准备充分的候选人需要对这些概念有深入理解和实践能力。