面试面经 · 华为
【华为】C++后端二面(项目深挖+OS场景+手撕翻转数字)
【华为】C++后端二面
基本信息
| 项目 | 内容 |
|---|---|
| 公司 | 华为 |
| 岗位 | C++ 软件开发(OD/校招) |
| 轮次 | 技术二面 |
| 时间 | 2025年6月 |
| 面型体感 | 有压力面倾向,但面试官会耐心引导 |
| 结果 | 通过 |
面试题目(按提问顺序)
- 自我介绍
- 项目深挖:项目的整体架构、负责的工作、整体技术选型
- 项目相比现有技术的优势是什么?有没有做过对比实验?
- 项目过程中遇到过什么困难?怎么解决的?
- CI/CD 了解吗?对持续集成持续部署的理解?
- 为什么选择这些技术栈?以后给自己什么定位?
- 栈和队列的区别?各自的应用场景?
- 满二叉树第 N 层有多少个叶子节点?
- 冒泡排序最好情况和最坏情况各交换多少次?
- 操作系统的存储管理?页面置换算法有哪些?LRU 有什么缺点?
- 进程间通信方式有哪些?分别怎么使用?管道有哪些类型?
- Linux 的文件系统了解吗?inode 节点的原理?
- Linux 常用命令:查看 CPU 占用率高的进程?查看占用某端口的进程?
- 怎么查询日志文件中的所有 IP?(正则表达式)
- MySQL 的存储引擎有哪些?有什么区别?使用场景?
- 手撕代码:翻转整数(LeetCode 7),要考虑正负号和溢出,时空复杂度尽可能优
面试感受 / 反馈
- 二面明显比一面更难,项目追问非常细
- 面试官会不断追问"为什么这么选""有没有更好的方案"
- 手撕翻转数字看似简单,但溢出处理和空间优化容易翻车
- 面试官很有耐心,会一点一点引导写出最优解
- 整体面试约 1.5-2 小时
准备建议
- 项目要能讲清楚完整叙事:背景→你的角色→技术选型→困难→解决方案→成果
- 操作系统(LRU、死锁、进程通信)和 Linux 命令是高频考点
- 手撕代码注意边界条件:溢出、空值、特殊输入
- 对 CI/CD、容器化等工程实践也要有一定了解
反问示例
- 如果通过了,能留在实习部门吗?
- 培养机制和考核机制是怎样的?