Java笔试面试攻略:核心问题与注意事项

版权申诉
0 下载量 80 浏览量 更新于2024-09-03 收藏 13KB DOCX 举报
"Java笔试和面试的注意事项及常见问题" 在Java的笔试和面试中,你需要准备各种技术问题,涵盖语言特性和应用实践。以下是一些可能会遇到的问题及其详细解释: 1. **final, finally, finalize的区别**: - `final` 用于声明不可变的变量、类或方法,确保其内容不被修改。 - `finally` 是用于异常处理的,无论是否发生异常,都会执行finally块中的代码。 - `finalize` 是一个对象生命周期的方法,系统在垃圾收集前尝试回收资源时调用。 2. **匿名内部类**: - 匿名内部类可以直接继承一个类或实现一个接口,无需定义名称。 3. **StaticNestedClass和InnerClass**: - Static Nested Class(静态嵌套类)是静态的,可以直接访问外部类的静态成员,不持有对外部类的引用。 - Inner Class(内部类)是非静态的,它可以访问外部类的实例变量,需要通过一个外部类的实例来创建。 4. **与的区别**: - 是一种泛型容器,存储单个元素;是泛型集合,可以存储多个元素。 5. **HashMap和Hashtable的区别**: - HashMap允许键和值为null,而Hashtable不允许。 - HashMap不是线程安全的,而Hashtable是线程安全的。 - HashMap的迭代顺序是不确定的,而Hashtable的迭代顺序与插入顺序一致。 6. **Collection和Collections的区别**: - Collection是所有集合框架的顶级接口,表示单个元素的集合。 - Collections是针对集合操作的工具类,提供了一系列静态方法,如排序、查找等。 7. **assert的使用**: - 在调试和测试阶段,assert用于断言某个条件是否满足,帮助检查代码逻辑。 8. **GC(垃圾收集)**: - GC是Java自动内存管理的一部分,负责回收不再使用的对象所占用的内存。 - 需要GC是因为手动内存管理可能导致内存泄漏。 9. **String对象创建**: - `Strings newString(xyz);` 创建了两个String对象,一个在常量池,一个在堆。 - 字符串是不可变的,所以每次修改字符串都会生成新的对象。 10. **Math.round()**: - Math.round(11.5)等于12,Math.round(-11.5)等于-11。 11. **编译错误**: - `shts11;s1s11;` 错误,变量名未定义。 - `s11;` 错误,如果`s11`是整数,缺少操作符。 12. **Sleep()与wait()**: - Sleep()是Thread类的方法,让当前线程暂停执行指定时间,不会释放锁。 - wait()是Object类的方法,使线程等待,释放锁,需要在同步块或方法中调用。 13. **Java没有goto语句**: - Java设计者故意省略了goto,以鼓励更结构化的编程。 14. **length()方法**: - 数组有length属性,但没有length()方法。 - String有length()方法,返回字符串的长度。 15. **Overload和Override的区别**: - Overload(重载)是指在一个类中,方法名相同但参数列表不同的多个方法。 - Override(重写)是指子类对父类中同名方法的重新实现,方法签名必须完全一致。 16. **Set的唯一性判断**: - Set中的元素是唯一的,通过`equals()`方法来判断元素是否重复。 17. **运行时异常举例**: - `NullPointerException` 是最常见的运行时异常,当试图访问空引用时抛出。 18. **err和exception**: - `err` 是标准错误流,通常用于打印错误信息。 - `exception` 是程序运行时抛出的异常对象,可以捕获并处理。 19. **继承关系**: - List, Set, Map都继承自Collection接口。 20. **abstract class与interface的区别**: - 抽象类可以包含方法实现,接口只能声明方法。 - 类可以实现多个接口,但只能继承一个抽象类。 21. **abstract, static, native, synchronized的组合**: - abstract不能与static、native、synchronized一起使用,因为它们代表不同的特性。 22. **接口与接口继承**: - 接口可以继承其他接口,实现多继承。 - 抽象类可以实现接口,也可以继承实体类。 23. **启动线程**: - 通常使用`Thread.start()`方法启动线程,而`Thread.run()`只是普通方法调用,不会开启新线程。 这些知识点涵盖了Java基础、集合、异常处理、并发编程等多个方面,理解和掌握它们对于顺利通过Java面试至关重要。在准备过程中,除了理论知识,还要注重实践经验,能够举一反三地解决问题。