博雷顿科技股份公司 C++ 三面复盘
1. epoll 两种触发方式:LT 和 ET
- LT只要 fd 上还有可读/可写事件,epoll_wait 每次都会返回该事件。 优点是简单,不容易漏事件;缺点是通知可能更频繁。
- ET只有状态“发生变化”时才通知一次(例如从不可读变成可读)。 如果这次没把数据处理完,后续可能收不到提醒,容易“饿死”连接。 优点是高性能,减少重复通知;缺点是编程复杂、容易出错。
2. ET 模式注意点
使用要点:
- fd 必须设为非阻塞(O_NONBLOCK)
- 可读事件到来后要循环读,直到返回 EAGAIN/EWOULDBLOCK
- 可写事件同理,循环写到 EAGAIN 或发送完
- 一般配合 EPOLLONESHOT 防止并发线程重复处理同一 fd
- 必须处理半包/粘包、对端关闭、异常等边界情况
一句话记忆:ET = 一次通知,必须“榨干”缓冲区。
3. TCP 服务端常见状态(你说的“状态码”通常指状态机)
常见状态:
- LISTEN:服务端监听端口
- SYN_RECV:收到客户端 SYN,回 SYN+ACK,等待 ACK
- ESTABLISHED:连接建立完成,可收发数据
- FIN_WAIT_1 / FIN_WAIT_2:主动关闭一方的状态
- CLOSE_WAIT:被动关闭方收到 FIN,等待应用层 close
- LAST_ACK:被动关闭方发出 FIN,等待最后 ACK
- TIME_WAIT:主动关闭方等待 2MSL,确保对端收到 ACK
面试高频补充:CLOSE_WAIT 多通常是应用层没及时 close()。
4. TCP 三次握手 / 四次挥手
三次握手
1) 客户端发 SYN(seq=x) 2) 服务端回 SYN+ACK(seq=y, ack=x+1) 3) 客户端回 ACK(ack=y+1)
目的:双方确认“收发能力”和初始序列号可用。
四次挥手
1) 主动关闭方发 FIN 2) 被动关闭方回 ACK(进入 CLOSE_WAIT) 3) 被动关闭方处理完数据后发 FIN 4) 主动关闭方回 ACK,进入 TIME_WAIT
TIME_WAIT 作用:防止旧报文干扰新连接、保证最后 ACK 可重传。
5. 对客户端的理解
客户端是离用户最近的一层,核心目标是体验、稳定、性能。 它不仅是界面层,还承担网络交互、数据缓存、状态管理、异常恢复等职责。 客户端开发价值在于:
- 快速把业务能力触达用户
- 对性能和细节要求高(启动速度、卡顿、功耗、崩溃率)
- 需要和服务端/产品/测试高频协作,工程综合能力要求高
6. 未来职业发展规划
短期我就想把技术基本功真正做扎实,把 技术打牢,做到一个模块从方案、开发、性能优化到上线问题排查都能自己独立扛下来(其实网上看了不少, 真到说的时候了, 又有点懵 , 胡诌了几句)
7. 算法题整理
题目:给定二叉树中的某个结点 node,返回中序遍历中它的前一个结点(前驱结点)。
默认结点有 left/right/parent 指针(面试里可先确认)。
分两种情况:
1) node 有左子树
- 前驱就是其左子树中“最右侧”的结点
2) node 没有左子树
- 沿 parent 向上找,直到当前结点是其父结点的右孩子
- 这个父结点就是前驱
- 若一路都找不到,说明它是中序第一个结点,前驱为 nullptr
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode* parent;
TreeNode(int x) : val(x), left(nullptr), right(nullptr), parent(nullptr) {}
};
TreeNode* inorderPredecessor(TreeNode* node) {
if (node == nullptr) return nullptr;
// 情况1:有左子树 -> 左子树最右结点
if (node->left) {
TreeNode* p = node->left;
while (p->right) p = p->right;
return p;
}
// 情况2:无左子树 -> 向上找第一个“当前结点是其右孩子”的祖先
TreeNode* cur = node;
TreeNode* p = node->parent;
while (p && p->left == cur) {
cur = p;
p = p->parent;
}
return p;
}
`
C++面试总结 文章被收录于专栏
本专栏系统梳理C++面试高频考点,从基础语法、内存管理、STL与设计模式,到操作系统与项目实战,结合真实面试题深度解析,帮助开发者高效查漏补缺,提升技术理解与面试通过率,打造扎实的C++工程能力。
查看1道真题和解析