腾讯三轮面试面经分享

555 阅读6分钟

近期互联网大厂招聘门槛持续攀升,据2025年行业数据显示,腾讯校招录取率已突破50:17,技术岗面试尤其考验候选人的知识储备深度。根据群友的交流,和不少拿到面试机会的群友反馈:如今想斩获腾讯Offer,不仅需要掌握语言核心特性,更要具备应对全栈式技术拷问的能力。

以群友分享的真实腾讯面经为例——该候选人历经三轮技术面,首轮35分钟高密度追问Go语言底层机制,从Goroutine调度原理到Redis缓存雪崩解决方案均被深度挖掘;后续面试则涉及分布式系统设计、高并发场景优化等跨领域八股文,甚至要求手撕红黑树实现。正如内部员工透露,腾讯近年愈发青睐「T型人才」:既要在垂直领域有硬核技术沉淀,又需具备快速适应多技术栈的横向拓展力]。

文末还有高并发相关面经。

腾讯一面

  1. map怎么去做并发安全
  2. 外层的协程能捕获子协程的panic吗?
  3. panic都会被捕获吗?哪些panic不会捕获?
  4. slice和数组的区别?底层结构?
  5. go哪些内置类型是并发安全的?
  6. go的结构体可以嵌套组合吗?
  7. 两个结构体可以等值比较吗?
  8. 你如何理解interface类型
  9. 1.18版本后interface有什么增强?
  10. interface可以进行等值比较吗?
  11. 说说逃逸分析
  12. channel有缓冲和无缓冲的区别
  13. map并发访问会怎么样?这个异常可以捕获吗?
  14. GMP模型
  15. GMP模型中什么时候把G放全局队列?
  16. go的gc
  17. gc扫描是并发的吗?
  18. gc中的根对象是什么?
  19. 项目中etcd用来干什么的?
  20. mysql索引B+T
  21. 索引的优缺点
  22. redis用来做什么的?
  23. 用户信息怎么存的?都走缓存吗?
  24. redis过期淘汰策略

腾讯二面

  1. 会什么语言?
  2. tcp和udp的本质区别
  3. tcp可靠通信怎么实现的
  4. 说一说拥塞控制
  5. 滑动窗口的作用
  6. 什么是粘包,怎么解决
  7. 堆和栈有什么区别
  8. 进程的进程空间是怎么样的?
  9. 进程,线程,协程的区别
  10. 链表额线性表的区别
  11. 有序双向链表如何高效查询?
  12. kafka如何实现高吞吐的?
  13. 介绍最近的项目
  14. 缓存击穿,雪崩,穿透

腾讯三面

  1. 项目中比较有挑战性的事?
  2. 什么是伪随机?
  3. c++里面的继承和虚函数,抽象封装,和go的interface有什么区别?
  4. 为什么go不是传统意义上的面向对象语言?
  5. c++多重继承可能导致循环继承,go用interface实现有这种问题吗?
  6. 单例模式?什么情况用饿汉模式,什么时候用懒汉模式?
  7. 表的主键用什么类型的字段?用字符串不可以吗?
  8. 消息队列是什么?
  9. 有了解过其他消息队列吗?
  10. kafka你们是怎么部署的呢?
  11. 能说一说你们怎么使用devops的吗?
  12. 不用kafka可以吗?
  13. ES是干什么的?
  14. 前后端通信用的什么协议?
  15. grpc相比http的优势在什么地方呢?

一、高并发底层原理

1. 单机QPS达到10万需要哪些优化?

答案:

线程模型:Netty主从Reactor模型(BossGroup处理连接,WorkerGroup处理IO)

锁优化:无锁队列(Disruptor)、LongAdder替代AtomicInteger

内存管理:堆外内存(避免Full GC)、对象池化(Apache Commons Pool)

IO优化:零拷贝技术(sendfile、mmap)、Epoll边缘触发模式

JVM参数:G1回收器+512MB~1G Region大小,-XX:MaxGCPauseMillis=20ms

追问:如何验证优化效果?

工具:Arthas监控线程阻塞点,JFR定位GC停顿,火焰图分析CPU热点

二、分布式锁与数据一致性

2. Redis RedLock实现分布式锁有什么缺陷?如何解决?

答案:

问题:

  时钟漂移导致锁过期计算误差    主从切换时数据丢失(异步复制)

解决方案:

自研锁:半数以上节点(N/2+1)写入成功才算获取锁

替代方案: Zookeeper顺序临时节点+Watcher机制

超时补偿:守护线程自动续期(Watch Dog)

场景题:库存超卖如何解决?

流程:Redis+Lua扣减库存 → Kafka异步落库 → 定时对账补偿

三、中间件深度

3. Kafka如何实现百万级TPS?

答案:

写入优化: 顺序写盘 + PageCache批量刷盘

分区数=CPU核数×2,单分区吞吐≈10MB/s

消费优化:零拷贝传输(sendfile系统调用) 消费者组Rebalance算法(CooperativeStickyAssignor) 资源隔离:Controller节点独立部署,避免与Broker竞争IO 故障案例:如何解决Kafka消息堆积? 步骤:扩容分区 → 增加消费者线程 → 限流生产端(Token Bucket)

四、JVM高并发调优

4. 百万连接下如何避免Full GC?

答案:

堆外内存:DirectByteBuffer管理网络缓冲区(-XX:MaxDirectMemorySize)

元空间:-XX:MetaspaceSize=256m 避免动态扩容停顿

线程局部缓存:TLAB(-XX:+UseTLAB)减少堆竞争

GC策略:ZGC(亚毫秒级停顿) + -Xmx与-Xms等值防动态扩容

监控指标:

关键项:

Young GC频率(<100ms/次)、Old区内存增长率(<5%/min) 五、场景设计题 5. 设计秒杀系统,要求100万QPS,库存误差<0.1% 核心方案: 流量分层: 前端:验证码+CDN静态资源缓存(命中率>95%) 网关:令牌桶限流(Guava RateLimiter) + 黑名单过滤 库存扣减:

Redis Cluster分片(CRC16哈希) + Lua脚本原子操作

本地缓存+Redis异步批量同步(Canal监听binlog)

熔断降级:

Sentinel热点规则(参数级限流)

降级策略:排队页静态化+服务端队列削峰

容灾方案:

数据补偿:定时对账(库存Redis/DB差异修复)

演练指标:500节点压测,故障恢复时间<30s

欢迎关注 ❤

我们搞了一个免费的面试真题共享群,互通有无,一起刷题进步。

没准能让你能刷到自己意向公司的最新面试题呢。

感兴趣的朋友们可以加我微信:wangzhongyang1993,备注:掘金面试群。