百度 9 月 Java 面试真题复盘:ThreadLocal 深
- 2026-09-19 15:20:58
百度 9 月 Java 面试真题复盘:ThreadLocal 深挖 + AI 项目加持
大厂真题系列第七期,百度。
百度有两个很鲜明的标签:一个是 AI(文心一言、大模型),另一个是基础功底的"深挖式"提问。
从面经看,百度一面会把一个知识点挖到底层。最典型的是 ThreadLocal——它能连问你四层:实现原理是什么?ThreadLocalMap 的 key/value 是什么引用类型?为什么 key 能被 GC 回收但 value 不能?线程池场景怎么办?
而二面则是"项目 + 场景",还会专门问 AI 相关的项目(百度的 AI 基因)。
一、ThreadLocal 连环问:百度的"招牌深挖题"

这道题在百度面经里出现频率极高,而且是层层递进的四连问。

第一问:ThreadLocal 的实现原理?
答案要点:每个 Thread 内部有一个 ThreadLocalMap(不是 ThreadLocal 持有数据,是 Thread 持有)。ThreadLocal 作为 key,值作为 value 存在这个 map 里。所以数据是"线程私有的",各线程互不干扰。
第二问:ThreadLocalMap 的 key 和 value 是什么引用类型?
答案要点:key 是 ThreadLocal 对象,是弱引用(WeakReference);value 是你要存的数据,是强引用。
第三问:为什么 key 能被 GC 回收,但 value 不能?
答案要点:这是最关键的一问。
key 是弱引用,当 ThreadLocal 对象没有强引用指向它时,GC 会回收它,此时 map 里的 entry 变成 key=null, value=还有值。
但 value 是强引用,它的引用链是:Thread → ThreadLocalMap → Entry → value。只要线程还活着,这条链就断不了,value 就回收不掉。
于是产生内存泄漏:key 没了,value 还在 map 里占着内存,而且再也访问不到了。
第四问:怎么解决?线程池场景为什么更危险?
答案要点:用完必须手动 remove()。Map 的 get/set 时会顺带清理 key=null 的 entry(expungeStaleEntry),但不保证清理干净。
线程池场景更危险:线程池的线程是复用的、长期存活的,一条线程处理完任务不销毁,它持有的 value 就永远不回收。累积下来,内存泄漏会越来越严重。
四问答完,才算真正理解 ThreadLocal。 这是百度这类"深挖型"面试的通关标志——不是背"弱引用会泄漏",而是能讲清整条引用链和清理机制。
二、自动装箱拆箱:一个"送分题"里的坑
自动装箱与拆箱(高频 3/5)
题目:Java 的自动装箱与拆箱是什么?
答案要点:装箱是基本类型 → 包装类型(int → Integer,调 Integer.valueOf);拆箱反过来(调 intValue)。
追问点(百度的坑在这):Integer a = 127; Integer b = 127; a == b 是 true 还是 false?
答案:127 是 true,128 是 false。因为 Integer.valueOf 对 -128 到 127 做了缓存(IntegerCache),这个范围内的对象复用同一份,超出范围就 new 新对象。所以 127 比较的是同一个对象(true),128 是两个不同对象(false)。
这个坑很经典:基础题里藏着缓存机制。答出来说明你"看过源码",不只是"用过"。
三、项目深挖:百度爱问"架构怎么设计的"
百度二面围绕项目问得很细,典型是一个 OJ 判题系统:
题目:介绍一下你的 OJ 判题系统,架构怎么设计的?
答案要点:前后端分离,前端 Vue,后端 Spring Boot。核心模块:
—题目管理(CRUD + 测试用例)
—代码提交(在线编辑器 + 语法检查)
—判题执行(沙箱隔离——这个是重点)
—结果回显
追问点(百度必挖):
—"判题怎么保证安全?"——沙箱隔离,限制 CPU/内存/时间,防止用户代码搞破坏。
—"高并发提交怎么办?"——判题任务丢进 MQ 异步处理,判题机水平扩容。
—"判题结果怎么保证一致?"——状态机 + 幂等。
准备百度项目题,重点准备"架构设计 + 安全 + 并发"这三层。
四、AI 相关:百度的"基因题"
AI 后端接口(高频 3/5)
题目:你项目里的 AI 类后端接口,用的是哪个地方的接口?(百度真实二面问过)
答案要点:这类题考的是"你有没有真做过 AI 集成"。回答要具体:调用哪家大模型(文心一言/通义/DeepSeek)、怎么封装(HTTP + SSE 流式)、怎么做上下文管理(Redis 存会话)、怎么做限流熔断(Sentinel)。
延伸准备(百度 AI 基因,可能问):
—RAG 架构(向量化 + 检索 + 生成)
—大模型调用的工程问题(超时、重试、降级)
—怎么控制成本(Token 计费、缓存)
百度是六家里"AI 味"最重的。如果你有 AI 项目经验,一定要重点讲;如果没有,也要把"Java 怎么对接大模型"这套讲清楚——这个方向在百度是加分项。
五、百度考察侧重点总结
百度的"性格"总结:
第一,深挖式提问。不是一个知识点问一句,而是"是什么→为什么→怎么实现→怎么优化"四层递进。ThreadLocal 就是标本。
第二,项目问架构。百度二面爱问"架构怎么设计的",尤其关注安全和并发。
第三,AI 是加分项。有 AI 项目经验能明显加分,没有也要懂"Java 对接大模型"的基本盘。
准备百度,抓两个重点:把 ThreadLocal、并发、JVM 这些"深挖型考点"准备到"能讲三层";把项目的技术选型和架构设计想清楚。
最后
这期是《大厂真题》第七篇。百度是"深挖型"的代表——它不考偏题,但会把基础题挖到你看没看过源码。
应对方法:准备时对自己追问三层。每学一个知识点,问自己"它是怎么实现的、为什么这么设计、有什么坑"。这三个问题答上来,百度的深挖就难不倒你。

关注我,大厂真题,一期一个厂,持续更新 🔥
本文由公众号原创 · 转载请注明出处