java后端面试的三个问题总结(1)

2020-06-08  本文已影响0人  Bury丶冬天
  1. 设立保护分支 通常也就是发布分支(一般是master分支);
  2. 所有开发者建立自己dev分支进行开发
  3. 需求开发完成后 首先基于 master 分支进行 rebase 操作
  4. 然后提交合并请求
  5. 有权限的人对代码进行review 代码等通过规范后合并到主分支
  1. 查询操作 数据库 select 操作天然是幂等性的
  2. 删除操作,调用一次和多次都是将指定的数据删除(可能返回的数据不一样,删除的数据不存在,返回0,删除的数据多条,返回结果多个)
  3. 数据库建立唯一索引,例如主键,唯一键,对数据操作的时候使用唯一索引作为条件
  4. 使用token机制
  5. 悲观锁(注意建立索引,通过索引字段操作,否则可能会导致全表加锁)
  6. 乐观锁
  7. 分布式系统中使用分布式锁对资源加锁,(分布式锁一般使用redis的setnx指令完成,setnx指令存在缺陷,set(key,1,30,NX))
  8. 对外接口如微信支付等接口通过 prepayid 唯一确定支付订单,防止同一订单多次支付的情况.
  1. 数据库引擎不支持事务,数据库底层不支持事务,则注解无能为力
  2. 数据源没有配置事务管理器(如:Springboot中没有配置@EnableTransactionManagement)
  3. 方法不是public
  4. @Transactional 注解属性 propagation 设置错误(使用了 NOT_SUPPORTED)
  5. 同一个类中 一个方法调用了加了@Transactional注解的方法,此时事务失效
  6. 方法中的异常没有抛出来,被try catch吃了
  7. @Transactional 注解属性 rollbackFor 设置 监视的异常类型匹配不上
上一篇 下一篇

猜你喜欢

热点阅读