Java中级开发面试题面经

《面试题目》

  1. 做自我介绍。
  2. 介绍最近的项目,以及项目中的亮点。
  3. 项目开发中如何做技术选型,请举一个具体例子。
  4. 日常如何带领小组推进开发。
  5. 分布式锁的原理是什么。
  6. ORM 的原理是什么。
  7. MySQL 是如何优化的。
  8. 线程池在项目中怎么使用。
  9. 多线程之间如何同步数据。

《参考解析》

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