目录
一.@Transactional 原理和常见的坑
前期准备
事务不生效的几种 Case
原理
源码解读
@Transactional 执行机制
private 导致事务不生效原因
异常不匹配原因
两种 @Transactional
Spring @Transactional
javax.transaction.Transactional
二.@Autowired 和 @Resource 的区别是什么?
@Autowired
@Resource
小结
三.什么是序列化?常见的序列化协议有哪些?
什么是序列化?什么是反序列化?
实际开发中有哪些用到序列化和反序列化的场景?
序列化协议对应于 TCP/IP 4 层模型的哪一层?
常见序列化协议对比
JDK 自带的序列化方式
Kryo
四.深拷贝和浅拷贝区别了解吗?什么是引用拷贝?
五.优惠券设计
六.数据库优化
优化方案
Mysql索引
多表查询优化
一条MySQL语句的执行过程
七.静态代理和动态代理
静态代理
静态代理的特点
静态代理的实现
动态代理
动态代理的特点
基于JDK实现
基于CGlib实现
JDK代理与CGLIB代理的区别
八. AOP 了解吗?有什么用?切面执行顺序如何控制?
谈谈自己对于 AOP 的了解
Spring AOP 和 AspectJ AOP 有什么区别?
AspectJ 定义的通知类型有哪些?
多个切面的执行顺序如何控制?
用AOP实现异步上传
九.MQ 消息丢失、重复、积压问题,如何解决?
案例分析
案例解答
消息丢失
消息检测-拦截器机制
重复消费消息
消息积压-消费端
总结
十. 说一说你对多态的理解
十一. ==和equals()有什么区别?
十二.String,StringBuilder,StringBuffer
十三.接口和抽象类
十四.static与final
十五. 泛型
一.@Transactional 原理和常见的坑
前期准备
// 提供的接口
public interface UserDao {
// select * from user_test where uid = "#{uid}"
public MyUser selectUserById(Integer uid);
// update user_test set uname =#{uname},usex = #{usex} where uid = #{uid}
public int updateUser(MyUser user);
}
//====================================================================&