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

需积分: 9 4 下载量 8 浏览量 更新于2024-08-01 收藏 298KB DOC 举报
"Java面试和笔试题集合" Java面试中常常涉及到的关键概念和知识点: 1. **final, finally, finalize的区别**: - `final`:用于声明类、方法或变量,表示不可变性。当类被声明为final时,不能有子类;方法声明为final则不能被重写;final变量一旦赋值后就不能更改。 - `finally`:在异常处理中使用,无论是否发生异常,finally块中的代码都会被执行,通常用于清理资源。 - `finalize`:是Object类的一个方法,用于对象被垃圾收集器回收前执行的清理工作。但不保证一定会执行,因为垃圾收集行为是不确定的。 2. **AnonymousInnerClass(匿名内部类)**: - 可以继承其他类,并且可以实现一个或多个接口。匿名内部类通常用于简洁地定义一个仅需一次性使用的类。 3. **StaticNestedClass与Inner Class的区别**: - Inner Class(内部类):非静态嵌套类,持有对外部类的隐式引用,可以访问外部类的私有成员。内部类实例必须依赖于外部类实例。 - Static Nested Class(静态嵌套类):静态内部类,不持有对外部类的引用,可以独立存在,类似于普通的静态类。可以直接通过类名创建实例。 4. **& 和 && 的区别**: - `&`:按位与运算符,用于两个操作数的逐位与。在布尔表达式中,`&`运算符始终会计算两边的操作数,即使左边已经确定结果。 - `&&`:逻辑与运算符,短路运算。如果左侧操作数为假,不会计算右侧操作数。 5. **HashMap和Hashtable的区别**: - `HashMap`:线程非同步,允许null键和值,迭代顺序不是固定的。 - `Hashtable`:线程同步,不允许null键和值,迭代顺序与插入顺序无关。 6. **Collection和Collections的区别**: - `Collection`:接口,是所有单列集合的顶级接口,如List、Set等。 - `Collections`:工具类,提供了对集合的一系列操作方法,如排序、查找、填充等。 7. **assert的使用**: - `assert`:用于断言,用于测试代码中假设的正确性。在开发阶段启用,生产环境中通常关闭。 8. **GC(垃圾收集)**: - 垃圾收集是Java的自动内存管理机制,负责回收不再使用的对象所占用的内存空间,以避免内存泄漏。`System.gc()`是建议进行垃圾回收,但不保证立即执行。 9. **Strings=new String("xyz");创建了几个StringObject?** - 创建了两个对象,一个在字符串常量池,一个在堆内存。因为"xyz"在常量池中存在,而`new String("xyz")`会创建一个新的堆对象。 10. **Math.round(11.5)等于多少? Math.round(-11.5)等于多少?** - `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。`Math.round()`方法将浮点数四舍五入为最接近的整数,对于正数,超过0.5的部分会被向上舍入;对于负数,小于-0.5的部分会被向下舍入。
2024-10-31 上传