Java面试重点:基础、集合、锁与线程池、Spring框架要点
需积分: 5 178 浏览量
更新于2024-08-04
收藏 6KB MD 举报
"这是一份面试题总结,涵盖了Java基础、集合、锁、线程池以及Spring框架的相关知识。"
面试题总结涵盖了多个Java编程的关键领域:
1. **Java基础**
- `==`和`equals`的区别:`==`用于比较基本类型变量的值或者对象的引用是否相等,而`equals`是Object类中的方法,通常用于比较对象的内容是否相等。
- 接口和抽象类:接口不包含方法实现,只能定义常量和抽象方法;抽象类可以有非抽象方法和成员变量,提供部分实现。
- `static`变量和普通变量:`static`变量属于类,而普通变量属于类的实例。
- 值传递和引用传递:Java中只有值传递,但对对象的引用也是值的一种形式,因此看似引用传递,实际上是复制了对象引用的副本。
2. **异常处理**
- `try`中`return`,`finally`还会执行吗:是的,无论`try`块中是否有`return`,`finally`块中的代码总是会被执行。
3. **JVM相关**
- JDK、JRE、JVM的关系:JDK是Java开发工具包,包含JRE和开发工具;JRE是Java运行环境,用于运行Java程序;JVM是Java虚拟机,负责执行字节码。
4. **自动装箱与拆箱**
- 自动装箱是将基本类型转换为对应的包装类对象;自动拆箱则是将包装类对象转换为基本类型。
5. **集合框架**
- `String`、`StringBuffer`、`StringBuilder`:`String`不可变,适合字符串拼接;`StringBuffer`和`StringBuilder`可变,线程安全和非线程安全,适用于大量字符串操作。
- 集合中移除元素:可通过`remove()`、`removeAll()`、`retainAll()`等方法。
- `ArrayList`和`LinkedList`:`ArrayList`基于数组,查询快,插入删除慢;`LinkedList`基于链表,插入删除快,查询慢。
6. **锁机制**
- 乐观锁和悲观锁:乐观锁假设不会发生冲突,读取数据时不会加锁,写入时检查是否有冲突;悲观锁假设会发生冲突,读取数据时就加锁。
- `synchronized`和`Lock`:`synchronized`是内置锁,使用简单,但粒度较粗;`Lock`是显式锁,提供了更细粒度的控制,如可中断、可尝试获取锁等。
7. **线程池**
- 线程池的创建和拒绝策略:线程池通过`ExecutorService`创建,拒绝策略包括AbortPolicy、CallerRunsPolicy、DiscardPolicy、DiscardOldestPolicy等,用于处理任务过多的情况。
- 线程池的状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED。
8. **Spring框架**
- Spring的执行流程:从`@SpringBootApplication`注解开始,通过`ApplicationContext`加载配置,初始化Bean并管理其生命周期。
- Spring的AOP底层实现:基于动态代理,可以是JDK动态代理或CGLIB动态代理。
- Spring的两大组件:IOC(依赖注入)和AOP(面向切面编程)。
- Spring Boot启动原理:通过`SpringApplication.run()`方法启动,自动配置和引导应用。
这份面试题总结提供了一个全面的Java程序员应该掌握的知识点概览,对于准备面试或提升技能都非常有帮助。
216 浏览量
2023-12-18 上传
376 浏览量
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
ZDX5432l
- 粉丝: 0
最新资源
- 自动化Azure SQL数据库Bacpac导入导出流程
- 硬盘物理序列号读取工具的使用方法和功能介绍
- Backbone.js 和 RequireJS 主项目配置指南
- C++实现三次样条插值算法的详细解读
- Navicat for MySQL:轻松连接与管理数据库
- 提高客户满意度的CRM系统解决方案
- VEmulator-GUI:实现VE.Direct设备仿真界面
- C#自学三年:十个实用编程实例解析
- 泰坦尼克号数据分析:揭开公共数据集的秘密
- 如何使用类注解轻松将对象数据导出为Excel
- Android自定义GuideView引导界面的设计与实现
- MW-Gadget-BytesPerEditor: 页面编辑贡献大小分析脚本
- Python电机控制程序实现与应用
- 深度学习JavaScript,快速提升编程技能
- Android实现3D旋转切换视图控件详解
- COLLADA-MAX-PC.Max2019转换工具v1.6.68发布