腾讯 C++ 岗位面试常见问题(2025-2026)
腾讯的 C++ 岗位(主要 PCG、IEG、WXG、CSIG 等事业群的后台/游戏/音视频/高性能方向)面试风格偏'基础扎实 + 深度挖 + 项目真实落地',整体难度属于大厂中上水平。
- 校招:C++ 基础 + STL 原理 + 网络/操作系统 + 算法中等偏难 + 项目细节
- 社招:基础 + 内存/并发/性能优化 + 设计模式 + Linux 系统编程 + 项目深度 + 场景题
下面按面试轮次 + 高频程度整理最常出现的真题和考察点:
一面(基础 + 项目 + 算法,40-60min,淘汰率最高)
C++ 语言基础(占比 50-70%)
- 智能指针(shared_ptr / unique_ptr / weak_ptr)实现原理?计数器在哪?循环引用怎么破?
- 虚函数实现原理?虚表、虚指针、多继承下的虚表布局?
- 构造函数/析构函数能否是虚函数?为什么?
- new/delete 与 malloc/free 的区别?placement new 知道吗?
- RAII 是什么?举例说明在项目中怎么用?
- move 语义、完美转发、universal reference 原理?
- const、static、mutable、volatile、explicit、final/override 每个关键字的作用?
- C++11/14/17/20 新特性中最常用的几个?(lambda、auto、constexpr、structured binding、concepts)
- vector/list/deque/map/unordered_map 的底层实现、增删查改复杂度、迭代器失效场景?
- 多态的实现原理?虚函数表 vtable 怎么查找?
操作系统 & Linux & 网络(占比 20-30%)
- 进程 vs 线程 vs 协程区别?
- epoll 的 ET/LT 模式区别?为什么 ET 模式 accept 可能丢连接?
- TCP 三次握手四次挥手、TIME_WAIT 状态为什么 2MSL?
- TCP 拥塞控制算法(慢启动、拥塞避免、快重传、快恢复)?
- 僵尸进程、孤儿进程怎么产生的?怎么处理?
算法 & 手撕(中等偏难,腾讯喜欢现场写)
- 手撕线程池(最常考)
- 实现智能指针(shared_ptr 带引用计数)
- LRU Cache / LFU Cache
- 大文件 top K / 海量数据去重
- 经典:atoi / strcpy / strncpy / 字符串转整数等
二面(深度挖 + 项目 + 系统设计,60-90min)
C++ 进阶 & 底层(占比 40-60%)
- 内存对齐 & 字节序(大端小端)?怎么处理跨平台?
- C++ 内存布局(栈、堆、静态区、代码区、全局区)?
- 异常安全(strong/basic/nothrow)?怎么保证?
- 模板元编程?SFINAE / enable_if / concepts 区别与使用?
- 虚继承、菱形继承、多继承下的内存布局?
- inline 函数 vs 宏?虚函数能内联吗?
- 静态库 vs 动态库?链接过程?符号冲突怎么解决?
- C++ ABI 兼容性问题?怎么保证库升级不崩?
项目 & 性能优化(腾讯最爱深挖)
- 项目中遇到的最难的性能瓶颈?怎么定位和优化的?(perf / valgrind / flamegraph)
- 内存泄漏怎么检测?(valgrind、asan、tcmalloc)
- 高并发场景下怎么优化?(锁粒度、读写锁、无锁队列、内存池)
- 做过哪些 C++ 底层优化?(cache line、false sharing、SIMD)
系统 & 设计(偏后台/游戏方向)
- 设计一个高性能日志系统?

