重庆九八五商贸小厂Java电话面经
- 轮次
- 电话面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- Java SE、Java EE 和集合框架分别了解什么?HashMap 与 LinkedList 如何使用?
- 你接触过哪些锁?分布式锁如何实现?
- GC 如何工作?遇到内存问题如何优化?
- MySQL 的 MVCC 为什么会读到旧值?缓存双删如何设计?
- Redis 的缓存击穿、雪崩和大 key 如何处理?Lua 脚本解决什么问题?
- Go 与 Java 有什么区别?
- Spring、Spring Boot 和事务如何使用?
- 按钮重复点击和接口变慢如何处理?
- 如果代码主要由 AI 生成,如何保证质量?
《参考解析》
- 先明确语言基础、企业框架和集合容器的边界;HashMap 适合键值查找,LinkedList 更适合频繁首尾操作,随机访问较弱。
- 分布式锁要有唯一 token、过期时间和原子释放,必要时续期;锁只是协调手段,业务仍需幂等和超时保护。
- GC 回收不可达对象;内存问题应结合 GC 日志、堆转储和线程分析定位,避免盲目调大堆。
- MVCC 通过 ReadView 读取可见版本,因此并发更新时可能读旧版本;更新数据库后删除缓存,必要时延迟双删或订阅变更消息。
- 击穿可用互斥重建或逻辑过期,雪崩可用 TTL 抖动、限流和预热,大 key 要拆分或分片。Lua 将检查与扣减放在 Redis 单线程内原子执行。
- Go 以 goroutine、channel 和显式错误处理见长,Java 依赖 JVM、线程池和成熟企业生态;选型看团队和业务约束。
- Spring 负责 IOC/AOP,Spring Boot 提供自动配置;事务要通过代理调用并正确处理异常和传播行为。
- 用幂等号、唯一约束或前端禁用防重复提交;接口变慢先拆分链路并定位数据库、网络或线程池瓶颈。
- AI 生成代码必须经过需求约束、静态检查、测试、人工审查和运行监控,不能因“能运行”就直接上线。