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

需积分: 10 2 下载量 3 浏览量 更新于2024-07-22 收藏 533KB PDF 举报
"Java面试宝典是一本针对Java开发者面试准备的资料,涵盖了常见的Java面试题目,包括基础概念、语法特性、集合框架、内存管理等多个方面。这份资料旨在帮助求职者掌握企业面试中可能遇到的问题,提升面试成功率。" 1. **final, finally, finalize的区别**: - `final` 关键字用于声明变量、方法或类,表示不可变或不可覆盖。对于变量,一旦赋值就不能改变;对于方法,表示该方法不能被子类覆盖;对于类,表示该类不能有子类。 - `finally` 通常与`try-catch`配合使用,无论异常是否发生,`finally`块中的代码总会被执行,确保关键清理操作得以完成。 - `finalize` 是一个特殊的方法,用于对象被垃圾回收前进行必要的清理工作,但不推荐依赖此机制进行资源释放,因为其执行时间不确定。 2. **匿名内部类**: - 匿名内部类可以直接实例化,无需定义类名,可以继承一个类或实现一个接口。在需要一次性使用的场景下,这种方式简洁高效。 3. **StaticNestedClass和InnerClass的区别**: - Static Nested Class(静态嵌套类)与普通类相似,可以独立存在,可以有自己的静态成员,不持有对外部类的引用。 - Inner Class(内部类)是嵌套在另一个类内部的类,它有对外部类的隐式引用,可以访问外部类的私有成员,需要外部类的实例才能创建。 4. **& 和 && 的区别**: - `&` 是按位与运算符,用于对两个操作数的二进制位逐位进行与运算。在逻辑表达式中,`&` 会始终计算两边的操作数。 - `&&` 是逻辑与运算符,只有当左侧表达式为真时才会评估右侧表达式,这是短路逻辑运算。 5. **HashMap和Hashtable的区别**: - `HashMap` 是非同步的,允许`null`键和值,而`Hashtable` 是同步的,不接受`null`键和值。 - `HashMap` 在Java 8中引入了红黑树优化,性能更好,而`Hashtable` 使用链表结构。 6. **Collection和Collections的区别**: - `Collection` 是所有集合类的顶级接口,代表单列集合,如List、Set。 - `Collections` 是一个工具类,提供了各种集合操作的静态方法,如排序、查找、填充等。 7. **assert的使用**: - `assert` 用于断言,用于在开发阶段检查程序的正确性,生产环境中默认关闭,不会执行。 8. **GC(Garbage Collection)**: - GC 是垃圾收集器,自动回收不再使用的对象所占用的内存,避免内存泄漏,简化了内存管理。 9. **String对象的创建**: - `Strings = new String("xyz");` 创建了两个对象,一个在常量池,一个在堆内存。 - 字符串常量在编译时会被放入常量池,`new` 关键字则会在运行时创建新对象。 10. **Math.round() 方法**: - `Math.round(11.5)` 返回12,`Math.round(-11.5)` 返回-11,`Math.round()` 方法会四舍五入到最接近的整数。 11. **short变量的自增问题**: - `short s1 = 1; s1 = s1 + 1;` 错误,因为这里涉及到类型提升,可能会超出short的范围。 - `short s1 = 1; s1 += 1;` 正确,编译器会处理类型提升并赋值回short变量。 12. **sleep() 和 wait() 的区别**: - `sleep()` 属于Thread类,让当前线程暂停执行指定时间,释放CPU资源,但不释放锁。 - `wait()` 属于Object类,使线程进入等待状态,释放持有的锁,需要被notify()或notifyAll()唤醒。 13. **Java中的关键字goto**: - Java中没有`goto` 关键字,这与其他一些编程语言(如C/C++)不同,设计者认为`goto` 可能导致代码难以理解和维护。 以上内容仅是Java面试中的一小部分,实际面试可能还会涵盖多线程、异常处理、IO流、网络编程、设计模式等方面的知识。面试者需要全面掌握Java的基础和进阶知识,以及相关的编程实践和设计原则。
2017-08-01 上传