欢迎光临
我们一直在努力

大厂 C/C++ 2023–2025 面试题汇总

你刷了几十套大厂面经,发现考来考去就是那几个核心坑:虚表布局、智能指针循环引用、vector 扩容、epoll 的 ET/LT、TCP 的 TIME_WAIT……但问题是不知道哪家爱问哪个、哪个季节更难、双非该怎么排优先级。本篇是问题清单篇:只汇总十二家大厂近三年的 C/C++ 面试真题,按「厂」拆开、按「难度」递进、按「季节」标注——只列题目、不写答案。每道题的详解答案后续按厂分篇单独出。先把题目过一遍,摸清自己要补哪,再逐篇啃答案。

一、字节跳动(难度 ★★★☆,算法权重最高)

① 基础层(C/C++ 语法、基础数据结构)

② 进阶层(对象模型、内存、STL、OS/网络)

③ 高难层(并发、手撕、设计)

二、腾讯(难度 ★★★★,底层深挖最狠)

① 基础层

② 进阶层

③ 高难层

三、阿里巴巴(难度 ★★★★,重 JVM 之外的 C++ 基础 + 系统设计)

① 基础层

② 进阶层

③ 高难层

四、美团(难度 ★★★☆,偏业务落地 + 工程细节)

① 基础层

② 进阶层

③ 高难层

五、百度(难度 ★★★,重算法 + 搜索/基础架构)

① 基础层

② 进阶层

③ 高难层

六、华为 / 华为 OD(难度 ★★☆,重基础广度 + 机试)

① 基础层

② 进阶层

③ 高难层(华为偏少,OD 机试为主)

七、京东(难度 ★★★,偏后台业务 + 基础)

① 基础层

② 进阶层

③ 高难层

八、网易(难度 ★★★,游戏/后台双线)

① 基础层

② 进阶层

③ 高难层

九、拼多多(难度 ★★★★,重算法 + 高并发 + 抗压)

① 基础层

② 进阶层

③ 高难层

十、快手(难度 ★★★☆,短视频后台 + 算法)

① 基础层

② 进阶层

③ 高难层

十一、小米(难度 ★★★,偏嵌入式/手机系统 + 后台)

① 基础层

② 进阶层

③ 高难层

十二、滴滴(难度 ★★★☆,出行后台 + 算法 + 地图)

① 基础层

② 进阶层

③ 高难层

十三、各大厂面试特点横向对比

13.1 横向规律(值得记住的 5 条)

十四、在校生与应届生分阶段备考路线

14.1 大一/大二上:把基础焊死(现在–明年)

14.2 大二下/大三:冲底层 + 做项目

14.3 大三下/大四:秋招冲刺

十五、结语


先说清楚:数据从哪来、季节怎么标(诚实声明)

来源:本文题目来自公开面经聚合——牛客网、面试鸭、CSDN、知乎上 2023–2025 年校招/实习/提前批的 C/C++ 后端、客户端、音视频、基础架构方向的真实复盘,能对应到公开讨论的考点都按「公开面经共识」给出。大厂考点三年高度稳定,所以按稳定图谱组织。

幸存者偏差:面经是「过了/面崩了」的人写的,有记忆误差和幸存者偏差,不是官方题库,用来建立复习靶心,不能替代系统啃书(《C++ Primer》《STL 源码剖析》《操作系统概念》《TCP/IP 详解》)。

季节标注方法论(重点):大厂校招节奏是 提前批(7–8 月,最难、常考源码/设计)→ 秋招主批(8–11 月,题量最大、底层深挖最多)→ 春招/暑期实习(3–5 月,偏基础+项目+中等手撕)。同一知识点全年都可能出现,所以我的标签是「季型」而非伪造具体日期:

标签

含义

【秋招·主批】

秋招主战场,题量最大、底层追问最多

【提前批·高难】

7–8 月提前批,竞争小但难度最高,常考系统设计/源码

【春招·实习】

3–5 月春招与暑期实习,偏基础+项目+中等手撕

【四季通用·基础】

全年各场都可能出现的基础题


一、字节跳动(难度 ★★★☆,算法权重最高)

风格:手撕代码必考且占比大(一面往往直接写题),C++ 基础 + STL + 操作系统 + 网络都要,二面重项目深挖与系统设计。算法不好基本过不了,白板写对 + 讲清复杂度是硬门槛。

① 基础层(C/C++ 语法、基础数据结构)

  • 【四季通用·基础】static 有几种用法?
  • 【秋招·主批】const 与 constexpr 区别?
  • 【春招·实习】C 和 C++ 的 struct 区别?
  • 【四季通用·基础】四种 cast 各自何时用?
  • 【秋招·主批】快排时间复杂度与最坏情况?稳定吗?

② 进阶层(对象模型、内存、STL、OS/网络)

  • 【秋招·主批】虚函数怎么实现?vptr 在哪?多继承虚表怎么布局?
  • 【秋招·主批】shared_ptr 引用计数存在哪?线程安全吗?
  • 【秋招·主批】vector 扩容机制?哪些操作会使迭代器失效?
  • 【秋招·主批】内存对齐为什么重要?#pragma pack 做什么?
  • 【秋招·主批】TCP 为什么 TIME_WAIT 是 2MSL?太多怎么办?
  • 【秋招·主批】epoll 的 ET 和 LT 区别?ET 下 accept 为何可能丢连接?

③ 高难层(并发、手撕、设计)

  • 【提前批·高难】手写线程安全单例(C++11 之后的最优写法)。
  • 【秋招·主批】手撕 LRU Cache,get/put 都 O(1)。
  • 【提前批·高难】TopK 怎么求?海量数据(内存放不下)怎么办?
  • 【提前批·高难】std::move 到底做了什么?右值引用、完美转发是什么?
  • 【秋招·主批】手写一个简易线程池。

二、腾讯(难度 ★★★★,底层深挖最狠)

风格:「基础扎实 + 深度挖 + 项目真实落地」。追问不是「会不会用」而是「底层怎么实现、能不能画图」。后台/游戏/音视频方向对 C++ 对象模型、内存、网络、并发挖到源码级。

① 基础层

  • 【四季通用·基础】C++ 程序的内存布局(text/rodata/data/bss/heap/stack)各自存什么?
  • 【秋招·主批】构造函数/析构函数能是虚函数吗?为什么?
  • 【秋招·主批】new/delete 与 malloc/free 的 11 层差异(说核心几条)。
  • 【春招·实习】深拷贝 vs 浅拷贝,何时必须自己写拷贝构造?

② 进阶层

  • 【秋招·主批】虚函数表内存布局画出来:Base{foo();int x} : Derived{bar();int y} 的对象长什么样?
  • 【秋招·主批】final 关键字两个作用?
  • 【秋招·主批】智能指针三重陷阱:循环引用怎么破?unique_ptr 所有权转移底层怎么实现?
  • 【秋招·主批】死锁四个必要条件?怎么预防?
  • 【秋招·主批】互斥锁、自旋锁、读写锁、条件变量各自适用场景?

③ 高难层

  • 【提前批·高难】设计一个简易日志库 / 定时器 / 限流器(选一)。
  • 【提前批·高难】内存屏障(memory barrier)是什么?为什么需要?
  • 【秋招·主批】手写 vector 简易版(含扩容、拷贝、移动)。
  • 【秋招·主批】select/poll/epoll 区别?为什么 epoll 高并发下更快?
  • 【提前批·高难】常见的设计模式(单例、工厂、观察者)在你们项目怎么用的?

三、阿里巴巴(难度 ★★★★,重 JVM 之外的 C++ 基础 + 系统设计)

风格:阿里 C++ 岗(如钉钉、淘天、云智能基础软件)偏「基础 + 系统设计 + 业务场景」。一面基础扎实,二面开始怼项目架构和扩展性,对 STL 源码、并发、网络要求不比腾讯低,但手撕强度略低于字节。

① 基础层

  • 【四季通用·基础】引用和指针的区别?(已对比,阿里常让你当面说全)
  • 【秋招·主批】const 成员函数(void f() const)有什么用?
  • 【春招·实习】函数重载和重写的区别?
  • 【秋招·主批】什么是 RAII?举一个项目里用的例子。

② 进阶层

  • 【秋招·主批】unordered_map 哈希冲突怎么处理?最坏情况是什么?
  • 【秋招·主批】什么是移动语义?为什么它能提升性能?
  • 【秋招·主批】C++11/14/17/20 你最常用哪些新特性?
  • 【秋招·主批】什么是内存泄漏?C++ 里怎么系统化避免?

③ 高难层

  • 【提前批·高难】设计一个高并发计数器 / 限流中间件(阿里爱问设计)。
  • 【提前批·高难】std::atomic 能保证什么?memory_order 有哪几种?
  • 【秋招·主批】手撕:合并两个有序链表 / 反转链表(白板)。
  • 【秋招·主批】你的项目里怎么处理高并发下的数据共享?

四、美团(难度 ★★★☆,偏业务落地 + 工程细节)

风格:美团到店/外卖/配送的后台 C++ 岗,重「工程能力 + 业务场景 + 基础」。手撕中等偏上,对 STL、网络、数据库结合问得多,喜欢「给你个业务场景怎么设计」。

① 基础层

  • 【四季通用·基础】sizeof 和 strlen 区别?
  • 【春招·实习】数组名和指针区别?
  • 【秋招·主批】宏定义和 inline 函数区别?

② 进阶层

  • 【秋招·主批】vector 和 list 区别?(已对比)什么场景用 deque?
  • 【秋招·主批】遍历容器时正确删除元素怎么写?
  • 【秋招·主批】进程间通信有哪些方式?
  • 【秋招·主批】TCP 拥塞控制知道吗(慢启动/拥塞避免/快重传)?

③ 高难层

  • 【提前批·高难】设计一个短链系统 / 外卖配送路径缓存(业务场景题)。
  • 【秋招·主批】手撕:二叉树层序遍历 / 最近公共祖先(LCA)。
  • 【秋招·主批】MySQL 索引为什么用 B+ 树?和红黑树/哈希比?

五、百度(难度 ★★★,重算法 + 搜索/基础架构)

风格:百度 C++ 岗(搜索、凤巢、基础架构)算法占比高、对数据结构与 STL 要求扎实,底层追问比腾讯温和但广度不低,春招实习相对友好。

① 基础层

  • 【四季通用·基础】指针数组和数组指针区别?
  • 【春招·实习】什么是野指针?怎么避免?
  • 【秋招·主批】struct 内存大小怎么算(含对齐与位域)?

② 进阶层

  • 【秋招·主批】哈希表(unordered_map)和红黑树(map)在百度搜索场景怎么选?
  • 【秋招·主批】什么是迭代器失效?vector/map 各举一个例子。
  • 【秋招·主批】C++ 的拷贝优化(RVO/NRVO)是什么?

③ 高难层

  • 【提前批·高难】海量日志里找出现频率最高的 TopK 个 URL(百度经典)。
  • 【秋招·主批】手写快排 / 堆排,并分析稳定性与复杂度。
  • 【秋招·主批】手撕:无重复字符的最长子串 / 三数之和。

六、华为 / 华为 OD(难度 ★★☆,重基础广度 + 机试)

风格:华为正式批偏「基础全面 + 手撕机试(多为 LeetCode 简单~中等)」,对双非相对友好;华为 OD(外包转全)机试占比大(3 道编程题),面试问得比一线大厂浅,但范围广、不深挖。注意华为 OD 简历筛选和机试分数线是硬门槛。

① 基础层

  • 【四季通用·基础】C++ 三大特性是什么?
  • 【春招·实习】new/delete 和 malloc/free 区别?(华为必问基础)
  • 【秋招·主批】引用和指针区别?(华为基础题高频)
  • 【四季通用·基础】纯虚函数和虚函数区别?

② 进阶层

  • 【秋招·主批】多态怎么实现(底层)?
  • 【秋招·主批】shared_ptr 和 unique_ptr 怎么选?
  • 【秋招·主批】vector 和 list 区别?(华为常考容器对比)
  • 【四季通用】const 的常见用法?

③ 高难层(华为偏少,OD 机试为主)

  • 【待验证】OD 机试常见题型:字符串处理、哈希计数、模拟、DFS/BFS 简单图。
  • 【秋招·主批】怎么避免内存泄漏?

七、京东(难度 ★★★,偏后台业务 + 基础)

风格:京东零售/物流后台 C++ 岗,基础和字节类似但手撕难度略低,重视 STL、网络、数据库结合业务,对「工程规范、代码可读性」有要求。

① 基础层

  • 【春招·实习】extern "C" 是干什么的?
  • 【四季通用·基础】头文件为什么要加 include guard / #pragma once?
  • 【秋招·主批】左值、右值、左值引用、右值引用?

② 进阶层

  • 【秋招·主批】string 的 SSO(短字符串优化)是什么?
  • 【秋招·主批】map 和 unordered_map 区别?(已对比)
  • 【秋招·主批】什么是缓存一致性?MESI 了解吗?

③ 高难层

  • 【提前批·高难】设计一个购物车/库存扣减的高并发方案。
  • 【秋招·主批】手撕:环形链表检测 / 相交链表。
  • 【秋招·主批】手撕:实现 strStr / 最长回文子串。

八、网易(难度 ★★★,游戏/后台双线)

风格:网易 C++ 岗分两路:游戏(雷火/互娱,重 C++ 底层、内存、渲染相关)和后台(严选/云音乐,偏网络/并发)。整体基础扎实 + 一定手撕,游戏线对 C++ 功力要求更高。

① 基础层

  • 【春招·实习】什么是多态?编译期多态和运行期多态分别指什么?
  • 【四季通用·基础】inline 函数会不会一定被展开?
  • 【秋招·主批】什么是未定义行为(UB)?举三个例子。

② 进阶层

  • 【秋招·主批】虚继承解决什么问题?代价是什么?
  • 【秋招·主批】智能指针的引用计数线程安全怎么理解?(已讲,网易游戏线深挖)
  • 【秋招·主批】std::thread 和 pthread 区别?detach 和 join 区别?

③ 高难层

  • 【提前批·高难】游戏里大量小对象(子弹/粒子)怎么管理内存?
  • 【秋招·主批】手撕:实现一个定长内存池 / 简单的对象池。
  • 【秋招·主批】手撕:对称的二叉树 / 二叉树的镜像。

九、拼多多(难度 ★★★★,重算法 + 高并发 + 抗压)

风格:拼多多 C++ 岗(电商/支付/风控后台)以「算法硬 + 手撕多 + 问得深」著称,面试轮次多、节奏快,对 STL 底层、并发、海量数据题要求高,是除字节外手撕最狠的厂之一。

① 基础层

  • 【四季通用·基础】侯捷说的「C++ 对象模型」你了解多少?
  • 【秋招·主批】volatile 关键字到底保证什么、不保证什么?
  • 【春招·实习】什么是 trivial / non-trivial 类型?

② 进阶层

  • 【秋招·主批】shared_ptr 的循环引用具体代码怎么写、怎么破?(已讲)
  • 【秋招·主批】vector 扩容时迭代器/指针/引用全失效,为什么?
  • 【秋招·主批】epoll 为什么比 select 适合十万级连接?(已讲,拼多多高并发必问)

③ 高难层

  • 【提前批·高难】10 亿整数找中位数(内存限制 1G)?海量数据去重?
  • 【秋招·主批】手撕:接雨水 / 最大矩形(单调栈)?编辑距离(DP)?
  • 【秋招·主批】手撕:实现一个线程安全的阻塞队列。
  • 【提前批·高难】高并发下如何设计一个秒杀系统(拼多多核心业务)?

十、快手(难度 ★★★☆,短视频后台 + 算法)

风格:快手 C++ 岗(短视频/推荐/基础设施)基础和算法并重,手撕中等偏上,对网络、存储、分布式概念有要求,整体接近美团/百度的难度区间。

① 基础层

  • 【四季通用·基础】前置 ++ 和后置 ++ 的区别(运算符重载角度)?
  • 【春招·实习】this 指针是什么?为什么有时会为空也能调用成员函数?

② 进阶层

  • 【秋招·主批】模板特化和偏特化是什么?
  • 【秋招·主批】完美转发(forward)为什么需要引用折叠?
  • 【秋招·主批】shared_ptr 的 enable_shared_from_this 是干嘛的?

③ 高难层

  • 【提前批·高难】设计一个推荐系统的特征缓存层(快手业务)。
  • 【秋招·主批】手撕:最长递增子序列(LIS)/ 编辑距离。
  • 【秋招·主批】手撕:K 个一组翻转链表。

十一、小米(难度 ★★★,偏嵌入式/手机系统 + 后台)

风格:小米 C++ 岗分手机系统/嵌入式(MIUI、澎湃、IoT)和互联网后台两路。系统/嵌入式线重 C + 底层(内存、驱动、跨平台),后台线接近京东难度。整体比一线大厂温和,对双非友好度较高。

① 基础层

  • 【春招·实习】C 和 C++ 在嵌入式里怎么选?extern "C" 在混合编程里干嘛?(已讲)
  • 【四季通用·基础】大端小端是什么?怎么判断本机字节序?

② 进阶层

  • 【秋招·主批】volatile 在嵌入式里的真实用途?
  • 【秋招·主批】malloc 在嵌入式里的问题?为什么常用内存池?

③ 高难层

  • 【待验证】小米系统线可能问:内存碎片怎么排查?栈溢出怎么防?
  • 【秋招·主批】手撕:二分查找(含边界变体)/ 两个有序数组的中位数。

十二、滴滴(难度 ★★★☆,出行后台 + 算法 + 地图)

风格:滴滴 C++ 岗(出行/地图/调度后台)基础和算法并重,地图/空间相关题有特色,对 STL、网络、并发要求扎实,难度介于美团和字节之间。

① 基础层

  • 【四季通用·基础】constexpr 和 const 在编译期的区别?(已讲)
  • 【春招·实习】什么是命名空间(namespace)?using namespace std 为什么不推荐写在头文件?

② 进阶层

  • 【秋招·主批】unordered_map 的 reserve 有什么用?rehash 代价?
  • 【秋招·主批】条件变量为什么必须和互斥锁一起用、且用 while 而非 if 判断?

③ 高难层

  • 【提前批·高难】设计一个司机就近派单的匹配模块(滴滴业务)。
  • 【秋招·主批】手撕:滑动窗口最大值(单调队列)/ 柱状图最大矩形(单调栈)。
  • 【秋招·主批】手撕:岛屿数量(DFS/BFS)/ 朋友圈(并查集)。

十三、各大厂面试特点横向对比

大厂

整体难度

风格标签

偏爱考点

手撕强度

对双非态度

字节跳动

★★★☆

算法为王

算法+STL+OS+网络,白板写对

极高

较友好(看能力)

腾讯

★★★★

底层深挖

对象模型/虚表、内存布局、epoll、死锁

偏重基础深度

阿里巴巴

★★★★

基础+设计

STL 源码、并发、系统设计、业务场景

中高

看项目落地

美团

★★★☆

业务落地

STL、网络、MySQL、业务场景设计

中等友好

百度

★★★

算法+广度

数据结构、STL、海量数据题

较友好

华为/OD

★★☆

基础+机试

三大特性、基础容器、机试编程

中(OD 机试)

双非最友好

京东

★★★

后台业务

STL、网络、高并发业务设计

中等

网易

★★★

游戏/后台双线

虚继承、对象池、内存管理

中等

拼多多

★★★★

算法+高并发

海量数据、并发、STL 底层、秒杀

极高

看硬实力

快手

★★★☆

算法+存储

DP/单调栈、模板、shared_from_this

中高

中等

小米

★★★

嵌入式/后台

C 底层、字节序、内存池

双非友好

滴滴

★★★☆

出行+地图

单调栈/队列、并查集、并发

中高

中等

13.1 横向规律(值得记住的 5 条)

  • 底层是分水岭:腾讯/拼多多/阿里把「虚表布局、智能指针计数、vector 扩容、epoll」挖到实现级,只会背定义一定被挂;字节/百度更看「写对 + 讲清复杂度」。
  • 手撕是硬门槛:字节、拼多多手撕最狠(中等偏难、当场写对);腾讯/阿里手撕中等但会让你「边写边讲为什么」;华为 OD 机试是分数门槛。
  • 季节差异真实存在:提前批(7–8 月)最难、常考设计/源码;秋招主批(8–11 月)题量最大、底层追问最多;春招/实习(3–5 月)偏基础+项目+中等手撕,是双非性价比最高的窗口。
  • STL 底层是共同高频:十二家里十一家都问 vector/map/unordered_map 的底层与复杂度,这是性价比最高的复习板块。
  • 双非突围靠「深度+项目」:华为/小米/美团/百度对双非相对友好,但都需要你能把某一块讲到比科班生深、且项目能经得起追问。

十四、在校生与应届生分阶段备考路线

无论你是刚入门的大一大二在校生,还是即将秋招的应届生,时间窗口都还在。按「先夯实、再深挖、后冲刺」三阶段排:

14.1 大一/大二上:把基础焊死(现在–明年)

  • 啃透 C++ 对象模型与 STL 源码:读《C++ Primer》打底,再读《STL 源码剖析》把 vector/map/unordered_map 底层画出来。
  • 数据结构与算法刷穿:LeetCode 热题 100 + 剑指 Offer,链表/树/DP/二分/滑窗/单调栈是面试重灾区,白板写对是底线。
  • Linux 继续深入:掌握虚拟地址/ELF/管道之后,下一步补「线程同步、死锁、epoll」,正好对接本文并发章节。

14.2 大二下/大三:冲底层 + 做项目

  • 操作系统与网络系统学:《操作系统概念》《TCP/IP 详解》,把本文的 epoll/死锁/TCP 从「会答」练到「能画图讲」。这部分恰恰是拉开差距的关键。
  • 做一个能讲深的项目:推荐自研「轻量线程池 / 网络库 / 简易 Redis」,把 RAII、智能指针、epoll、锁都用上,面试时经得起追问。
  • 开始投实习:大二下暑期争取小厂/中厂实习,大三上冲大厂暑期实习(春招窗口,难度低于秋招)。

14.3 大三下/大四:秋招冲刺

  • 按厂刷面经:提前批冲字节/拼多多(拼算法),秋招主批广投腾讯/阿里/美团/百度,华为 OD/小米作为保底双非友好项。
  • 把本文当靶心:每张表、每个易混点都能闭眼答 + 画图,手撕题限时写对。本文覆盖的十二家考点就是你的复习地图。
  • 诚实定位:双非不是死局,但「只背八股、项目水」一定挂;把某一两块讲到比科班深,比泛泛铺广度有用。

十五、结语

本篇先把十二家的题目清单摆清楚,让你一眼看清该复习什么。答案不在本篇——后续会按厂逐篇出详解(含每个易混点的答案、手撕题的标准写法、面试官追问角度)。具体题→季节的精确对应无法逐条溯源,凡我推断处都打了【待验证】;面经有幸存者偏差,题目清单用于建立复习靶心,不能替代系统啃书。

如果觉得有用,点赞收藏走一波。答案系列我会按厂从字节开始逐篇出,评论区告诉我你想先看哪家的答案详解。

赞(0)
未经允许不得转载:171主机测评 » 大厂 C/C++ 2023–2025 面试题汇总
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址