近期互联网大厂招聘门槛持续攀升,据2025年行业数据显示,腾讯校招录取率已突破50:17,技术岗面试尤其考验候选人的知识储备深度。根据群友的交流,和不少拿到面试机会的群友反馈:如今想斩获腾讯Offer,不仅需要掌握语言核心特性,更要具备应对全栈式技术拷问的能力。
以群友分享的真实腾讯面经为例——该候选人历经三轮技术面,首轮35分钟高密度追问Go语言底层机制,从Goroutine调度原理到Redis缓存雪崩解决方案均被深度挖掘;后续面试则涉及分布式系统设计、高并发场景优化等跨领域八股文,甚至要求手撕红黑树实现。正如内部员工透露,腾讯近年愈发青睐「T型人才」:既要在垂直领域有硬核技术沉淀,又需具备快速适应多技术栈的横向拓展力]。
文末还有高并发相关面经。
腾讯一面
- map怎么去做并发安全
- 外层的协程能捕获子协程的panic吗?
- panic都会被捕获吗?哪些panic不会捕获?
- slice和数组的区别?底层结构?
- go哪些内置类型是并发安全的?
- go的结构体可以嵌套组合吗?
- 两个结构体可以等值比较吗?
- 你如何理解interface类型
- 1.18版本后interface有什么增强?
- interface可以进行等值比较吗?
- 说说逃逸分析
- channel有缓冲和无缓冲的区别
- map并发访问会怎么样?这个异常可以捕获吗?
- GMP模型
- GMP模型中什么时候把G放全局队列?
- go的gc
- gc扫描是并发的吗?
- gc中的根对象是什么?
- 项目中etcd用来干什么的?
- mysql索引B+T
- 索引的优缺点
- redis用来做什么的?
- 用户信息怎么存的?都走缓存吗?
- redis过期淘汰策略
腾讯二面
- 会什么语言?
- tcp和udp的本质区别
- tcp可靠通信怎么实现的
- 说一说拥塞控制
- 滑动窗口的作用
- 什么是粘包,怎么解决
- 堆和栈有什么区别
- 进程的进程空间是怎么样的?
- 进程,线程,协程的区别
- 链表额线性表的区别
- 有序双向链表如何高效查询?
- kafka如何实现高吞吐的?
- 介绍最近的项目
- 缓存击穿,雪崩,穿透
腾讯三面
- 项目中比较有挑战性的事?
- 什么是伪随机?
- c++里面的继承和虚函数,抽象封装,和go的interface有什么区别?
- 为什么go不是传统意义上的面向对象语言?
- c++多重继承可能导致循环继承,go用interface实现有这种问题吗?
- 单例模式?什么情况用饿汉模式,什么时候用懒汉模式?
- 表的主键用什么类型的字段?用字符串不可以吗?
- 消息队列是什么?
- 有了解过其他消息队列吗?
- kafka你们是怎么部署的呢?
- 能说一说你们怎么使用devops的吗?
- 不用kafka可以吗?
- ES是干什么的?
- 前后端通信用的什么协议?
- 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,备注:掘金面试群。