面试深挖问题清单

这个文件用于持续记录简历中每个技术点可能被追问的问题。后续每写完一篇文章,都把关键问题补充进来。

Java 并发与高并发治理

  • 线程池核心参数如何设置?为什么不能直接使用 Executors.newFixedThreadPool
  • 销售活动高峰时,如何判断瓶颈在线程池、数据库、MQ 还是下游接口?
  • 异步化以后如何保证链路可观测、异常可追踪、结果可补偿?
  • 限流、熔断、降级、隔离分别解决什么问题?
  • CompletableFuture 适合哪些并发编排场景?异常如何统一处理?
  • 本地锁、数据库锁、Redis 分布式锁分别适合什么边界?
  • MQ 削峰后,如何避免消息堆积把问题延后爆发?
  • 月底结算高峰时,哪些链路应该同步返回,哪些链路适合异步化?

JVM 调优与线上诊断

  • Full GC 频繁时,第一步看什么?
  • 如何通过 GC 日志判断是内存泄漏、分配速率过高还是老年代碎片?
  • MAT 里如何定位内存泄漏?
  • Arthas 的 tracewatchthread 分别适合什么场景?
  • 大 Excel 导出为什么容易 OOM?分页查询和流式写入分别解决什么问题?
  • 线上诊断时如何避免 Arthas 命令对生产系统造成额外压力?
  • 稳定性治理里,接口耗时、线程池、GC、MQ 堆积应该如何联动观察?

Spring / MyBatis / 架构升级

  • Spring3 到 Spring Boot 迁移最容易踩哪些坑?
  • MyBatis 插件机制的拦截点有哪些?
  • AOP + SpEL 做数据权限时如何避免性能问题?
  • Quartz 迁移到 XXL-Job 时如何保证任务不重复执行?
  • WebLogic 到 Undertow 的容器差异主要体现在哪些地方?
  • MyBatis 分页拦截器如何识别和改写不同数据库方言?
  • Spring 事务失效有哪些典型原因?
  • 老系统升级时如何设计灰度、回滚和验收策略?

数据库与信创迁移

  • Oracle 的 ROWNUM 和 MySQL/OceanBase 的 LIMIT 语义有什么差异?
  • CONNECT BY 迁移到递归 CTE 时如何避免死循环?
  • OceanBase 慢 SQL 如何看执行计划?
  • 新旧 SQL 结果对比工具应该如何设计?
  • Oracle 空字符串和 NULL 的差异会影响哪些业务判断?
  • 存储过程迁移到 Java 服务时,事务边界和批处理性能如何保证?
  • 物化视图适合哪些报表场景?数据新鲜度如何权衡?
  • 关系型数据库和图数据库在人脉关系查询上的边界是什么?

分布式中间件与稳定性

  • RocketMQ 如何保证消息不丢?
  • 事务消息适合什么场景,不适合什么场景?
  • Kafka 为什么适合行为轨迹链路?
  • Sentinel 的限流和熔断规则如何设计?
  • Seata AT 模式的原理和局限是什么?
  • 消息消费如何保证幂等?重复消费和乱序消费怎么处理?
  • Nacos 配置变更如何避免误发布影响生产?
  • MDC + ELK 如何串起一次跨系统调用?

AI 工程化

  • RAG 如何处理知识过期、权限隔离和召回不准?
  • Function Calling 调业务 API 时如何做权限控制和审计?
  • SSE 和 WebSocket 在 AI 对话场景下如何取舍?
  • MCP 的价值是什么?和普通 API 封装有什么区别?
  • 大模型调用业务接口时,如何防止越权、误操作和敏感数据泄露?
  • AI 客服如何区分“可直接回答”“需要检索”“需要工具调用”“需要人工介入”?
  • OpenClaw 做业务流程自动化时,如何处理失败重试和人工确认?
  • ReAct 在研发效能工具里如何避免无限循环和错误推理扩散?