Java面试题复习总结(自用)
多线程
线程池:
- 为什么使用线程池?
- 说一下创建线程池时的核心参数和线程池执行原理?
- 线程池的拒绝策略有哪些?
- 常用的阻塞队列有哪些?
- ArrayBlockingQueue和LinkedBlockingQueue的区别?
- 阻塞队列的作用?
- 为什么不先创建救急线程而是先把任务添加到阻塞队列中?
- 具体说说常见的线程池种类?
- 如何确定核心线程数和最大线程数?
线程基础:
- 线程与进程的区别是什么?
- 谈一谈守护线程?
- 创建线程的方式有哪些?
- 实现Callable接口和Runnable接口都可以创建线程,二者的区别是什么?
- 线程的start()和run()方法的区别?
- 线程有哪些状态,这些状态之间是如何切换的?
- wait()、sleep()、yield()和join()方法之间的区别?
- notify()和notifyAll()方法的对比?
- 如何保证多个线程之间的执行顺序?
- 如何终止一个正在运行中的线程?
- ThreadLocal的实现原理?
- ThreadLocal是如何导致内存泄漏的?
- 如何防止ThreadLocal内存泄漏?
并发安全:
- 讲一下Java内存模型?
- 谈谈你对线程安全问题的理解?
- Java是如何保证多线程的执行安全?
- Synchronized关键字的底层原理?
- 锁机制是如何升级的?
- Synchronized和Lock的区别?
- 谈一谈你对volatile关键字的理解?
- Synchronized和volatile关键字的区别?
- 谈一谈AQS?
- 了解CAS吗?
- 讲一下乐观锁和悲观锁?
- ReentranLock的实现原理是什么?
- ReentranLock和Synchronized的区别?
- 聊一下ConcurrentHashMap?
Spring
- 什么是Spring框架?
- Spring框架的优势是什么?
- Spring框架中用到了哪些设计模式?
- 解释一下Bean的生命周期?
- BeanFactory和ApplicationContext的区别?
- 解释一下Spring支持的几种Bean的作用域?
- Spring框架中的单例Bean是线程安全的吗?
- 什么是Bean的自动装配?有哪些方式?
- 解释Spring中的循环引用?
- 构造函数中的循环依赖怎么解决?
- 谈谈你对IOC的理解?
- 如何实现一个IOC容器?
- 什么是AOP?
- Spring中事务是如何实现的?
- 声明式事务的原理是什么?
- Spring中事务的隔离级别?
- Spring中事务的传播机制?
- Spring中事务失效的场景有哪些?解决方法?
- @Autowired和@Resource的区别?
SpringMVC
- SpringMVC的执行流程了解吗?
SpringBoot
- Spring、SpringMVC、SpringBoot有什么区别?
- 如何理解SpringBoot中的starter?
- 讲一讲SpringBoot中的自动配置?
MyBatis
- MyBatis是什么?
- MyBatis框架的优缺点?
- ORM是什么?
- #{}和${}的区别是什么?
- MyBatis执行流程/工作原理是什么?
- MyBatis是否支持延迟加载?
- 延迟加载的底层原理是什么?
- MyBatis的一级、二级缓存使用过吗?
- 二级缓存什么时候会清理缓存中的数据?
MySQL
事务:
- 介绍一下事务的四大特性?
- 并发事务会带来哪些问题?
- 如何解决并发事务带来的问题/事务的隔离级别有哪些?
- 可重复读和幻读的区别?
- 事务的ACID靠什么保证?
- 事务的三大日志是什么?作用?
- bin log 和 redo log的区别?
- undo log 和 redo log的区别?
- 什么是MVCC?实现原理是什么?
优化:
其它:
- MySQL主从同步是如何实现的?
-----------------持续更新----------------------------------------
#java##面试题#