Java面试重点:基础、集合、锁与线程池、Spring框架要点

需积分: 5 0 下载量 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程序员应该掌握的知识点概览,对于准备面试或提升技能都非常有帮助。