华盛通Java社招一面面经

华盛通 · Java开发工程师 · 一面 · 2026-04

面试题目

  1. java的锁有哪些?
  2. synchronized和ReentrantLock有什么区别?
  3. synchronized底层怎么实现的,ReentrantLock的源码有看过吗?
  4. redis实现分布式锁有哪些方式?
  5. A线程拿到分布式锁,但是运行时间超过了锁过期时间,B线程能拿到分布式锁吗?
  6. 怎么预防这种状况?
  7. mysql a b c简历索引 ,a b,b c,a c哪个索引会失效?为什么失效?为什么索引失效的机制要这么设置?
  8. ai coding用过没?现在给你一个需求,怎么通过ai coding完成这个需求?
  9. 了解sdd开发规范吗?
  10. 接口幂等和业务幂等怎么实现?
  11. mysql 乐观锁和悲观锁怎么实现?
  12. 线上出了严重问题怎么办?

参考解析

  • Java锁机制:synchronized是JVM层面锁,自动释放,基于Monitor;ReentrantLock是JDK层面锁,需手动释放,支持公平性、中断响应及条件变量(Condition)。
  • 分布式锁超时:过期后B线程可以拿到锁,导致并发安全问题。预防方案:使用Redisson的“看门狗”机制自动续期,或在业务代码中评估耗时合理设置过期时间。
  • MySQL索引失效:遵循最左前缀原则。a,b索引有效;b,c索引因跳过a失效;a,c索引因跳过b失效。失效是为了保证B+树的有序性,若跳过中间列,无法利用二分查找快速定位。
  • 接口幂等:技术幂等通常使用唯一请求号+Redis/数据库唯一约束;业务幂等通过状态机控制(如:订单状态更新时判断前置状态是否为待支付)。
  • 线上问题排查:遵循“止损优先”原则。先快速回滚或熔断限流,再保留现场(dump日志、堆栈),定位问题后在测试环境复现修复,最后发布并进行复盘。