华为技术有限公司OD Java开发2026届

华为OD Java社招面经:14天拿21k

华为OD Java开发社招面经:普通本科4年经验,3轮面试14天拿21k offer。一面八股与机考复盘,二面项目深挖加算法,主管面追问AI工具使用与稳定性,附32题参考答案与备考建议。

更新 2026-11-06
华为ODJava社招面经后端开发机考项目深挖AI工具外包转正
13 浏览

企业概况

公司简介

华为技术有限公司成立于 1987 年,总部位于深圳,业务覆盖运营商网络、企业业务、终端、云计算与数字能源等板块,是全球领先的 ICT 基础设施与智能终端提供商。OD(Outsourcing Dispatch)是华为与人力服务商合作的外包用工模式,人员由服务商签约、在华为的项目组内工作,日常管理与考核贴近正式员工,但合同主体、晋升通道与股权激励与自有员工不同。OD 岗位集中在研发交付一线,是华为补充工程人力的主要渠道之一。

  • 成立时间:1987 年
  • 总部:深圳
  • 主营业务:ICT 基础设施、智能终端、云计算与数字能源
  • 规模与行业地位:2024 年销售收入 8621 亿元人民币,全球通信设备第一梯队
  • 研发与专利:2024 年研发费用 1797 亿元,占收入 20.8%

岗位定位

OD 的 Java 开发岗主要面向业务系统与平台工具的研发交付,工作内容与自有员工高度重合:接需求、写设计、编码、联调、上线、值守。区别在劳动关系与晋升体系——OD 由服务商签约,绩效优秀且满足名额条件后有机会转正。对 4 年经验的候选人来说,这类岗位的吸引力在于能进入体量更大的系统,接触高并发与规范化的研发流程。

  • 所属体系:各产品线 / 研究所的项目组,按业务线分配
  • 核心职责:业务系统开发、接口设计、线上问题定位与值守
  • 发展路径:OD 开发 → 高级 OD 开发 → 绩效达标后申请转正,或转向其他公司
  • 培养体系:入职有导师带,按项目交付节奏推进,考核以交付质量与协作评价为主

面试会直接确认你是否了解 OD 的性质,含糊其辞会被判定动机不明。同一岗位要求「用什么语言就用手撕」,投 Java 岗就别用 C++ 刷题。AI 工具的使用比例是近两年新增的必问题,主管面会追问团队层面的一致性。

招聘概况

OD 招聘常年滚动进行,流程比校招快得多:简历筛选 → 机考 → 技术一面 → 技术二面 → 主管面 → 资面与 offer,顺利的话两周内可以走完。机考是硬门槛,编程题以中等难度为主,建议提前按题型刷一遍。

  • 招聘规模:按项目组缺口滚动招聘,全年开放
  • 面向专业:计算机、软件工程、电子信息等相关专业,本科及以上
  • 工作地点:深圳、东莞、西安、南京、成都等研究所与办公点
  • 投递窗口:全年开放,社招通道随缺编情况释放

企业概况整理自公司、公开年报与招聘公告,具体数据以官方最新发布为准。

面试总体概述

案例背景

这位同学是普通本科、计算机科班出身,Java 后端 4 年经验、两段工作经历,走的是华为 OD 通道。整个流程 14 天走完,最终拿到 21k 的 offer。三轮分工很清楚:一面以八股和笔试题复盘为主,二面纯项目深挖加一道算法,主管面重点问 AI 工具的使用比例、项目协调与稳定性。

基本信息

  • 公司:华为技术有限公司
  • 岗位:OD · Java 开发
  • 招聘类型:社招
  • 用工形式 / 部门:OD(外包)
  • 面试轮次:3 轮
  • 平均时长:45 分钟
  • 题目数量:共 32 题,均附参考答案
  • 整体难度:★★★☆☆ 中等
  • 候选人背景:学历 本科(普通本科)|专业 计算机科班|经历 Java 后端 4 年,两段工作经历
  • 是否参加笔试:是
  • 笔试形式:在线机考(编程题)

高频考点

| 考点 | 分类 | 出现轮次 | 次数 |

| --- | --- | --- | --- |

| 项目逐条深挖(背景、模块、难点、规模) | 项目经历 | 技术一面、技术二面、主管面 | 8 |

| AI 工具的使用比例与准确性保障 | 工作方式 | 技术一面、主管面 | 3 |

| OD 身份认知与加班接受度 | 稳定性 | 技术一面 | 2 |

| 离职原因与职业规划 | 稳定性 | 技术一面 | 2 |

| Java 集合与并发基础 | 基础八股 | 技术一面 | 4 |

| 设计模式与代码改造 | 工程能力 | 技术二面 | 2 |

| 算法手撕(栈 / 哈希 + 堆) | 算法 | 技术一面、技术二面 | 3 |

备考建议

| 优先级 | 易失分点 | 准备动作 |

| --- | --- | --- |

| P0 | 项目讲不出规模数字,被问「多大」时卡壳 | 给每个项目补一份量化卡片:团队人数、模块数、表数量、jar 包体积、日请求量、峰值 QPS |

| P0 | 对 OD 的性质一知半解,被问「你知道这是 OD 吧」时回答含糊 | 提前弄清合同主体、绩效体系、转正条件与名额机制,准备一句诚实且有边界的态度表达 |

| P1 | 八股每个方向都浅,容易在集合与并发上丢分 | 重点过 HashMap 扩容与树化、ConcurrentHashMap、AQS 与锁升级、JVM 内存与 GC 四条线 |

| P1 | 手撕习惯用自己熟悉的语言,投 Java 岗却用 C++ 写 | 按目标岗位语言刷题,熟悉该语言的标准输入输出与常用容器写法 |

| P2 | 离职原因与压力类问题容易讲成吐槽 | 把两段离职理由写成客观事实句,去掉对人、对管理的评价 |

面试流程

流程总览

| # | 环节 | 形式 | 时长 | 筛选重点 |

| --- | --- | --- | --- | --- |

| 1 | 简历投递 | 招聘平台 / 服务商渠道 | 1~2 天 | 年限、技术栈与岗位匹配 |

| 2 | 机考(笔试) | 在线编程 | 约 2 小时 | 编码基本功与算法熟练度 |

| 3 | 技术一面 | 视频面试 | 约 45~60 分钟 | 八股广度 + 项目真实性 + 一道算法 |

| 4 | 技术二面 | 视频面试 | 约 45 分钟 | 项目深度与方案权衡 |

| 5 | 主管面 | 视频面试 | 约 30~40 分钟 | 稳定性、协作方式、AI 工具使用 |

| 6 | 资面与 offer | 电话 / 线上 | 1~3 天 | 薪资期望、到岗时间、背调 |

各环节说明

1. 简历投递

OD 岗位通常由服务商的招聘顾问先对接,核对年限、期望薪资与到岗时间后推给业务侧。简历要突出与岗位一致的技术栈,避免写太多无关方向。

  • 把最近一段经历放在最前面,写清业务量级与你的模块
  • 提前确认工作地点能否接受,避免面试后因地点谈崩

2. 机考(笔试)

机考是硬门槛,通常三道编程题,难度以中等为主,覆盖字符串、数组、动态规划、模拟等。通过后才会安排技术面。

  • 按题型专项刷题,重点练字符串处理与模拟类
  • 注意输入输出格式,机考环境不支持第三方库时要提前适应

3. 技术一面

面试官会照着简历逐条问项目,再铺开一轮 Java 基础与集合、并发、数据库的八股,最后在本地 IDE 里手撕一道题。八股每个方向都会碰一点,但不会深挖。

  • 把简历上每个项目准备成「背景—模块—难点—结果」四句话
  • 手撕前清理本地 IDE 环境,关掉无关文件

4. 技术二面

二面几乎不问八股,纯项目逐条深挖,会顺着你的实现反推「为什么这么设计」「有没有更好的方案」「加一个限制条件你会怎么改」,最后一道算法。反馈通常很快。

  • 每个技术选型准备一个被淘汰的替代方案及原因
  • 把项目规模量化:人数、模块数、jar 包大小、QPS

5. 主管面

主管面偏软性:为什么离职、能不能接受加班、对 OD 的认知、AI 工具的使用比例与准确性保障,再挑一两个项目问协作与压力。态度比技巧重要。

  • 离职原因保持客观,不评价前公司与人
  • 加班问题给「阶段性可以、希望有调休」的边界,别空口承诺

6. 资面与 offer

由服务商或 HR 沟通薪资结构(基本工资 + 绩效)、到岗时间与背调材料。OD 的薪资谈判空间通常在绩效部分,基本工资相对固定。

  • 提前算清税前税后与公积金差异
  • 确认合同主体、试用期时长与绩效计算方式

第 1 轮:技术一面

面试形式与时长

  • 轮次名称:技术一面
  • 面试类型:技术面
  • 时长:60 分钟
  • 形式:视频面试
  • 本轮题量:12 题

重点考查维度

  • 通用行为 —— 本组 6 道题
  • 流程类 —— 本组 2 道题
  • 算法手撕 —— 本组 2 道题
  • 项目经历 —— 本组 1 道题
  • 基础八股 —— 本组 1 道题

这轮的主线是「照简历逐条问 + 八股铺开 + 一道算法」。面试官会先核对笔试情况,再让你复盘一道做过的机考题,然后顺着项目问技术选型,最后在本地 IDE 里手撕。八股覆盖面很广但不深入。

Q1 先做个自我介绍吧。

通用行为 · 自我介绍

参考答案

在职跳槽的自我介绍和校招不一样,重点是把「4 年经验」换成可信的产出。

  • 身份与年限:本科、计算机科班,Java 后端 4 年,两段工作经历。
  • 业务与职责:最近一段做 XX 业务,负责哪几个模块、日请求量级、团队规模。
  • 技术栈:Spring Cloud / MySQL / Redis / Kafka 的实际使用深度,别说「了解」。
  • 亮点一句:挑一个能量化的事,比如把某个接口 P99 从 800ms 降到 200ms。

控制在 2 分钟,讲完主动补一句「需要我展开哪部分」。OD 面试官通常照着简历问,自我介绍相当于给他划重点。

Q2 你是啥时候做的笔试?

流程类 · 笔试确认

参考答案

这类问题不是考知识,是面试官在核对流程与资格,答清楚时间即可。

  • 直接给时间点:X 月 X 日参加的机考,题目是三道编程题,得分或通过情况一句带过。
  • 如果记不清:给出大致时间段,并说明成绩可以在系统里查到,不要含糊应付。
  • 顺手补一句自己的感受:比如第三题考的是字符串处理,当时用双指针解的。

这类确认题的作用是让面试官知道你的流程是真的走完了,答得干脆会让他后面问得更放得开。

Q3 我给你发一道做过的笔试题,你说一下思路就行。

流程类 · 笔试题复盘

参考答案

面试官会从你的机考记录里挑一道,看你是「真做过」还是「背答案」。答法固定三步。

  • 先复述题意与关键约束:输入规模多大、有没有负数、要不要考虑空输入,这一步能立刻暴露你是否理解题意。
  • 再给思路与复杂度:先说暴力解法与复杂度,再说优化到目标复杂度用了什么结构(哈希、单调栈、前缀和、并查集)。
  • 最后讲边界:最大规模会不会超时、溢出要不要用 long、特殊情况怎么处理。

如果当时没做出来,如实说是哪一步卡住、后来怎么想通的,比硬编一个完美答案更可信。

Q4 看你写了使用 AI,那你在项目中使用 AI 的比例是多少?你是从啥时候使用 AI 的?

通用行为 · AI 工具使用

参考答案

这题在 OD 面试里几乎必问,考的是「会不会用」加「敢不敢用」。

  • 给比例也要给场景:日常编码约 30%~40% 的代码由 AI 生成,集中在样板代码、单测、SQL 拼装、日志排查脚本;核心业务逻辑与涉及资金、权限的部分仍然自己写。
  • 给时间线:从 2023 年 Copilot 类工具开始用,2024 年后转向对话式助手做代码审查与方案对比。
  • 给方法论:AI 生成 → 自己逐行 review → 补单测 → 灰度验证,形成一个闭环。
  • 追问预警:主管面会接着问「同事也这样吗」「怎么保证准确性」,提前想好团队层面的答案。

Q5 能详细介绍一下你做过的最近一个项目?技术栈?难点?

项目经历 · 项目介绍

参考答案

用「背景—架构—我的模块—难点—结果」五段式,控制在 3 分钟。

  • 背景:业务是什么、原来有什么问题(性能、稳定性、扩展性)。
  • 架构:整体分层与核心组件,画不出图就用语言描述调用链。
  • 我的模块:明确说「我负责 A 和 B,C 是同事做的」,边界清楚反而加分。
  • 难点:挑一个真的难的技术点,讲清当时的约束(不能停机、数据量多大、时间多紧)。
  • 结果:接口耗时、错误率、支撑的业务量,给数字。

OD 面试官对「你实际写了多少代码」很敏感,讲的时候多用「我改了什么类、加了几张表」这种颗粒度。

Q6 项目中常用的数据结构有哪些?能讲一下 Map 数据结构吗?

基础八股 · 集合

参考答案

先给全局再深入 HashMap。

  • 常用:HashMap 做本地缓存与分组、ArrayList 做批处理、ConcurrentHashMap 做并发计数、LinkedList / ArrayDeque 做队列、TreeMap 做有序区间查询。
  • HashMap 结构:数组 + 链表 + 红黑树。key 的 hash 经扰动函数(高 16 位异或低 16 位)后定位桶,冲突挂链表。
  • 扩容:默认容量 16、阈值 12,元素数超过阈值翻倍,扩容时按 hash 高位拆分链表(1.8 不再重新计算 hash)。
  • 树化:链表长度 ≥8 且数组长度 ≥64 时转红黑树,退化到 ≤6 转回链表。
  • 并发:HashMap 非线程安全,1.7 头插法在并发扩容时会成环,1.8 改尾插仍有数据覆盖问题,多线程要用 ConcurrentHashMap。

HashMap 红黑树扩容

Q7 在你的项目中你承担过哪些角色?你是项目负责人吗?

通用行为 · 角色与责任

参考答案

如实说,但要把「不是负责人」讲成有主动权的人。

  • 角色定位:核心开发 / 模块 owner,负责 X 与 Y 两个模块的设计与实现。
  • 主动性的证据:做过技术方案评审、带过 1~2 个新人、推动过一次线上问题的复盘与整改。
  • 如果确实做过负责人:讲清管几个人、管了什么(排期、评审、对外沟通),别只说头衔。
  • 收尾给边界:目前更偏技术纵深,团队管理经验有限,这也是想换环境的原因之一。

OD 岗位的面试官很在意「能不能独立扛模块」,回答要落到具体交付物上。

Q8 你有过两段工作经历,能说下为啥离职?

通用行为 · 稳定性

参考答案

两段都要给理由,且不能互相矛盾,也不能变成吐槽前公司。

  • 第一段离职:技术栈或业务方向遇到天花板,想进入规模更大的系统做高并发/分布式。
  • 第二段离职:公司业务收缩或项目方向调整,个人成长空间受限;用客观事实描述,不评价人。
  • 收尾对齐动机:希望在稳定的平台上做长期的技术积累。
  • 忌讳:「钱少」「领导不行」「加班多」。这类回答会被直接记成稳定性风险,而且是 OD 岗位最敏感的点。
  • 追问预警:两段经历的起止时间要能和简历对上,别出现空窗期却解释不清。

Q9 工作中遇到过让你感觉到压力的事情有哪些?你是怎么解决的?

通用行为 · 压力应对

参考答案

用 STAR 讲一个具体案例,别给抽象形容词。

  • 情境:比如大促前一周发现核心接口在压测下超时。
  • 任务:要在不停机的前提下把 P99 压下来。
  • 行动:先定位(看慢查询、看线程栈、看 GC 日志)→ 拆解(把同步调用改异步、加二级缓存、SQL 加索引)→ 分批灰度 → 加监控兜底。
  • 结果:P99 从 X 降到 Y,大促零故障。
  • 最后补一句方法论:压力大的时候先拆问题再排优先级,把「不确定」变成「可验证的小步骤」。

Q10 你知道我们这个是 OD 吧?能接受加班不?

通用行为 · 用工形式与加班

参考答案

这题答得含糊会被判定动机不明,答得太满又不可信,要给「有条件的是」。

  • 先确认知情:知道 OD 是外包编制,和正式员工在合同主体、晋升通道上有差别,也了解转正需要满足绩效与名额条件。
  • 再给接受度:能接受项目期的阶段性冲刺(版本发布、大促保障),也希望能有调休或节奏上的平衡。
  • 给证据:上一份工作在大促期间连续加班两周,事后按团队规则调休,说明自己既能扛也有边界。
  • 不要反问「转正比例多少」把气氛弄僵,这类信息留给 HR 面或 offer 沟通阶段。

Q11 我们再做个面试题,你可以用本地的开发工具打开,把题目粘贴上去。

算法手撕 · 环境与流程

参考答案

这一步是共享屏幕在本地 IDE 里写,环境本身就是考察点。

  • 准备:提前新建一个空白文件,关掉无关标签页、聊天窗口和带答案的历史文件。
  • 流程:先复述题意 → 给 1~2 个样例 → 说复杂度 → 写代码 → 自己跑样例 → 主动说边界。
  • 不要依赖自动补全和模板:面试官会看着你敲,用 IDE 生成的整段代码很难解释清楚。
  • 出问题时先自测:语法错误当场改,逻辑错误用样例手动走一遍,别沉默。
  • 如果题目一时没思路,可以说「我先写暴力解,再优化」,比卡住不动好得多。

Q12 算法题:给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。

算法手撕 · 栈 / 动态规划

参考答案

三种解法都值得会,现场优先写栈。

  • 栈:栈底先压 -1 作为哨兵。遇 '(' 压入下标;遇 ')' 先弹出,若栈空说明当前 ')' 多余,把它的下标压入作为新的边界,否则当前长度 = i - 栈顶。时间 O(n)、空间 O(n)。
  • 双计数器:左右各扫一遍,left == right 时更新答案,right > left 时清零;反向再扫一次处理「左括号富余」的情况,空间 O(1)。
  • DP:dp[i] 表示以 i 结尾的最长有效长度。s[i] == ')' 时,若 s[i-1] == '(' 则 dp[i] = dp[i-2] + 2;否则看 i-dp[i-1]-1 是否为 '(',是则 dp[i] = dp[i-1] + 2 + dp[i-dp[i-1]-2]。
def longestValidParentheses(s):
 st, ans = [-1], 0
 for i, c in enumerate(s):
 if c == '(':
 st.append(i)
 else:
 st.pop()
 if not st:
 st.append(i)
 else:
 ans = max(ans, i - st[-1])
 return ans
  • 边界:空串返回 0;全为 ')' 返回 0;"()()" 返回 4,"(()" 返回 2。

栈 动态规划 双指针

五、第 2 轮:技术二面

5. 1 面试形式与时长

| 轮次名称 | 技术二面 |

| --- | --- |

| 面试类型 | 技术面 |

| 时长 | 45 分钟 |

| 形式 | 视频面试 |

| 本轮题量 | 10 题 |

5. 2 重点考查维度

  • 项目经历 —— 本组 5 道题
  • 通用行为 —— 本组 3 道题
  • 算法手撕 —— 本组 2 道题

二面几乎不碰八股,纯项目深挖,而且会顺着你的实现往深里推:为什么这么设计、有没有更优方案、加限制条件后怎么改。反馈速度很快,面完十分钟内就有结果。

5. 3 面试真题与参考答案

Q1 先做个简单的自我介绍吧?

通用行为 · 自我介绍

参考答案

二面的自我介绍要换重心:一面证明技术栈对得上,二面证明「能扛事、能带人」。

  • 一句话身份 + 一句最近项目的业务价值。
  • 重点讲两件事:一个你主导的技术改造(带了什么收益),一次跨团队协作或线上救火。
  • 技术栈只提和岗位相关的,别复述一面已经讲过的内容。
  • 结尾一句职业规划,说明为什么在这个阶段选择这个方向。

时长控制在 90 秒,二面面试官通常已经看过一面的评价,重复太多会被打断。

Q2 最近的项目介绍一下?

项目经历 · 项目介绍

参考答案

二面讲项目要更偏「结果与影响」,少讲技术细节。

  • 业务目标:这个项目解决什么业务问题,谁在用,量级多大。
  • 我的位置:在项目里是设计者还是执行者,方案是谁定的。
  • 关键决策:挑一个当时有争议的选择(同步还是异步、自研还是买),说清怎么权衡的。
  • 结果:交付周期、线上指标、是否有返工。
  • 追问预警:会被问「如果重做一次会怎么改」,提前准备一个诚实的反思点,比如当初低估了数据迁移的成本。

Q3 你在项目中负责哪些模块?

项目经历 · 职责边界

参考答案

把模块说清楚,同时给出「深度证据」。

  • 列模块:比如订单创建、库存扣减、对账补偿三个模块的 owner。
  • 每个模块补一句核心逻辑:订单创建的关键是幂等与状态机,库存扣减的关键是防超卖。
  • 给代码量级的证据:核心类有多少、加过哪些表、改过哪些接口。
  • 说明协作边界:哪些是同事负责的,接口怎么约定的。

这类问题最怕笼统的「整个项目我都参与」,面试官会立刻接着问细节,答不上就掉分。

Q4 你们项目是多大规模的?人数?项目是多大?jar 包大小?

项目经历 · 规模量化

参考答案

这是二面的典型「挤水分」问题,答不出具体数字等于没真正参与。

  • 人数:开发 6 人、测试 2 人、产品 1 人,按模块分两个小组。
  • 代码与工程规模:多少个 Maven 模块、多少张表、核心服务多少个接口。
  • jar 包:单个可执行包 80~120MB 量级,原生镜像或瘦包会更小;能说清为什么这么大(依赖多、内嵌容器)。
  • 流量:日请求量、峰值 QPS、单表数据量。

如果确实不记得,就说「大概的量级」并补一个你能确认的指标,不要编精确数字——面试官很容易顺着追问。

Q5 你有用到过哪些策略模式?听你说你改造了 xxx,详细说一下?用了哪些技术?做此次改造的业务背景是什么?改动的代码量多大?

项目经历 · 设计模式与改造

参考答案

按「背景—方案—落地—收益」讲,设计模式只是其中一环。

  • 背景:原来的 if-else 分支按渠道/业务类型写死,新增一种要改核心类、回归成本高。
  • 方案:定义统一接口(如 ChannelHandler),每个渠道一个实现类,用 Map 或 Spring 的策略注册在启动时装配;配合模板方法把公共流程抽到抽象类。
  • 技术:Spring 的 Bean 注入 + 自定义注解做策略标识、枚举做路由 key、工厂做兜底默认实现。
  • 落地:分两批迁移,先加新分支走策略,再逐步把老分支收编;用开关控制灰度。
  • 代码量:新增约 1200 行、删除约 800 行 if-else,核心类从 900 行降到 200 行以内。
  • 收益要落到「新增一个渠道的改动从 3 天降到半天」这种可感知的指标。

策略模式重构

Q6 项目中你遇到过感觉比较困难的技术是什么?

项目经历 · 技术难点

参考答案

选一个「有约束、有取舍」的难点,不要选纯知识型问题。

  • 举例方向:分布式事务一致性、缓存与数据库双写不一致、大表迁移不停机、消息重复消费导致对账不平。
  • 讲清约束:不能停机、数据量多大、可接受的不一致窗口是多少。
  • 讲清方案:本地消息表 + 定时补偿、先更新库再删缓存 + 延迟双删、双写 + 影子表校验。
  • 讲清代价:方案引入了什么复杂度,后来怎么收敛的。
  • 最后补一句「这个问题的根因其实是业务流程没有幂等设计」,显得你看到的是系统而不是代码。

Q7 担任过项目负责人吗?你是怎么协调项目进度和人力的?遇到过哪些困难?

通用行为 · 项目管理

参考答案

没有头衔也能答,重点讲方法。

  • 排期:把需求拆到 2 天以内的粒度,识别关键路径,给每个环节留 buffer。
  • 人力:按模块 owner 制分配,明确接口人与交付物,避免多人改同一处代码。
  • 同步机制:每日站会 10 分钟对齐阻塞点,风险在周会上暴露而不是在上线前一天。
  • 困难举例:联调阶段上游接口延期,做法是先 Mock 推进自测、把依赖后置,同时升级风险给项目经理。
  • 收尾:项目按期上线的比例、返工次数,用一个结果证明方法有效。

Q8 我们来做个面试题吧,有什么不理解的可以跟我说,你也可以说说你的思路。

算法手撕 · 沟通方式

参考答案

二面的手撕更看重思路表达,题目本身往往不难。

  • 先确认理解:把题目用自己的话复述一遍,问清输入规模与特殊约束。
  • 给两个方案:一个直观解(暴力/模拟),一个优化解,说明为什么优化解更好。
  • 边写边讲:关键行说一句在干什么,别让面试官猜。
  • 写完自测:用小样例走一遍,再主动说最大规模会不会超时。
  • 面试官说「有什么不理解的可以跟我说」,说明他愿意给提示——卡住时把卡点说出来,比硬憋更受欢迎。

Q9 算法题:给定日志关键字数组 words,返回出现次数最多的前 k 个不同关键字。

算法手撕 · 哈希 + 堆

参考答案

标准解法是哈希计数 + 小顶堆,注意「不同关键字」意味着要先按字符串去重。

  • 步骤一:用字典统计每个关键字出现次数(若输入是日志文本,先用 AC 自动机或分词把关键字抽出来)。
  • 步骤二:维护大小为 k 的小顶堆,按 (次数, 关键字) 排序;堆满后若新元素次数大于堆顶则替换。
  • 复杂度:O(n + m log k),m 为不同关键字个数;若 k 接近 m,直接全排序更简单。
  • 并列处理要问清:次数相同按字典序还是按首次出现顺序,这决定比较器怎么写。
import heapq

def top_k(words, k):
 cnt = {}
 for w in words:
 cnt[w] = cnt.get(w, 0) + 1
 return [w for w, _ in heapq.nlargest(k, cnt.items(), key=lambda x: (x[1], x[0]))]

追问预警:数据量大到内存放不下时,答「分片哈希到多个文件,各自统计后归并」。

哈希小顶堆topK

Q10 你还有什么想问的问题吗?

通用行为 · 反问

参考答案

二面的反问要偏「团队与业务」,让面试官觉得你在认真考虑长期投入。

  • 团队现状:这个组目前多少人、主要负责哪条业务线、近半年的重点是什么。
  • 岗位期待:入职后前三个月最希望我解决什么问题。
  • 技术氛围:有没有代码评审、技术分享、故障复盘的固定机制。
  • 不要问「我表现得怎么样」,也不要在这轮追问 OD 转正比例,留给 HR 沟通更合适。
  • 收尾一句「今天聊下来我对 XX 方向更感兴趣」,给面试官一个正向反馈。

六、第 3 轮:主管面

6. 1 面试形式与时长

| 轮次名称 | 主管面 |

| --- | --- |

| 面试类型 | 主管面 |

| 时长 | 30 分钟 |

| 形式 | 视频面试 |

| 本轮题量 | 10 题 |

6. 2 重点考查维度

  • 通用行为 —— 本组 7 道题
  • 项目经历 —— 本组 3 道题

主管面关心稳定性与协作:离职原因、加班接受度、对 OD 的认知、AI 工具的使用边界,再挑一两个项目问压力与配合。技术问题很少,但每个问题都会追问一层。

6. 3 面试真题与参考答案

Q1 先做个简单的自我介绍吧。

通用行为 · 自我介绍

参考答案

主管面时间短、问题散,自我介绍要压缩到 60~90 秒,只留三件事。

  • 年限与方向:Java 后端 4 年,主要做交易/中台类系统。
  • 一个代表项目:业务价值 + 你的角色 + 结果数字。
  • 一句动机:为什么现在看机会、为什么是这个岗位。

主管不关心技术细节,关心的是「这个人能不能稳定交付、好不好合作」,所以语气要平实,别堆术语。

Q2 我对你简历中使用 AI 比较感兴趣!你是从啥时候开始用的?你用 AI 生成代码的比例是多少?你的同事也是这种比例吗?有使用过 AI 解决老业务吗?如何保证 AI 的准确性?

通用行为 · AI 工具使用(追问链)

参考答案

这是主管面最典型的一串追问,一次答完五问。

  • 时间:2023 年开始用补全类工具,2024 年后主要用对话式助手做方案对比与代码审查。
  • 比例:日常编码约 30%~40% 由 AI 生成,集中在样板代码、单测、脚本、SQL;核心逻辑自己写。
  • 同事情况:团队里分化明显,年轻同事比例更高,老同事更多用在文档和排查上;我们内部做过一次分享推动统一用法。
  • 老业务:改存量代码时用 AI 先做「看懂」——让它解释一个 800 行的类在干什么,再动手改,效率提升最明显。
  • 准确性:AI 产出必须过三道关——人工逐行 review、补单测覆盖、灰度验证;涉及资金与权限的逻辑一律不用生成结果。

这套回答的价值在于:既承认用了,也说清了风险边界。

Q3 介绍一下你最近的一个项目!在这个项目中你负责的是哪部分?

项目经历 · 项目与职责

参考答案

主管面讲项目要「短、结果、边界清楚」。

  • 一句话说清项目是什么、服务谁。
  • 我负责的部分用「我做了 A,配合同事做了 B」表述,别把团队成果全揽。
  • 给一个结果:交付时间、线上指标、带来的业务收益。
  • 给一个反思:哪里可以做得更好。

主管最常见的追问是「这个项目里如果没有你会怎样」,提前想清楚自己的不可替代性在哪里。

Q4 项目组有多少人?你在项目中负责哪些模块?

项目经历 · 规模与分工

参考答案

人数与模块要和二面口径一致,两轮说法不一致是硬伤。

  • 人数:开发 6、测试 2、产品 1,分两个小组,我所在的组负责交易链路。
  • 模块:订单创建、库存扣减、对账补偿。
  • 补充协作方式:接口由我设计和评审,前端与上游按文档对接。
  • 如果记不清具体人数,说「核心开发 5~6 人」这种区间也可以,但别和前面报的数字冲突。

Q5 你印象比较深的一次业务做了多久?遇到了哪些问题?你是怎么解决的?

通用行为 · 项目复盘

参考答案

挑一个「时间长、坑多、最后成了」的项目,讲清节奏。

  • 周期:从立项到上线约 3 个月,其中联调占了近一半。
  • 问题:上游接口延迟交付、需求中途变更两次、历史数据格式不统一。
  • 解决:先用 Mock 解耦上游、把需求变更按影响面分级(影响排期的立刻升级)、写脚本做数据清洗并做双跑比对。
  • 结果:按期上线,上线后一周零 P1 故障。
  • 结尾补一句经验:长周期项目最怕的是「到最后才发现」,所以要在中途设置可验证的里程碑。

Q6 在你负责领导的业务中,你遇到过哪些人员配合上的问题?你的解决思路是什么?结果如何?

通用行为 · 协作冲突

参考答案

这类问题考的是「不激化矛盾还能推进」的能力,别讲成宫斗。

  • 问题举例:测试同学认为某需求不该这期上线,开发已经排了期,双方僵持。
  • 思路:先把分歧转成事实——列出该需求的风险点与不上线的影响,拉产品和测试一起做取舍,而不是私下较劲。
  • 动作:把结论写进会议纪要,明确谁在什么时间点做什么。
  • 结果:需求拆成两期,风险项延后,双方都不背锅。
  • 收尾给一句原则:对事不对人,把「谁对」换成「怎样代价最小」。

Q7 你感觉压力最大的一次项目业务是哪次?做了多久?

通用行为 · 压力应对

参考答案

选「时间紧 + 影响大 + 信息不全」的那次,讲清怎么活下来的。

  • 背景:大促前两周接手一个历史包袱重的模块,原负责人已离职。
  • 压力来源:代码不熟、没有文档、每天有新的线上问题。
  • 做法:先画调用链路与数据流,把「看不懂」变成「有清单」;再按影响面排序,只修会炸的;同时拉一个同事做备份。
  • 结果:大促期间该模块零故障,事后补了文档与监控。
  • 这类回答的重点不是「我很能扛」,而是「我在压力下依然有方法」。

Q8 在你的工作中,有遇到过特别难的技术吗?

项目经历 · 技术深度

参考答案

主管面问技术难点,其实想听「你怎么判断难、怎么找资源」。

  • 难点举例:跨库数据一致性,涉及三个服务与一个对账系统。
  • 判断过程:先定位不一致的根因是消息重复消费,还是本地事务与消息发送不同步。
  • 方案:本地消息表 + 定时补偿 + 对账兜底,三层防护。
  • 学习路径:查资料、看开源实现、找公司里的专家聊,最后自己写 PoC 验证。
  • 结尾一句「难的不是方案本身,是让所有人都按同一个约定实现」,把技术问题落到工程协同上。

Q9 在工作中你最开心或者说自豪的事情有吗?

通用行为 · 成就感

参考答案

选「你的工作被别人用到」的具体场景,比拿奖更有说服力。

  • 场景:自己写的对账补偿机制上线半年,拦下了 3 次资金不一致,业务方专门来道谢。
  • 或者:把团队的发布流程从手工改成流水线,发布耗时从 40 分钟降到 10 分钟,所有人都受益。
  • 讲清为什么自豪:不是技术多难,而是「解决了别人的麻烦」。
  • 回答时带一点具体的细节(哪次故障、谁的反馈),会比空泛的「很有成就感」真诚得多。

Q10 你还有什么想问的问题吗?

通用行为 · 反问

参考答案

主管面的反问决定「他想不想带你」,问成长与团队,别问福利。

  • 团队期待:这个岗位半年内最重要的一件事是什么。
  • 成长路径:团队里做得好的同事,通常是什么样的人。
  • 协作方式:跨部门协作多不多,遇到优先级冲突一般怎么定。
  • 一句收尾:说明自己能在哪个方向马上上手。

薪资、加班、转正这些留给 HR 环节。主管面聊得好,后面 HR 沟通的空间也更大。

注意事项

OD 面试的题目难度不高,失分大多发生在「认知」和「细节」上。下面几条按重要程度排。

01 OD 身份要提前想清楚

一面和主管面都会直接问「你知道我们是 OD 吧」。含糊、反问、或者只答「知道」都不够,要能说清合同主体、考核方式与转正路径,并给出自己的接受边界。

02 加班问题别只答「能」

空口承诺在主管眼里不可信。给出「项目期可以冲刺、希望有调休机制」的具体边界,再补一个自己在大促期间加班的真实例子。

03 两段离职原因必须口径一致

两段经历会被逐一追问,说法要和简历时间线对得上,也不能出现空窗期解释不清。避免「钱少」「领导不行」这类评价性表述。

04 项目规模要能量化

人数、模块数、表数量、jar 包大小、日请求量——被问「多大」时答不出具体数字,等于承认自己没真正参与。

05 AI 使用比例是必答题

主管面会连环追问「同事也这样吗」「怎么保证准确性」。准备一个「AI 生成 + 人工 review + 单测兜底 + 灰度验证」的闭环说法,并说清哪些场景坚决不用。

06 手撕环境是本地 IDE 共享屏幕写代码

提前清理无关文件和历史答案,关掉聊天窗口。别依赖模板与自动补全生成整段逻辑,否则讲不清。

07 机考题会被当场复盘

一面会挑一道做过的笔试题让你讲思路。保留自己的机考记录,复盘时先讲题意与约束,再讲优化点,别一上来报答案。

08 反问要问团队归属与转正口径

「进来之后在哪个产品线、汇报给谁、转正的名额与周期怎么算」这类问题,比问团队氛围更能体现你在认真考虑。

总结收尾

OD 的面试是个「筛稳定性 + 验真实性」的过程:技术题不难,但每一个数字、每一段经历都会被来回核对。准备的重点不是多刷题,而是把自己的 4 年经验整理成可验证的事实——项目多大、你负责哪块、改了什么、指标变化多少。对 OD 身份要有清醒认知并能坦然表达,这往往比技术答得好更能决定结果。14 天走完流程、拿到 21k 的结果说明:只要口径一致、项目讲得实,OD 通道的效率其实很高。

以上内容整理自学员和应届同学反馈的真实面经,结合华为技术有限公司的最新考情整理,仅供参考学习。祝各位求职者顺利拿到心仪 offer!

看完面经后,回到自己的简历做一轮准备

用 HI简历整理项目经历、提炼可追问亮点,再按面经高频问题准备对应回答。

免费开始写简历

常见问题

华为OD Java社招面试有几轮?

共3轮:技术一面以八股和机考复盘为主,技术二面纯项目深挖加一道算法,主管面重点问AI工具使用比例、项目协调与稳定性。

华为OD面试会问AI工具使用吗?

会。主管面会连环追问AI使用比例、同事是否也这样、如何保证准确性,建议准备AI生成加人工review加单测兜底加灰度验证的闭环说法。

华为OD岗位值得去吗?

OD由服务商签约,日常管理与考核贴近正式员工,绩效优秀且满足名额条件后有机会转正,适合想进入大体量系统、接触高并发与规范化流程的候选人。