这篇吉比特 C++ 实习一面很典型,属于那种"题不一定特别深,但覆盖面特别广"的基础面。
原始面经里几乎没有太多过程描述,直接就是一长串问题:
-
栈和队列
-
右值引用
-
static -
delete和delete[] -
设计模式
-
智能指针
-
虚函数
-
STL 容器
-
进程线程
-
八大排序
-
红黑树和 AVL
-
select/poll/epoll -
内存泄漏
你会发现,这就是非常标准的"C++ 岗全面体检"。
校招大礼包获取:入口
可能是至今最全,最好,最实用的校招大礼包,减少信息差,预期漫步无敌的刷提,不如有的放矢,针对性的准备,这样才能有效备考,有了这份资料,不说100%拿到offer,至少帮你提升50%概率拿到offer
这篇面经适合谁看
如果你准备投游戏公司、C++ 实习岗、客户端/服务端基础研发岗位,这篇很有参考价值。
因为它代表的是一类非常典型的筛选方式:
-
不一定深挖某一个专题
-
但要求你大部分基础块都不能太弱
这种面试对候选人的挑战不在某一道题多难,而在于你是不是"整体都还行"。
面试流程速览
从原始面经看,这一轮几乎就是一个纯技术扫面:
-
先问基础数据结构和 C++ 语言机制
-
再问设计模式、智能指针、容器
-
接着扩展到进程线程、IO 多路复用
-
最后落到排序、树结构和手写归并
这类流程最适合快速筛选 C++ 实习候选人,因为它几乎把常见知识点都摸了一遍。
这轮到底在筛什么
1. C++ 语言基本功是不是过关
问到的内容包括:
-
右值引用
-
static -
delete和delete[] -
智能指针
-
虚函数
-
智能指针计数器是什么结构
这组题已经足够判断一个人是不是认真学过 C++。
特别是:
-
右值引用:看你是否理解现代 C++ 的移动语义
-
delete和delete[]:看你是否理解对象析构和数组释放差异 -
智能指针计数器:看你是否理解
shared_ptr背后的控制块和引用计数机制
这类题都不是只能靠背定义糊弄过去的。
2. STL 和数据结构是不是成体系
这一轮还问到了:
-
栈和队列
-
STL 容器
-
红黑树和 AVL 区别
-
八大排序
-
手写归并
这说明面试官不只是看你会不会用容器,还看你是否理解容器和底层结构的关系。
尤其红黑树和 AVL 这种题,特别适合区分两类人:
-
只知道"都是平衡树"
-
真正理解插入、旋转、平衡代价和实际使用差异的人
3. 系统和网络基础是不是足够稳
还问到了:
-
进程和线程区别
-
select/poll/epoll区别 -
内存泄漏
这些都属于 C++ 开发岗非常经典的系统基础题。
它们的共同特点是:不是最难,但一定不能空。
因为对很多团队来说,一个 C++ 候选人如果连这些都答得很虚,后面实际开发也很难让人放心。
4. 还会有情景题,说明不只看八股
原始面经里还有"情景题"这个关键词,虽然没展开具体内容,但这本身已经说明,面试官不只想听标准答案,还会看你能不能把知识放到具体问题里去。
这类题通常很适合判断:
-
你是不是只背过知识点
-
你有没有把知识真正转成解决问题的能力
为什么这种广覆盖面试最容易把人问乱
因为它不会给你太多进入状态的时间。
上一题刚在讲右值引用,下一题可能就跳到 epoll,再下一题又开始问归并排序。
如果你的知识点都是孤立的,就很容易在这种节奏里被打断。
所以准备这类面试时,最重要的不是把某个专题学得极深,而是把不同模块都补到"不发虚"的程度。
从这篇面经里能看出吉比特在筛什么
把整轮问题合起来看,吉比特至少在筛下面几件事:
-
你的 C++ 基础是否扎实
-
你的 STL 和数据结构是否成体系
-
你的系统与网络基础是否过关
-
你的排序和树结构基本功是否在线
-
你是否具备把知识点用到具体问题里的能力
这其实是一个非常典型的 C++ 实习初筛模型。
如果你准备吉比特这类 C++ 实习岗,这几块要重点补
1. C++ 基础题要答到机制层
重点准备:
-
右值引用
-
static -
delete/delete[] -
智能指针
-
虚函数
2. 排序和树结构不能只会名字
尤其是:
-
八大排序思路和复杂度
-
归并排序手写
-
红黑树和 AVL 差别
3. 系统基础一定要稳
至少这些别空:
-
进程 / 线程
-
内存泄漏
-
select/poll/epoll
4. 准备几个可以展开的"情景题"答法
比如:
-
性能优化
-
容器选择
-
多路复用选型
最后提醒
这篇吉比特面经最值得参考的地方,是它提醒你:
C++ 岗很多时候不是某一题特别难,而是要求你在很多看似基础的模块上都不要露怯。
如果你准备这类实习岗,最有效的方式不是押题,而是把 C++、容器、树、排序、并发和 IO 这些基础块整体补齐。