Java中级开发面试题面经
《面试题目》
- 做自我介绍。
- 介绍最近的项目,以及项目中的亮点。
- 项目开发中如何做技术选型,请举一个具体例子。
- 日常如何带领小组推进开发。
- 分布式锁的原理是什么。
- ORM 的原理是什么。
- MySQL 是如何优化的。
- 线程池在项目中怎么使用。
- 多线程之间如何同步数据。
《参考解析》
- 分布式锁原理:常见实现是 Redis
SET key value NX EX,用唯一 value 标识持有者,释放锁时用 Lua 脚本保证“判断 value + 删除”原子执行。生产中还要考虑锁超时、续期、可重入和业务幂等。 - ORM 原理:ORM 把对象模型映射到关系型表结构,通过元数据、反射、代理或字节码增强完成 SQL 生成、参数绑定、结果集映射和脏检查。MyBatis 更偏 SQL 映射,JPA/Hibernate 更偏对象状态管理。
- MySQL 优化思路:先定位慢 SQL,再看执行计划、索引命中、扫描行数、排序和临时表。优化手段包括建立合适联合索引、避免索引失效、减少回表、拆分复杂查询和控制单表数据量。
- 线程池使用:核心参数包括核心线程数、最大线程数、队列、存活时间、线程工厂和拒绝策略。业务中要按 CPU 密集或 IO 密集区分配置,使用有界队列,并对任务超时、异常和拒绝进行监控。
- 多线程同步数据:可以使用锁、原子类、并发容器、
CountDownLatch、CompletableFuture等方式。选择时要明确共享数据范围、并发冲突点和一致性要求,避免把所有逻辑粗暴串行化。