这份 JD 在考什么
岗位职责 → 面试映射
| JD 原文 | 面试里会怎么出现 |
|---|---|
| 需求分析、方案设计、代码开发、静态检查、单元测试、本地构建、集成测试、问题定界定位 | 手撕题要求代码规范 + 边界处理 + 能解释复杂度;八股会问单测怎么写、静态检查工具、Git 工作流 |
| 组件/模块看护与重构,提升可维护性、可扩展性、可测试性 | 设计模式、重构原则(单一职责、依赖倒置)、怎么给老代码补测试 |
| 后端故障诊断和项目支持 | 排障方法论:日志 → 指标 → 链路;CPU 飙高、内存泄漏、接口超时怎么定位。你的美团 realtime-optimizer 和星环慢 SQL 监控是现成素材 |
| 智能化演进,AI 应用、AI 智能体 | RAG 流程、NL2SQL 的坑、Agent 的 tool-calling 与评测、用过哪些 AI 编程工具(面经里已经被问到) |
| 优选:TCP/IP、分布式、云化、容器化、HarmonyOS | TCP/UDP 区别、三次握手、CAP、Kafka/Flink 的一致性、Docker/K8s 基础概念 |
华为技术面的真实风格(来自 2025~2026 面经)
- 每轮技术面一道手撕题,以 LeetCode 简单~中等为主:反转字符串、岛屿数量、矩形重叠面积、删除有序数组重复项、二叉树最大宽度、多字符串最长公共子串。
- 面试官不换题而是沿一个知识点连续追问,例如从"岛屿数量用了 DFS"追到"这算 BFS 还是 DFS、递归深度多少会爆栈、怎么改迭代"。
- 手撕之后常问:换一种解法、复杂度能否更优、空数组/单元素/负数/含空格字符串怎么处理。每道高频题准备两种解法。
- 项目追问占一半以上时间,问法是"你具体做了什么、遇到什么问题、怎么解决、效果怎么量化"。
- 主管面几乎不问技术:加班态度、城市意向、稳定性、分歧处理、逻辑题。
10 天备考计划(每天 2 小时)
| Day | 算法专题(第②页对应题) | 八股/项目(第④⑤页) |
|---|---|---|
| 1 | 哈希与数组:两数之和、字母异位词分组、最大子数组和、多数元素 | 进程/线程/协程、IPC 方式、虚拟内存 |
| 2 | 双指针与滑动窗口:无重复最长子串、三数之和、盛水、接雨水、长度最小子数组 | TCP/UDP、三次握手四次挥手、HTTP 1.1/2 |
| 3 | 栈:有效括号、字符串解码、每日温度、移除 K 位数字、括号内翻转 | MySQL 索引/事务隔离/binlog、Redis 缓存 |
| 4 | 链表:反转、环、相交、合并、LRU(手写双向链表) | Java 集合/并发(HashMap、ConcurrentHashMap、volatile、线程池) |
| 5 | 树:层序遍历、最大宽度、最大深度变体、公共祖先 | 设计模式:单例(手写)、工厂、策略、观察者;重构原则 |
| 6 | BFS/DFS 网格:岛屿数量、岛屿周长、最大岛屿、矩阵最长递增路径 | 美团 realtime-optimizer:16 模式、4 维诊断背熟 |
| 7 | 回溯:全排列、组合、复原 IP、最大合法时间 | NL2SQL / RAG 流程、评测方法、幻觉治理 |
| 8 | DP:爬楼梯、零钱兑换、单词拆分、LIS、最长公共子串、分月饼 | Flink 项目:Watermark 停滞排障讲 3 分钟版本 |
| 9 | 贪心与排序:合并区间、最大数、分发糖果、救生艇、加油站、跳跃游戏、手写快排、第 K 大 | 排障方法论、单测/静态检查/CI 话术 |
| 10 | 用第⑦页随机抽 5 题限时模拟,每题 25 分钟,口述思路再写 | 主管面问题逐条过一遍,逻辑题练 3 道 |
手撕算法押题(按华为面经出现频次排序)
频次来源:1148 篇华为面经统计的 Top20、掘金汇总的华为手撕星级榜、牛客 2025~2026 通软/AI/嵌入式面经。 ★★★★★ = 多来源高频必做;★★★★ = 高频;★★★ = 常见;★★ = 近期面经出现或华为原创。参考代码为 Python,面试时用你最熟的语言(Java 也可以),关键是先口述思路再写。
华为机考题型分布(校招 3 题 / 100+200+300 分 / 120 分钟)
笔试已经考过,这一页留作面试官问"笔试做得怎么样、哪题没做出来"时的复盘,以及二面可能临时出一道机考风格题时的模板库。按测试用例通过率给分,暴力解也要先交。
一星题(100 分)高频考点
| 考点 | 占比 | 代表题 |
|---|---|---|
| 字符串处理 / 模拟 | 约 30% | IP 地址分类、日志异常检测、失灵键盘、十六进制协议帧解析、8 位 LED 控制器、电池充电时间 |
| 多关键字自定义排序 | 约 25% | 分辨率排序、按频次再按字典序排序、按票数和字母序输出(LC 937) |
| 哈希统计 | 高 | 热点网站统计、日志 ID 频次、命令失败统计、数组去重 |
| 栈 / 队列 / 单调栈 | 中 | 编辑器撤销重做、流量波峰、下一个更大元素、打印文件(优先队列) |
| 简单贪心 / 位运算 | 中 | 最优优惠券、不重叠区间分配、二进制等距判断 |
| 滑动窗口 / 前缀和 | 中 | 基站低能耗时段统计、颜色反转 |
二星 / 三星题(200~300 分)高频考点
| 考点 | 代表题 |
|---|---|
| 动态规划(最高频) | 两个字符串最短路径(编辑距离变体)、组装最大可靠性设备(背包)、零食奖励、点亮战争迷雾(树形 DP) |
| BFS / DFS | 上班之路、最大岛屿体积、抗洪救灾、机器人活动区域、WIFI 设备网络规划、连通区域最大值(2026-10-21 机考) |
| 拓扑排序 | 模块构建顺序、有向网络头尾节点、字典序最小合法顺序 |
| 二分答案 | 员工派遣、最佳植树距离(最小值最大化 / 最大值最小化) |
| 单调栈 / 贪心 | 删除重复数字后最大数字、最大股票收益、贪心的商人 |
| 并查集 / 区间合并 | 路灯照明、区间染色后最长连续段(2026-10-21 机考) |
| 复杂模拟 | 信道分配、卡牌游戏回合、环形内存访问、数字拼接求最小差值 |
必背模板(ACM 模式)
Python 输入输出模板
import sys
def main():
data = sys.stdin.read().split() # 一次读完,按空白切分
it = iter(data)
n = int(next(it))
arr = [int(next(it)) for _ in range(n)]
# 按行读取时:lines = sys.stdin.read().splitlines()
print(solve(n, arr))
def solve(n, arr):
return sum(arr)
if __name__ == "__main__":
main()
把核心逻辑和 I/O 分开写,面试官看得清楚,也方便口述。Java 用 BufferedReader + StreamTokenizer,避免 Scanner 超时。
多关键字排序(LC 937 风格)
# 按出现次数降序,次数相同按字典序升序
from collections import Counter
cnt = Counter(words)
res = sorted(cnt.items(), key=lambda kv: (-kv[1], kv[0]))
# 分辨率排序:按宽*高降序,相同按宽降序
res = sorted(items, key=lambda s: (-(s[0]*s[1]), -s[0]))
网格 BFS(最短路 / 连通块)
from collections import deque
def bfs(grid, sr, sc):
m, n = len(grid), len(grid[0])
dist = [[-1]*n for _ in range(m)]
q = deque([(sr, sc)]); dist[sr][sc] = 0
while q:
r, c = q.popleft()
for dr, dc in ((1,0),(-1,0),(0,1),(0,-1)):
nr, nc = r+dr, c+dc
if 0 <= nr < m and 0 <= nc < n and grid[nr][nc] != '#' and dist[nr][nc] == -1:
dist[nr][nc] = dist[r][c] + 1
q.append((nr, nc))
return dist
并查集
class DSU:
def __init__(self, n):
self.p = list(range(n)); self.sz = [1]*n
def find(self, x):
while self.p[x] != x:
self.p[x] = self.p[self.p[x]] # 路径压缩
x = self.p[x]
return x
def union(self, a, b):
a, b = self.find(a), self.find(b)
if a == b: return False
if self.sz[a] < self.sz[b]: a, b = b, a
self.p[b] = a; self.sz[a] += self.sz[b]
return True
拓扑排序(Kahn,字典序最小用堆)
import heapq
def topo(n, edges):
g = [[] for _ in range(n)]; indeg = [0]*n
for u, v in edges:
g[u].append(v); indeg[v] += 1
h = [i for i in range(n) if indeg[i] == 0]; heapq.heapify(h)
order = []
while h:
u = heapq.heappop(h); order.append(u)
for v in g[u]:
indeg[v] -= 1
if indeg[v] == 0: heapq.heappush(h, v)
return order if len(order) == n else None # None 表示有环
二分答案(最小值最大化)
def max_min_gap(pos, k): # 在 pos 中选 k 个点,使最小间距最大
pos.sort()
def ok(d): # 间距 >= d 时能否放下 k 个
cnt, last = 1, pos[0]
for x in pos[1:]:
if x - last >= d:
cnt += 1; last = x
return cnt >= k
lo, hi = 1, pos[-1] - pos[0]
while lo < hi:
mid = (lo + hi + 1) // 2
if ok(mid): lo = mid
else: hi = mid - 1
return lo
01 背包 / 完全背包
def knap01(W, items): # items: [(weight, value)]
dp = [0]*(W+1)
for w, v in items:
for c in range(W, w-1, -1): # 倒序:每件一次
dp[c] = max(dp[c], dp[c-w] + v)
return dp[W]
def knap_complete(W, items):
dp = [0]*(W+1)
for w, v in items:
for c in range(w, W+1): # 正序:可重复
dp[c] = max(dp[c], dp[c-w] + v)
return dp[W]
单调栈(下一个更大元素)
def next_greater(nums):
res = [-1]*len(nums); st = []
for i, x in enumerate(nums):
while st and nums[st[-1]] < x:
res[st.pop()] = x
st.append(i)
return res
八股押题
打 ★ 的是 2025~2026 华为通软 / 嵌入式 / Java 面经里被明确问到的原题。每条后面给出面试官的追问链,准备时按链条往下想两层。
操作系统
计算机网络(JD 优选项)
数据结构与算法基础
Java(你简历里 Flink / Spring Boot 都是 Java)
数据库与缓存
设计模式与工程能力(对应 JD 看护重构)
AI 应用与智能体(JD 第 4 条,必问)
分布式 / 云化 / 容器化(优选项,答到概念即可)
简历项目 → 通软 JD 的翻译
| 简历素材 | 对应 JD 职责 | 面试讲法(1 分钟版) | 必然追问 |
|---|---|---|---|
| 美团 · realtime-optimizer(反压定位、积压、SQL 改写;16 种优化模式、4 维诊断、三阶段流水线) | ③ 后端故障诊断 ④ 智能化演进(AI 智能体) | 把它讲成一个排障 Agent:输入作业元数据和指标,按四维诊断(资源 / 数据 / 算子 / 外部依赖)定位,再匹配 16 种优化模式输出建议。强调"把人工排障经验结构化成可复用工具"。 | 把 16 种模式和 4 个维度逐条列出;怎么验证建议是对的;误判率多少。 |
| 美团 · 无人车数仓智能问数(NL2SQL) | ④ AI 应用 | Schema 裁剪 + few-shot + 生成 SQL 校验执行 + 结果回退;指标口径固化到语义层。 | 准确率怎么测、测试集多大;错误 SQL 怎么兜底;为什么不直接 RAG 整个表结构。 |
| Flink 实时数仓(CDC、Broadcast State、Interval Join、Doris、Spring Boot 服务层) | ① 全流程开发 ② 看护重构 | 先说"骨架参考公开课程,三处是自己做的":Watermark 停滞排查、指标口径重梳、Doris 写入 + Spring Boot 服务层。 | 为什么每秒几百条要上 Flink;既用 Maxwell 又用 Flink CDC;Spring Boot 服务层暴露了什么接口、怎么测。 |
| Flink · 窗口延迟治理(低流量 Watermark 推进停滞) | ① 问题定界定位 | 这是最有辨识度的排障故事:现象(窗口不触发)→ 假设(Watermark 没推进)→ 验证(Web UI 看各 subtask watermark)→ 根因(空闲分区)→ 修复(withIdleness / 并行度对齐)→ 回归验证。 | 怎么确认不是数据本身没来;修复后怎么防止回退;有没有写成单测或告警。 |
| 星环 · 数据倾斜、Pod 不可用、慢 SQL 监控,核心任务缩短 20% | ③ 后端排障 ② 持续优化 | 长尾 Task 定位 → 倾斜 key 加盐两阶段聚合 / Map Join;Pod 不可用的排查链(kubectl describe → 日志 → 资源限制)。 | 20% 怎么量化的;慢 SQL 阈值怎么定;监控用什么实现。 |
| 名创 · 物化视图、增量加载,报表效率提升 30% | ② 可维护性与性能 | 扫描量和 Shuffle 量减少是根因;增量的边界条件(迟到数据、回刷)怎么处理。 | 增量加载出错怎么对账;物化视图过期策略。 |
六个必须提前准备的"身份"问题
主管面常见问题(2025~2026 面经原题)
稳定性与意向
- 对华为了解多少?认同华为文化吗?(准备 2 句:以客户为中心、艰苦奋斗,加一个你自己的理解)
- 意向城市杭州 / 上海 / 南京选哪个?为什么?能长期在这里发展吗?(家在哪、本科在哪会被一起问)
- 怎么看加班?压力大怎么处理?(承认压力,用一个实习里赶交付的具体例子说明怎么应对,不要表演热情也不要流露抗拒)
- 还会不会考研 / 读博?有没有别的 offer?期望薪酬?
- 未来 3~5 年职业规划?
- 本科和研究生成绩排名?
行为问题
- 和同事 / 导师意见不一致怎么处理?结果如何?
- 任务快到期发现问题做不完,怎么办?(先同步风险,再切分范围保核心,不要硬扛到最后一天)
- 实习中最大的困难、挫折、难沟通的场景?
- 自己的优缺点?平时怎么学习新技术?
- 沙漠里迷路口渴,发现一口枯井和一个破碗,你怎么想?(考乐观和行动力:破碗说明有人来过、枯井可以往下挖或等雨)
逻辑题(主管面确实会出)
毛驴运胡萝卜:两城相距 50 km,有 100 根胡萝卜,每次最多驮 50 根,每走 1 km 吃 1 根,最多能运到多少根?
100 根要分两趟驮,前半段每前进 1 km 要走 3 趟(去、回、去),消耗 3 根。走到 x km 时剩 100 − 3x,当剩 50 根时只需一趟:3x = 50 → x ≈ 16.67,取整在 16~17 km 处中转。以 17 km 为例:剩 100 − 51 = 49,再走 33 km 吃 33 根,剩 16 根。答案 16(有的版本答 16.67)。
四人过河:过河用时 1、2、5、10 分钟,船每次最多两人,速度按慢的算,最短多久?
1 和 2 过去(2),1 回(1),5 和 10 过去(10),2 回(2),1 和 2 过去(2)。合计 17 分钟。关键是让两个最慢的一起过且不用再回。
两根不均匀香,每根烧完 1 小时,怎么量 45 分钟?
同时点燃 A 两头和 B 一头;A 烧完时(30 分钟)点燃 B 另一头,B 再烧 15 分钟烧完,共 45 分钟。
烧饼问题:烙饼每面 1 分钟,锅一次放 2 张,3 张饼最少几分钟?
3 分钟:第 1 分钟 A 正 B 正;第 2 分钟 A 反 C 正;第 3 分钟 B 反 C 反。
估算题:用随机函数估算 π(面经原题)
在单位正方形内随机撒点,统计落在四分之一圆内的比例 p,π ≈ 4p。追问:误差和采样数的关系(1/√n)。
随机抽题 · 限时模拟
模拟真实手撕:抽到题后先用 2 分钟口述思路和边界,再写代码。默认 25 分钟,写完再点"查看题解"对照。