八股文 / 华为后端
华为八股文高频题 - 后端方向
持续更新中。来源:2026 暑期实习 + 秋招真实面经。
计算机网络
Q1:TCP 和 UDP 有什么不同?
来源:26暑期实习-技术面
| 对比维度 | TCP | UDP |
|---|---|---|
| 连接方式 | 面向连接(三次握手建立) | 无连接,直接发送 |
| 可靠性 | 可靠传输(确认、重传、排序) | 不可靠,可能丢包/乱序 |
| 传输方式 | 字节流 | 数据报 |
| 拥塞控制 | 有(慢启动、拥塞避免、快重传、快恢复) | 无 |
| 头部开销 | 20 字节(最小) | 8 字节 |
| 速度 | 相对慢(握手 + 确认开销) | 快(无连接开销) |
| 适用场景 | HTTP/HTTPS、文件传输、邮件 | 视频直播、DNS 查询、游戏 |
面试加分点:
- TCP 三次握手:SYN → SYN+ACK → ACK,为什么不是两次?因为两次无法防止历史连接的 SYN 导致误建连接
- TCP 四次挥手:FIN → ACK → FIN → ACK,TIME_WAIT 状态等待 2MSL 确保对方收到最后的 ACK
- UDP 可以在应用层自己实现可靠性(如 QUIC 协议)
数据结构 & 算法
Q2:栈和队列怎么理解?
来源:26暑期实习-技术面
| 对比维度 | 栈(Stack) | 队列(Queue) |
|---|---|---|
| 操作规则 | 后进先出(LIFO) | 先进先出(FIFO) |
| 核心操作 | push(入栈)、pop(出栈)、peek(查看栈顶) | enqueue(入队)、dequeue(出队)、front(查看队首) |
| 生活类比 | 叠盘子:最后放的最先取 | 排队:先来先服务 |
| 典型应用 | 函数调用栈、括号匹配、表达式求值、DFS | BFS、任务调度、消息队列、缓冲区 |
| 实现方式 | 数组 / 链表 | 数组(循环队列)/ 链表 |
延伸:
- 双端队列(Deque):两端都能进出,Python 的
collections.deque就是实现 - 优先队列(Priority Queue):按优先级出队,底层通常是堆(Heap)
- 用两个栈实现队列 / 用两个队列实现栈 — 是华为高频手撕题
Q3:贪心算法和动态规划有什么区别?
来源:26暑期实习-技术面
| 对比维度 | 贪心(Greedy) | 动态规划(DP) |
|---|---|---|
| 决策方式 | 每步选当前最优,不回头 | 考虑所有子问题,综合得出全局最优 |
| 最优子结构 | 需要 | 需要 |
| 贪心选择性质 | 需要(局部最优 → 全局最优) | 不需要 |
| 重叠子问题 | 不涉及 | 核心特征,用备忘录/表格消除重复计算 |
| 时间复杂度 | 通常 $O(n)$ 或 $O(n \log n)$ | 通常 $O(n^2)$ 或更高 |
| 正确性 | 需要证明贪心策略正确(反证/交换论证) | 状态转移方程正确即可 |
举例对比:
- 零钱兑换(硬币 1, 5, 10, 25):贪心可以(每次选最大面值),因为硬币面值有倍数关系
- 零钱兑换(硬币 1, 3, 4,凑 6):贪心失败(4+1+1=3 次,但 3+3=2 次),必须用 DP
一句话总结:贪心是 DP 的特例。当贪心选择性质成立时,用贪心更快;不成立时,必须用 DP 枚举所有可能。
编程语言(C++/Java/Python)
Q4:简历写了多种编程语言,它们之间有什么差异?
来源:26暑期实习-技术面
这是一道开放题,面试官通常根据你简历写的语言来问。以最常见的 C++ / Java / Python 对比为例:
| 维度 | C++ | Java | Python |
|---|---|---|---|
| 类型系统 | 静态强类型 | 静态强类型 | 动态强类型 |
| 内存管理 | 手动(new/delete)或智能指针 | GC(垃圾回收) | GC(引用计数 + 分代回收) |
| 执行方式 | 编译为机器码 | 编译为字节码 → JVM 执行 | 解释执行 |
| 性能 | 最快 | 快(JIT 优化) | 慢(解释开销 + GIL) |
| 指针 | 有,可直接操作内存 | 无裸指针,有引用 | 无 |
| 多继承 | 支持 | 不支持(接口实现多继承效果) | 支持(MRO 解决菱形继承) |
| 应用场景 | 系统/嵌入式/游戏引擎/竞赛 | 企业后端/Android | AI/数据科学/脚本/Web |
面试建议:不要背表格,结合自己的项目经历谈。比如”项目中用 Python 做模型训练是因为生态好(PyTorch),但推理部分用 C++ 是因为性能要求”。
Q5:通过项目,对 Python 语言有什么认识?
来源:26暑期实习-技术面
这是结合项目的开放题,建议从优点 + 坑 + 实际体会三方面答:
优点:
- 开发效率极高:动态类型 + 丰富标准库 + pip 生态
- AI/数据科学生态无敌:NumPy、PyTorch、Pandas、Scikit-learn
- 语法简洁,代码可读性强
踩过的坑:
- GIL(全局解释器锁):多线程无法利用多核 CPU,CPU 密集型任务需要用多进程(
multiprocessing) - 性能瓶颈:纯 Python 循环慢,需要向量化(NumPy)或 C 扩展
- 可变默认参数陷阱:
def f(a=[])中默认列表在调用间共享 - 浅拷贝 vs 深拷贝:
list.copy()是浅拷贝,嵌套结构需要copy.deepcopy()
面试建议:具体到你项目里遇到的问题。比如”训练数据预处理阶段发现单线程太慢,后来用 multiprocessing.Pool 实现了 4x 加速”。
操作系统
待补充 — 后续面经录入后更新
数据库
待补充 — 后续面经录入后更新
面经记录
面经 1:26暑期实习(双机位)
技术面(约 85min,手撕用时较长):
- 自我介绍
- 手撕代码:未 AC 但思路正确,面试官协助调试(面试官说不影响结果)
- 八股:编程语言差异、栈和队列、TCP vs UDP、贪心 vs 动态规划、Python 项目认识
- 项目追问
- 无反问
主管面:
- 自我介绍
- 项目介绍
- 常见面试问题(建议提前准备)