面试面经 · 百度
【百度】Go后端二面(Go内存模型+取球博弈+千万级排行榜设计)
【百度】Go后端二面
基本信息
| 项目 | 内容 |
|---|---|
| 公司 | 百度 |
| 岗位 | Golang 后端开发(秋招) |
| 轮次 | 技术二面 |
| 时间 | 2025年8月 |
| 面型体感 | 难度明显高于一面,有场景设计和智力题 |
| 结果 | 通过 |
面试题目(按提问顺序)
- 自我介绍,详细介绍项目
- 项目深挖:整体架构、核心模块、遇到的最大技术挑战
- Golang 内存模型:多协程/多线程对一个数据修改后,其余 CPU 对其的可见性如何保证?
- Go 的 sync 包有哪些同步原语?Mutex 和 RWMutex 的区别?
- Go 的 channel 底层实现原理?有缓冲和无缓冲的区别?
- 场景设计题:千万级用户排行榜——需要实时展示积分前 100 名用户,100 名之外需要能查到自己的大概排名,怎么设计?
- 智力题/博弈题:取球游戏,一共 99 个球,每次取 1-4 个,第一个玩家第一次取多少个必胜?
- 一致性 Hash 的原理?怎么解决数据倾斜问题?
- 负载均衡有哪些算法?哪个比较好?
- 手撕代码:递归实现反转链表
- 手撕代码:非递归实现反转链表
- 手撕代码:二进制字符串对 5 取模(不能直接转换成十进制)
面试感受 / 反馈
- 二面时长约 60 分钟,难度比一面高很多
- Go 内存模型问得很深,不是背八股能搞定的,需要真正理解 Go 的 happens-before 原则
- 场景设计题(排行榜)考察系统设计能力,要能给出完整方案
- 智力题/博弈题是百度特色,需要平时多练逻辑思维
- 手撕给了 3 道题,代码量较大
准备建议
- 二面会深挖项目,要准备好"架构选型理由"和"技术难点解决方案"
- Go 方向要理解内存模型、goroutine 调度、GC 底层
- 场景设计题要训练:排行榜(Sorted Set)、短链接、秒杀、消息推送等经典场景
- 智力题/博弈题多练:巴什博弈、 Nim 游戏等
- 手撕代码不仅要写对,还要能分析时间/空间复杂度
反问示例
- 团队目前在做的核心项目是什么?
- 新人入职后的培养机制?