熙牛医疗Java后端一面面经
《面试题目》
一、自我介绍
二、Java核心技术
- 集合的分类
- 有哪些线程安全的集合
- 说一下CopyOnWriteArrayList
- 说一下你知道的锁
- 讲一下CAS
- final修饰变量与引用对象的区别
- 线程池的参数
- 创建线程池的几种方法
三、MySQL
- 出现慢SQL怎么优化
- explain主要查看哪几个参数
- 索引失效有哪些情况
- 模糊匹配必然会失效吗
- 索引的分类
四、Spring
- 讲一下Spring AOP
- AOP支持的两种动态代理是什么
- AOP默认哪个动态代理
- 什么时候使用CGLIB代理
- Spring Bean的作用域
- 事务失效有哪些情况及解决方法
五、项目与综合
- 项目介绍
- 对AI的使用及看法,以及对编程的影响
六、反问环节
《参考解析》
- CopyOnWriteArrayList:采用读写分离思想,读不加锁,写时复制一份新数组进行修改,最后替换引用。适用于读多写少的场景。
- 线程池参数:核心线程数、最大线程数、存活时间、时间单位、阻塞队列、线程工厂、拒绝策略。核心关注拒绝策略与队列选择。
- MySQL慢SQL优化:查看explain执行计划,优先优化索引,检查扫描行数,利用覆盖索引,避免回表,拆分大查询。
- Spring AOP代理:默认JDK动态代理(基于接口),当目标类未实现接口或设置强制使用时采用CGLIB(基于字节码继承)。
- 事务失效:常见原因包括方法自调用(非代理对象调用)、注解未加在public方法、内部未捕获异常导致无法回滚、未开启事务配置等。