Java面试必备:核心概念解析与面试题集锦

4星 · 超过85%的资源 需积分: 9 3 下载量 48 浏览量 更新于2024-10-01 收藏 26KB DOCX 举报
"Java面试题集锦,涵盖了Java语言的核心特性、集合框架、多线程、异常处理等方面,旨在帮助求职者准备外企IT面试。" 在Java面试中,经常会被问及一些关键概念和技术,以下是一些重要的知识点: 1. **final, finally, finalize的区别**: - `final`:用于声明变量、方法或类,表示不可变或不可重写。 - `finally`:用于异常处理,无论是否发生异常,finally块中的代码都会执行。 - `finalize`:是Object类的一个方法,用于对象被垃圾收集器回收前的清理工作,但不保证一定会被执行。 2. **Anonymous Inner Class**: - 匿名内部类可以直接继承一个类或实现一个接口,通常用于简洁地定义回调函数或事件处理器。 3. **Static Nested Class与Inner Class**: - Static Nested Class(静态嵌套类)不持有外部类的引用,可以独立存在,类似于普通的静态成员。 - Inner Class(内部类)持有对外部类的引用,必须在外部类实例化后才能创建,可以访问外部类的私有成员。 4. **& 和 && 的区别**: - `&` 是位运算符,用于按位与操作,也可在布尔表达式中作为逻辑与,此时无论左侧是否为真,都会计算右侧。 - `&&` 是短路逻辑与,如果左侧为假,右侧表达式不会被执行。 5. **HashMap和Hashtable的区别**: - HashMap允许null键和值,而Hashtable不允许。 - HashMap是非同步的,适合多线程并发访问需手动同步;Hashtable是同步的,适合多线程环境。 - Hashtable继承自Dictionary类,HashMap继承自AbstractMap类。 6. **Collection和Collections的区别**: - Collection是一个接口,它是所有集合类的父接口,定义了集合的基本操作。 - Collections是一个工具类,提供了对集合的各种操作方法,如排序、查找等。 7. **assert关键字**: - 用于断言,用于在开发阶段检查程序状态,生产环境中默认关闭。 8. **Garbage Collection (GC)**: - Java的内存管理机制,自动回收不再使用的对象,以释放内存。 - 需要GC的原因是避免内存泄漏和提高内存利用率。 9. **String对象创建**: - `Strings = new String(xyz)` 创建了两个String对象:一个在常量池,一个在堆内存。 10. **浮点数转换**: - `(11.5)` 在Java中表示一个Double类型的数值,`-11.5` 同理。 11. **short变量赋值**: - 在Java中,不同类型的赋值需要类型转换,否则会出错。如:`short s1 = 1; s1 = s1 + 1;` 这里需要强制类型转换。 12. **sleep()和wait()**: - sleep()是Thread类的方法,使当前线程暂停指定时间,不释放锁。 - wait()是Object类的方法,使线程等待直到被notify()或notifyAll()唤醒,释放锁。 13. **goto关键字**: - Java中没有goto关键字,这与许多其他编程语言不同。 14. **length()方法**: - 数组没有length()方法,但有length属性;String有length()方法,返回字符串的长度。 15. **Overload和Override的区别**: - Overload(重载)是指在一个类中定义多个同名方法,但参数列表不同。 - Override(重写)是指子类方法与父类方法同名且参数列表完全相同,子类方法覆盖父类方法。 16. **Set集合的元素判断**: - Set集合中元素是唯一的,判断重复时使用equals()方法,而不是==,因为equals()比较的是对象的内容。 17. **运行时异常(RuntimeException)**: - 不需要显式抛出的异常,如NullPointerException、ArrayIndexOutOfBoundsException等。 18. **Error与Exception的区别**: - Error表示系统级别的错误,如虚拟机错误,一般程序无法恢复。 - Exception是程序运行时可能遇到的异常,可以通过try-catch处理。 19. **List, Set, Map与Collection的关系**: - List、Set和Map都继承自Collection接口,但它们各自有不同的特性和用途。 20. **abstract class与interface的区别**: - 抽象类可以包含字段和方法实现,可以有构造函数,可以多层继承。 - 接口只有方法声明,没有实现,可以多继承。 以上知识点是Java面试中常见的问题,掌握这些可以帮助你更好地应对面试挑战。