校招 未知部门 / 后端-C++ / 未知轮次

[面试日期] 2026-08-22 [面试时长] 未知
[学校背景] 浙江大学 | 985 [学历背景] 未知
[发布人] 面试之星官方收录
<h2>C++如何准备9月的秋招?</h2> <p>9 月秋招,简历上写「熟悉 C++」,面试官很少当场否定。更常见的是连问:<code>shared_ptr</code> 线程安全吗?<code>vector</code> 插入后迭代器为什么失效?移动构造和拷贝构造差在哪?</p><p>这几句答不顺,LeetCode 刷再多也救不了语言面。C++ 岗的秋招不是「语法 + 算法」简单相加,而是 <strong>语言机制、STL、并发、OS/网络、项目、手撕</strong> 六条线同时过线。</p><p><strong>结论先说:9 月秋招,C++ 准备优先级是——项目能讲清 → 语言四条主干打穿 → 算法维持手感 → 按目标公司补 OS/网络。</strong> 别从整本 Primer 从头啃;也别只刷题不碰八股。</p><h2>9 月秋招,C++ 岗到底考什么</h2><p>面经看多了,套路很固定:</p><ol><li>自我介绍 + <strong>项目深挖</strong>(20~30 分钟)</li><li><strong>C++ 语言与 STL</strong>(虚函数、智能指针、移动语义、容器)</li><li><strong>OS / 网络 / 并发</strong>(后端、基础架构岗更重)</li><li><strong>手撕算法</strong>(链表、树、LRU、排序、双指针最常见)</li></ol><p>不同公司偏科不同,但 <strong>语言主干几乎人人问</strong>。腾讯、华为偏底层和网络;字节偏算法和并发;阿里、美团偏 STL 和工程;嵌入式/工控岗会在 C++ 之上叠 RTOS、驱动,但 C++ 四条主干照样考。</p><h2>全套C++面试八股文资料整理:(包括大厂面经,C++基础内容)</h2><p><a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fgw-c.nowcoder.com%2Fapi%2Fsparta%2Fjump%2Flink%3Flink%3Dhttps%253A%252F%252Fgw-c.nowcoder.com%252Fapi%252Fsparta%252Fjump%252Flink%253Flink%253Dhttps%25253A%25252F%25252Fgw-c.nowcoder.com%25252Fapi%25252Fsparta%25252Fjump%25252Flink%25253Flink%25253Dhttps%2525253A%2525252F%2525252Fgw-c.nowcoder.com%2525252Fapi%2525252Fsparta%2525252Fjump%2525252Flink%2525253Flink%2525253Dhttps%252525253A%252525252F%252525252Fgw-c.nowcoder.com%252525252Fapi%252525252Fsparta%252525252Fjump%252525252Flink%252525253Flink%252525253Dhttps%25252525253A%25252525252F%25252525252Fgw-c.nowcoder.com%25252525252Fapi%25252525252Fsparta%25252525252Fjump%25252525252Flink%25252525253Flink%25252525253Dhttps%2525252525253A%2525252525252F%2525252525252Fgw-c.nowcoder.com%2525252525252Fapi%2525252525252Fsparta%2525252525252Fjump%2525252525252Flink%2525252525253Flink%2525252525253Dhttps%252525252525253A%252525252525252F%252525252525252Fgw-c.nowcoder.com%252525252525252Fapi%252525252525252Fsparta%252525252525252Fjump%252525252525252Flink%252525252525253Flink%252525252525253Dhttps%25252525252525253A%25252525252525252F%25252525252525252Fgw-c.nowcoder.com%25252525252525252Fapi%25252525252525252Fsparta%25252525252525252Fjump%25252525252525252Flink%25252525252525253Flink%25252525252525253Dhttps%2525252525252525253A%2525252525252525252F%2525252525252525252Fwww.nowcoder.com%2525252525252525252Fcreation%2525252525252525252Fmanager%2525252525252525252FcolumnDetail%2525252525252525252FMq7XWW">https://www.nowcoder.com/creation/manager/columnDetail/Mq7XWW</a></p><h2>什么叫「C++ 准备好了」,什么叫「只是写过业务」</h2><table><tbody><tr><td><p>听过</p></td><td><p>知道 smart pointer、虚函数这些词</p></td></tr><tr><td><p>会用</p></td><td><p>项目里用过 </p><p><code>vector</code></p><p>、线程库,能编译通过</p></td></tr><tr><td><p>能过线</p></td><td><p>高频机制能口述,追问两层不慌</p></td></tr><tr><td><p>真熟</p></td><td><p>能讲设计动机、坑、和你项目里的取舍</p></td></tr></tbody></table><p><strong>算准备好:</strong> 虚表、RAII、移动语义、三种智能指针、<code>vector</code> 扩容与迭代器失效、锁与条件变量,每块能讲 3 分钟。</p><p></p><p><strong>不算准备好:</strong> 只会背定义,追问「为什么析构要 virtual」「<code>shared_ptr</code> 循环引用怎么破」就卡住。</p><p>秋招的 C++ 八股,及格线不是「300 题都见过」,而是 <strong>高频题能挂回自己的代码</strong>。</p><h2>四条主干:时间有限就啃这四块</h2><h3>1. 对象模型与多态(几乎必考)</h3><ul><li>虚函数表、虚指针、对象内存布局</li><li>构造/析构里调虚函数为什么「看起来多态、实际不是」</li><li>重载、重写、隐藏的区别</li><li>析构函数为什么要 <code>virtual</code>(基类指针删派生对象)</li><li>多态的代价:虚表、缓存、不能 inline</li></ul><p>追问方向:空类大小、继承下布局、菱形继承与虚继承(了解即可,别钻太深)。</p><h3>2. 资源管理:RAII、三五法则、智能指针(几乎必考)</h3><ul><li>RAII 是什么,和异常安全的关系</li><li>拷贝构造、拷贝赋值、移动构造、移动赋值、析构——三五法则</li><li><code>unique_ptr</code> / <code>shared_ptr</code> / <code>weak_ptr</code> 各自场景</li><li><strong><code>shared_ptr</code></strong><strong> 线程安全边界</strong>:控制块引用计数线程安全 ≠ 所指对象访问线程安全</li><li>循环引用怎么破</li></ul><p>别只会说「用智能指针防泄漏」。要能讲:项目里什么资源用 RAII 管,为什么不用裸 <code>new/delete</code>。</p><h3>3. 现代 C++:右值、移动、完美转发(高频)</h3><ul><li>左值 / 右值 / 将亡值</li><li><code>std::move</code> 做了什么(不移动,只是 cast)</li><li>移动构造为什么快(偷资源,不 deep copy)</li><li><code>std::forward</code> 和万能引用</li><li><code>= default</code> / <code>= delete</code> 的使用场景</li></ul><p>经典坑:对右值反复 <code>std::move</code>;返回值优化(RVO/NRVO)和 move 的关系——能提一句加分。</p><h3>4. STL 与并发(必考 + 按岗加重)</h3><p><strong>STL:</strong></p><ul><li><code>vector</code> 扩容机制、均摊复杂度、迭代器失效</li><li><code>map</code> vs <code>unordered_map</code>:红黑树 vs 哈希,何时选型</li><li><code>deque</code> / <code>list</code> 各自适用场景</li></ul><p><strong>并发:</strong></p><ul><li><code>mutex</code>、<code>lock_guard</code>、<code>unique_lock</code></li><li>条件变量为什么必须配合 mutex</li><li><code>atomic</code> 和 <code>volatile</code> 的区别(嵌入式和后端都爱问)</li><li>死锁四个必要条件,怎么避免</li></ul><h2>算法:秋招不能停,但别用算法替代 C++</h2><p>C++ 岗手撕,Medium 为主。高频题型:</p><ul><li>链表:反转、合并、环、LRU</li><li>二叉树:层序、前中后序、最近公共祖先</li><li>双指针 / 滑动窗口</li><li>排序:快排、TopK</li><li>基础 DP</li></ul><p><strong>标准:</strong> 25~35 分钟写完 + 讲清复杂度 + 说边界 case。</p><p></p><p><strong>节奏:</strong> 每天 1~2 题保持手感;冲刺期集中刷薄弱题型,不要从零刷 Hard。</p><p>算法和 C++ 语言面 <strong>并行准备</strong>,不要「先刷完 300 题再背八股」——9 月来不及。</p><h2>OS 和网络:按目标公司加减</h2><p>投后端、基础架构、腾讯系:<strong>必须过线</strong></p><ul><li>进程 vs 线程、地址空间、虚拟内存</li><li>TCP 三次握手/四次挥手、TIME_WAIT</li><li><code>select</code> / <code>poll</code> / <code>epoll</code> 区别</li><li>阻塞 / 非阻塞 / IO 多路复用</li></ul><p>投纯客户端、部分嵌入式岗:了解即可,但 <strong>进程线程、内存模型</strong> 仍可能被问。</p><h2>项目:秋招里 C++ 八股的「落地证明」</h2><p>面试官不信「我熟悉 C++」,信「我在项目里因为 C++ 特性做过取舍」。</p><p>项目里最好准备 3 类话术:</p><ol><li><strong>内存/资源:</strong> RAII 管什么、智能指针怎么选、有没有泄漏或 double free 的排查</li><li><strong>并发:</strong> 锁粒度、为什么不用裸指针共享、有没有数据竞争</li><li><strong>性能:</strong> 少拷贝、移动代替拷贝、容器选型、<code>reserve</code> 预分配</li></ol><p>每个项目准备:<strong>架构图 1 张、难点 2 个、优化 1 个、如果重来会改什么 1 句</strong>。</p><p></p><p>C++ 八股背完,必须能接到项目上,否则语言面像背课文。</p><h2>9 月秋招时间线(假设现在 8 月下旬)</h2><p>离 9 月还有约 2~4 周,按「能落地」排:</p><h3>第 1 周:项目 + C++ 核心口述</h3><ul><li>把 1~2 个项目整理成可讲版本(STAR,偏技术决策)</li><li>每天口述 5 题:虚函数、智能指针、移动语义、RAII、<code>vector</code> 失效</li><li>算法:每天 1 题 Medium,链表/树为主</li></ul><h3>第 2 周:STL + 并发 + 二刷卡壳题</h3><ul><li><code>map/unordered_map/deque</code> 对比讲顺</li><li>锁、条件变量、死锁、<code>atomic</code> vs <code>volatile</code></li><li>手写:简化 <code>String</code>(三五法则)或讲清 <code>shared_ptr</code> 控制块思路</li><li>算法:LRU、双指针、层序遍历</li></ul><h3>第 3 周:OS/网络(投后端/腾讯系必做)</h3><ul><li>进程线程、虚拟内存、TCP、epoll 各准备 3 分钟口述</li><li>算法:排序、二分、基础 DP</li><li>开始投提前批,用真实面试找盲区</li></ul><h3>第 4 周及以后:冲刺 + 针对性补</h3><ul><li>C++ 核心 15 题连续口述,追问两层不崩</li><li>算法:限时默写 LRU、链表反转、快排、一棵树题</li><li>按目标公司偏科:字节加算法量,腾讯加网络,华为加 Linux/多线程细节</li></ul><h2>简历怎么写,才配得上 C++ 秋招</h2><p>少写「精通 C++」,多写可被追问的:</p><ul><li>使用 RAII / 智能指针管理 XXX 资源,避免异常路径泄漏</li><li>基于 <code>std::thread</code> + 条件变量实现 XXX 生产者消费者</li><li>用移动语义 / <code>emplace_back</code> 减少 XXX 场景拷贝</li></ul><p>写了 <code>shared_ptr</code>,就准备循环引用;写了多线程,就准备锁粒度;写了 <code>vector</code>,就准备迭代器失效。<strong>简历词 = 面试官的追问清单</strong>。</p><h2>20 道秋招自测题(能讲顺,语言面基本过线)</h2><ol><li>虚函数是怎么实现的?对象内存里多了什么?</li><li>为什么基类析构函数常常要声明为 <code>virtual</code>?</li><li>重载、重写、隐藏有什么区别?</li><li>构造函数里调用虚函数,为什么不发生多态?</li><li>什么是 RAII?和异常安全有什么关系?</li><li>三五法则是什么?什么时候可以特殊化(Rule of Zero)?</li><li><code>unique_ptr</code>、<code>shared_ptr</code>、<code>weak_ptr</code> 分别适合什么场景?</li><li><code>shared_ptr</code> 线程安全吗?控制块和所指对象分别怎样?</li><li><code>shared_ptr</code> 循环引用怎么解决?</li><li><code>std::move</code> 做了什么?移动后源对象处于什么状态?</li><li>完美转发是什么?<code>std::forward</code> 为什么需要?</li><li><code>vector</code> 扩容机制是什么?插入元素后哪些迭代器会失效?</li><li><code>map</code> 和 <code>unordered_map</code> 底层分别是什么?怎么选型?</li><li>堆和栈的区别?什么对象在栈上、什么在堆上?</li><li>内存泄漏常见场景?你怎么排查?</li><li><code>mutex</code> 和 <code>spinlock</code> 分别适合什么场景?</li><li>条件变量为什么必须配合 <code>mutex</code> 使用?</li><li>死锁产生的四个条件是什么?</li><li><code>volatile</code> 和 <code>std::atomic</code> 有什么区别?</li><li>编译链接过程中,<code>.o</code>、符号表、重定位各自干什么?(工程岗常问)</li></ol><h2>最后一句</h2><p>9 月 C++ 秋招,不是把 Primer 啃完就行,也不是只刷 LeetCode 就行。<strong>项目能讲、四条主干能口述、算法不断粮、OS/网络按岗补</strong>——这个节奏,比囤资料更重要。</p><p>先把上面 20 题练到「能讲 3 分钟 + 举一个项目或合理例子」,再投提前批。真实面试里暴露的盲区,比再刷 50 道冷门题更有用。</p>
AI 推荐面试题