Java笔试面试攻略:核心问题与注意事项
版权申诉
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面试至关重要。在准备过程中,除了理论知识,还要注重实践经验,能够举一反三地解决问题。
2021-09-14 上传
2021-04-09 上传
2021-08-30 上传
2022-06-03 上传
2021-12-16 上传
2022-11-19 上传
2019-06-08 上传
2022-12-18 上传
xiaochuichui
- 粉丝: 0
- 资源: 8万+
最新资源
- 俄罗斯RTSD数据集实现交通标志实时检测
- 易语言开发的文件批量改名工具使用Ex_Dui美化界面
- 爱心援助动态网页教程:前端开发实战指南
- 复旦微电子数字电路课件4章同步时序电路详解
- Dylan Manley的编程投资组合登录页面设计介绍
- Python实现H3K4me3与H3K27ac表观遗传标记域长度分析
- 易语言开源播放器项目:简易界面与强大的音频支持
- 介绍rxtx2.2全系统环境下的Java版本使用
- ZStack-CC2530 半开源协议栈使用与安装指南
- 易语言实现的八斗平台与淘宝评论采集软件开发
- Christiano响应式网站项目设计与技术特点
- QT图形框架中QGraphicRectItem的插入与缩放技术
- 组合逻辑电路深入解析与习题教程
- Vue+ECharts实现中国地图3D展示与交互功能
- MiSTer_MAME_SCRIPTS:自动下载MAME与HBMAME脚本指南
- 前端技术精髓:构建响应式盆栽展示网站