面试面经 · 字节跳动
【字节跳动】【后端开发】【二面】Go方向二面,Redis分布式锁+MySQL异地多活深度追问
【字节跳动】【后端开发】【二面】Go方向二面,Redis分布式锁+MySQL异地多活深度追问
基本信息
| 项目 | 内容 |
|---|---|
| 公司 | 字节跳动 |
| 岗位 | 后端开发(Go方向) |
| 轮次 | 二面 |
| 时间 | 2025年秋招 |
| 面型体感 | 项目深挖+分布式系统设计,追问答到细节 |
| 结果 | 未通过 |
面试题目(按提问顺序)
- 自我介绍
- 实习/项目拷打(重点追问)
- Redis分布式锁是怎么实现的?
- 只用SETNX有什么问题?如何优化?
- 假设一个业务平均执行100毫秒,你会把锁的超时时间设置成多少?续期策略是怎样的?
- MySQL异地多活,两边的数据如何保持一致?
- 异地多活或者分库分表的情况下,自增主键冲突问题怎么解决?
- Go Slice的日常使用方式、底层数据结构、扩容机制?
- 有没有导致GC没办法回收Slice的场景?
- Slice在函数传参时是值传递还是引用传递?
- 利用Go的基本数据结构,设计一个并发安全的队列
- Go反射是什么?有哪些应用场景?
- 结合浏览器访问URL的例子,解释TCP/IP分层协议及流程
- TCP三次握手流程详细描述
- 常用Linux命令有哪些?
- ls调用了哪些系统调用?
- Unix操作系统的分层逻辑(内核态/用户态)
- 进程间通信方式有哪些?
- 项目中Redis比较有收获的设计点?
- 手撕:无重复字符的最长子串(LeetCode 3)
面试感受 / 反馈
- 两轮面试基本都在拷打实习和项目
- 面试官追问非常深:从Redis分布式锁追到续期策略,从MySQL追到异地多活数据一致性
- Go语言基础考得很细,Slice的底层结构和GC问题是重点
- 系统设计题需要能结合实际场景给出方案
- 手撕算法是LeetCode中等难度
准备建议
- Redis分布式锁要能说到Redlock、Watch Dog续期机制
- MySQL高可用方案(异地多活、分库分表)要有自己的理解
- Go语言要深入Slice、Map底层、GC机制、并发原语
- 项目中的技术决策要能说出"为什么"和"有没有更好的方案"