面试手撕 / 华为
华为面试手撕高频题与备考规划
华为面试手撕 = 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、注意力机制等) |
影响因素:简历项目方向 + 面试官个人偏好,随机性大。
非 AI 岗(通软/嵌软/数据开发/测试等)
| 概率 |
内容 |
| 80% |
LeetCode 原题 |
| 20% |
基础算法手撕(优先队列、快排/归并排序等) |
最新高频手撕题 Top 20
统计于 25、26 届面经数据
完整手撕题单
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:贪心 + 二叉树基础
Day 7:二分查找与堆
Day 8:技巧 + 数学
Day 9:链表
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 必刷:有效的括号、岛屿数量、两数之和 — 出现频次最高
- BFS/DFS 是华为最爱:岛屿数量、腐烂的橘子、层序遍历反复出现
- 栈类题高频:有效的括号、字符串解码、每日温度、简化路径
- AI 岗额外准备 ML 手撕:Self-Attention、反向传播、KMeans 是必备项
- ACM 模式 + 规范命名:面试官看重代码质量,提前练好模板