面试手撕 / 华为
华为面试手撕高频题与备考规划
基于 6139 篇面经统计(小红书 4867 + 牛客 1272),LC 真题 199 种、总频次 629 次。华为面试手撕 = 80% LeetCode 原题(Hot 100 为主)+ 20% 基础算法/ML 手撕。每位考生通常有一次换题机会。
面试流程概览
轮次说明
| 类型 |
轮次 |
| 暑期实习 |
技术一面 + 主管面(共 2 轮) |
| 秋招 |
技术一面 + 技术二面 + 主管面(共 3 轮) |
技术面考察内容
| 环节 |
说明 |
| 自我介绍 & 项目 |
简短自我介绍 + 追问简历中的实习/项目经历 |
| 八股文 |
数据结构、操作系统、网络、数据库等基础知识 |
| 手撕代码 |
现场编码,ACM 模式,详见下文 |
| 机试复盘 |
一面可能出现,代码重复率高时必定出现 |
考察顺序不固定,有些面试官会一开始就让你写代码。
手撕代码形式
线上面试:
| 形式 |
占比 |
流程 |
| 发送文字题目 |
50% |
面试官通过聊天框发题 → 本地 IDE 编写 → 面试官浏览代码问思路 |
| LeetCode 题号 |
45% |
登录自己的 LeetCode 账号,报题号现场做 |
| 机考复查 |
5% |
挑一道机考没满分的题当场重做 |
线下面试:白板编程,在白纸上写代码,面试官肉眼观察。
主管面
- 80% 聊天:生活、价值观、为人处世
- 20% 继续问技术
各岗位手撕考察方向
AI 算法岗
| 概率 |
内容 |
| 70% |
LeetCode Easy~Mid 原题(90% 来自 Hot 100) |
| 30% |
机器学习/深度学习手撕(KMeans、注意力机制等) |
影响因素:简历项目方向 + 面试官个人偏好,随机性大。
软件开发岗(通软/数据开发/测试等 · 最多人投递)
| 概率 |
内容 |
| 80% |
LeetCode 原题(Medium 为主,少量 Hard) |
| 20% |
基础算法手撕(手写快排、优先队列、归并排序等) |
考察形式:一道主题题 + 面试官追问变体或换解法。
嵌入式 / 数字 IC 岗
| 概率 |
内容 |
| 90% |
Verilog 电路手撕(同步 FIFO 控制器、异步 FIFO、状态机设计、分频电路) |
| 10% |
基础算法(与 LeetCode 几乎无交集) |
注意:嵌入式/IC 是完全独立的备考体系,和软件开发岗无重叠。
最新高频手撕题 Top 20
统计来源:小红书(4867 篇)+ 牛客网(1272 篇)共 6139 篇华为校招面经,LC 真题 199 种、总频次 629 次(高频≥5 共 38 种)
华为特色:追问文化
华为面试与字节、腾讯最大的差异在于追问。字节通常是一道题写完再出第二道,华为面试官喜欢在同一道题上反复追问:
| 追问类型 |
示例 |
| 换解法 |
岛屿数量写完 DFS → 要求用 BFS 重写;接雨水写完双指针 → 追问单调栈解法 |
| 复杂度优化 |
“还有没有更好的方案?空间能不能优化到 O(1)?” |
| 边界条件 |
“如果输入为空怎么处理?如果只有一个节点呢?” |
结论:准备华为面试,每道高频题不能只会一种写法。双解是标配,不是加分项。
华为特色:原创手撕题
华为有部分 LC 上找不到直接对应的原创题,频次不高但值得准备:
| 题目 |
频次 |
考点 |
| 手写快速排序 |
5 |
完整实现 + 复杂度分析 |
| 手写单例模式 |
4 |
volatile 原理 + 设计模式 |
| 分月饼 |
2 |
三维 DP + 滚动数组 |
| 颜色反转(r/g 归位) |
2 |
前缀和 / 枚举分界点 |
| 最大合法时间 |
2 |
枚举 / DFS(给 4 个数字凑 HH:MM) |
AI 岗 ML/DL 手撕频次
仅算法岗 / AI 方向 / 大模型岗需要准备,软件开发岗不考
| 题目 |
频次 |
| Self-Attention |
18 次 |
| MHA(Multi-Head Attention) |
15 次 |
| K-Means |
14 次 |
| 反向传播(Backpropagation) |
6 次 |
| Conv2d 手写 |
6 次 |
| Linear Layer |
4 次 |
| LSTM |
2 次 |
随着大模型岗位增多,Attention 机制手撕频次在快速上升。要求从零手写 PyTorch 代码,不是伪代码。
与腾讯、字节的对比
| 维度 |
华为 |
腾讯 |
字节 |
| 面经数量 |
6139 篇 |
3784 篇 |
— |
| LC 手撕频次 |
629 次 |
1833 次 |
— |
| 第一高频题 |
LC3(30次) |
LRU(123次) |
— |
| 非 LC 题占比 |
约 12% |
25% |
7% |
| 追问强度 |
★★★★★ |
★★★ |
★★ |
| 整体难度 |
Medium 为主 |
Medium 为主 |
Medium~Hard |
| 特色 |
岗位分化 / 追问文化 |
LRU / 场景原创题 |
原创题 / Hard |
完整手撕题单
26 届实习 + 秋招
AI 算法方向
| 时间 |
面试轮次 |
题目 |
| 9月底 |
AI工程师一面 |
480. 滑动窗口中位数 |
| 9月底 |
AI相关岗位一面 |
20. 有效的括号 |
| 9月底 |
海思AI工程师一面 |
986. 区间列表的交集 |
| 10月初 |
AI工程师一面 |
46. 全排列 |
| 10月初 |
AI一面 |
46. 全排列 |
| 10月初 |
计算机视觉一面 |
155. 最小栈 |
| 10月初 |
AI一面 |
搜索二维矩阵 |
| 10月初 |
AI工程师一面 |
字符串前缀后缀子串提取(自定义题) |
| 10月初 |
AI计算一面 |
实现 L2 loss 梯度下降算法 |
| 10月中 |
终端云AI一面 |
PyTorch 实现 XGBoost 调用、反向传播、NN |
| 10月中 |
媒体算法一面 |
两个矩形相交面积 |
| 10月中 |
推荐算法一面 |
456. 132 模式 |
| 10月底 |
AI工程师一面 |
字符串前缀后缀子串提取(自定义题) |
通软方向
其他方向
25 届秋招
AI 算法方向
| 时间 |
面试轮次 |
题目 |
| 10月中 |
AI算法工程师一面 |
LC 位运算原题(Mid) |
| 10月中 |
AI算法工程师二面 |
排序模拟题(Easy~Mid) |
| 11月初 |
通信算法一面 |
394. 字符串解码 |
| 11月初 |
通信算法二面 |
哈希表 + 取模判断分组 |
| 9月底 |
算法工程师二面 |
739. 每日温度 |
通软方向
其他方向
10 天备考速通规划
刷题顺序按手撕高频考点从高到低排列。AI 岗与非 AI 岗共用 Day 1~9,AI 岗额外完成 Day 10。刷题注重质量,一定自己写一遍代码。刷得快可以一天多个 Day,刷得慢适当抛弃 Hard 题。
Day 1:哈希 + 数组技巧 + 矩阵
Day 2:栈与双指针
Day 3:回溯
Day 4:BFS + 动态规划基础
Day 5:动态规划进阶
Day 6:贪心 + 二叉树基础
| 题目 |
链接 |
| LC 121. 买卖股票的最佳时机 |
练习 |
| LC 55. 跳跃游戏 |
练习 |
| LC 45. 跳跃游戏 II |
练习 |
| LC 763. 划分字母区间 |
练习 |
| LC 94. 二叉树的中序遍历 |
练习 |
| LC 104. 二叉树的最大深度 |
练习 |
| LC 102. 二叉树的层序遍历 |
练习 |
Day 7:二分查找与堆
| 题目 |
链接 |
| LC 704. 二分查找 |
练习 |
| LC 35. 搜索插入位置 |
练习 |
| LC 34. 排序数组中查找元素的首尾位置 |
练习 |
| LC 33. 搜索旋转排序数组 |
练习 |
| LC 153. 旋转排序数组的最小值 |
练习 |
| LC 215. 数组中的第K个最大元素 |
练习 |
| LC 347. 前K个高频元素 |
练习 |
| LC 703. 数据流中的第K大元素 |
LeetCode |
Day 8:技巧 + 数学
| 题目 |
链接 |
| LC 136. 只出现一次的数字 |
练习 |
| LC 169. 多数元素 |
练习 |
| LC 287. 寻找重复数 |
练习 |
| LC 238. 除自身以外数组的乘积 |
LeetCode |
| LC 75. 颜色分类 |
练习 |
Day 9:链表
| 题目 |
链接 |
| LC 206. 反转链表 |
练习 |
| LC 141. 环形链表 |
练习 |
| LC 142. 环形链表 II |
练习 |
| LC 21. 合并两个有序链表 |
练习 |
| LC 2. 两数相加 |
练习 |
| LC 19. 删除链表的倒数第N个结点 |
练习 |
| LC 234. 回文链表 |
练习 |
| LC 160. 相交链表 |
练习 |
Day 10:AI 岗专题(非 AI 岗跳过)
| 方向 |
题目 |
题解 |
| 机器学习 |
手撕 KMeans |
题解 |
| 机器学习 |
手撕 KNN |
题解 |
| 机器学习 |
手撕线性回归 |
题解 |
| 深度学习 |
手撕反向传播 |
题解 |
| 深度学习 |
SoftMax 计算 |
题解 |
| Transformer |
Self-Attention 机制 |
题解 |
| Transformer |
多头注意力机制 (MHA) |
题解 |
必备前置知识
手撕代码模板(ACM 模式)
华为面试手撕是 ACM 模式,需要自己处理输入输出。面试官看重解耦 + 抽象 + 规范命名。
import sys
input = sys.stdin.readline
class Solution:
def solve(self, arr):
"""核心逻辑函数,与输入输出解耦"""
# 实现算法逻辑
return result
if __name__ == "__main__":
sol = Solution()
# 处理输入
n = int(input())
arr = list(map(int, input().split()))
# 调用解法并输出
print(sol.solve(arr))
要点:
- 逻辑函数与 I/O 分离,体现解耦思想
- 变量命名规范,不用单字母(除循环变量
i, j)
- 面试时先和面试官确认输入格式,再动手写
常见问题
| 问题 |
回答 |
| 撕不出来会直接挂吗? |
综合评估。BG好+项目对口会放宽;通常有一次换题机会(换为更简单的 Easy 题) |
| 手撕是 ACM 还是核心代码模式? |
线上是 ACM 模式(自行写+跑样例);线下白板编程相对宽松 |
| 代码规范重要吗? |
重要!面试官看重解耦+命名规范,代码不规范容易被 diss |
| 机试复盘是什么? |
一面面试官拿到你机考代码,交流思路和设计。代码重复率高时必定出现 |
小结
- Top 3 必刷:无重复字符最长子串(30次)、岛屿数量(29次)、有效的括号(22次)— 断层高频
- BFS/DFS 是华为最爱:岛屿数量、腐烂的橘子、层序遍历反复出现
- 栈类题高频:有效的括号、字符串解码、每日温度、简化路径
- LRU 缓存必须会:17 次排第 4,要求哈希表 + 双向链表手写
- 每道题准备双解:华为追问文化要求同一题掌握多种写法
- AI 岗额外准备 ML 手撕:Self-Attention(18次)、MHA(15次)、KMeans(14次)是 Top 3
- ACM 模式 + 规范命名:面试官看重代码质量,提前练好模板