华为 · OD

Java 开发一面、二面面经

完整信息

37 条问法 · 37 道题

本篇目录

个人情况

双非硕,研三才开始系统准备Java后端开发,之前主要做C++相关课题。秋招投递较晚,加上项目经验偏科研,只拿到几家中小厂offer,薪资和发展空间不理想。了解到华为OD对学历和技术成长比较友好,决定全力冲刺。

机考:380分通过

题目回忆:

• 匹配命令行前缀关键字(模拟)

• 物流仓库货物调货优化(并查集)

• 寻找重复子数据(DFS)

备考建议:刷题库里的高频题,重点掌握常见数据结构的应用,不用追求难题,中等难度足够。

hr面

视频面试,约15分钟。先自我介绍,然后问:• 为什么选择华为OD而不是其他公司?

• 研究生课题和Java开发关系不大,怎么补上来的?

• 项目里遇到过哪些协作上的困难?怎么解决的?

• 期望薪资是多少?对工作地点和加班怎么看?

• 有没有其他offer,为什么还没签?

整体氛围轻松,主要是确认稳定性和意愿度。

技术面
技术一面时长约1小时。

• 自我介绍后,让我详细讲一个自己最熟悉的项目(微服务电商后台)。

• 问了项目架构、数据库表设计、Redis缓存策略、接口幂等性怎么实现。

• 穿插八股:Spring Boot自动配置原理、MyBatis一级二级缓存区别、HashMap线程安全问题。

• 手撕代码:实现一个简易版的LRU缓存(LeetCode 146),要求写出get和put方法,并分析时间复杂度和优化思路。

• 全程1小时,代码写了20分钟,其余时间都在聊项目和扩展。

技术二面时长约40分钟。

• 上来先手撕一道力扣原题:合并两个有序链表(递归+迭代两种写法),5分钟搞定。

• 然后让我介绍另一个项目(RPC框架),问:注册中心选型为什么用Zookeeper?序列化方式对比?如何保证服务调用超时处理?

• 八股:JVM内存区域划分、垃圾回收算法、线程池参数含义及拒绝策略。

• 最后反问环节,我问了团队技术栈和新人培养机制。

综面

时长35分钟,压力感较强。• 一上来就问项目中的最大挑战,我讲了分布式事务一致性问题,面试官连续追问了3个场景:如果TCC第二阶段失败怎么办?如何保证幂等?有没有考虑过Seata AT模式的优缺点?

• 接着问毕业设计(基于深度学习的推荐系统),让我解释特征工程怎么做,冷启动问题怎么解决,和传统协同过滤的区别。

• 然后转向综合素质:

• 研究生期间最让你挫败的一件事?怎么走出来的?

• 如果导师安排的任务和你自己的求职计划冲突,你怎么平衡?

• 如果同事把责任推给你,你怎么处理?

• 压力大的时候有什么排解方式?

• 全程几乎没有闲聊,每个回答都会被深挖,建议提前演练多轮追问的场景。

个人心得
  1. 机考:刷题不在多在精,重点练熟数组、链表、树、哈希、动态规划的常见题型。hr给的题库覆盖够用,建议每道题至少自己敲一遍,不要只看思路。
  2. 技术面:项目是核心。无论是不是商业项目,都要能讲清楚:项目背景、你的角色、技术选型原因、遇到的难点及解决方案。八股不用死记硬背,但常见知识点(Spring、JVM、MySQL、Redis、并发)要能说清原理。
  3. hr面和综面:这两面看似聊天,实则在考察逻辑表达、抗压能力和价值观匹配。建议提前梳理:

• 一个完整的项目故事(痛点→方案→结果)

• 一个真实的挫折/成就事件(STAR法则)

• 对自己职业规划的清晰认知

• 对加班、任务冲突等实际问题的成熟态度

心态:华为OD面试整体节奏快、流程紧凑,但面试官普遍专业且尊重候选人。只要基础扎实、项目准备充分、表达清晰,通过率很高。加油!
本篇目录
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
  6. 06
  7. 07
  8. 08
  9. 09
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
    实现一个简易版的LRU缓存(LeetCode 146),要求写出get和put方法,并分析时间复杂度和优化思路。
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
    接着问毕业设计(基于深度学习的推荐系统),让我解释特征工程怎么做,冷启动问题怎么解决,和传统协同过滤的区别。
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37

同作者面经

相关公司