Java笔试面试攻略:核心问题与注意事项
版权申诉
13 浏览量
更新于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面试至关重要。在准备过程中,除了理论知识,还要注重实践经验,能够举一反三地解决问题。
2021-09-14 上传
2021-04-09 上传
2021-08-30 上传
2021-12-16 上传
2022-06-03 上传
2022-11-19 上传
2022-12-18 上传
2019-06-08 上传
xiaochuichui
- 粉丝: 0
- 资源: 8万+
最新资源
- StarModAPI: StarMade 模组开发的Java API工具包
- PHP疫情上报管理系统开发与数据库实现详解
- 中秋节特献:明月祝福Flash动画素材
- Java GUI界面RPi-kee_Pilot:RPi-kee专用控制工具
- 电脑端APK信息提取工具APK Messenger功能介绍
- 探索矩阵连乘算法在C++中的应用
- Airflow教程:入门到工作流程创建
- MIP在Matlab中实现黑白图像处理的开源解决方案
- 图像切割感知分组框架:Matlab中的PG-framework实现
- 计算机科学中的经典算法与应用场景解析
- MiniZinc 编译器:高效解决离散优化问题
- MATLAB工具用于测量静态接触角的开源代码解析
- Python网络服务器项目合作指南
- 使用Matlab实现基础水族馆鱼类跟踪的代码解析
- vagga:基于Rust的用户空间容器化开发工具
- PPAP: 多语言支持的PHP邮政地址解析器项目