面试面经 · 百度
【百度】Java后端一面(20道八股连环问+HashMap手撕)
【百度】Java后端一面
基本信息
| 项目 | 内容 |
|---|---|
| 公司 | 百度 |
| 岗位 | Java后端开发(秋招) |
| 轮次 | 技术一面 |
| 时间 | 2025年10月 |
| 面型体感 | 题量大、节奏快,八股覆盖全面 |
| 结果 | 通过 |
面试题目(按提问顺序)
- ArrayList 和 LinkedList 的区别?各自适用场景?
- HashMap 底层实现原理?JDK 1.8 的扩容机制?
- ConcurrentHashMap 的原理?JDK 1.7 和 1.8 的区别?
- 线程池的好处?核心参数有哪些?执行流程是怎样的?
- synchronized 和 ReentrantLock 的区别?公平锁和非公平锁?
- volatile 关键字的作用?如何保证可见性和有序性?
- JVM 内存模型?堆和栈的结构?方法区什么时候回收?
- GC 算法有哪些?G1 收集器的原理?如何实现可预测停顿?
- Spring IOC 和 AOP 的原理?
- Spring 的事务管理?@Transactional 注解的底层原理?
- MySQL 索引的 B+ 树结构?聚簇索引和二级索引的区别?
- MySQL 事务隔离级别?MVCC 的实现原理?
- 索引失效的场景有哪些?如何优化慢查询?
- Redis 的数据结构?String 底层 SDS 和 C 字符串的区别?
- Redis 的持久化策略?RDB 和 AOF 的优缺点?
- Redis 分布式锁怎么实现?锁过期了但业务没执行完怎么办?
- TCP 三次握手和四次挥手?为什么 TIME_WAIT 是 2MSL?
- HTTP 各版本的特点?HTTP/2 多路复用原理?
- 手撕代码:封装 Java HashMap,实现 SetAll 功能,要求 O(1) 时间复杂度
- 手撕代码:合并两个有序链表
面试感受 / 反馈
- 百度一面题量非常大,近 20 道八股 + 2 道手撕,基本全程在回答问题
- 考察覆盖面广:Java 集合、并发、JVM、Spring、MySQL、Redis、网络协议
- 面试官节奏较快,每个问题不会给太多思考时间
- 手撕 SetAll 是百度特色题,需要用到版本戳 + 懒更新的思想
准备建议
- 百度一面八股覆盖面极广,建议按模块系统复习,不要有知识盲区
- 重点模块:Java 并发(32%)> 数据库(28%)> 数据结构与算法(19%)
- 手撕代码以 Hot 100 为主,注意百度特有题型(如 SetAll 封装)
- SQL 实战能力也是高频考点(部门最高薪资查询等)
反问示例
- 部门主要业务方向是什么?
- 团队目前的技术栈?