华为OD Java面经(目标院校科班硕士)

华为OD · Java开发工程师 · 技术一面/二面 · 2026-05

《面试题目》

  1. 机考:字符串题、动态规划题、DFS题(全部AC)
  2. HR面:自我介绍、离职原因、为什么考虑来面试的城市发展、目前薪酬及期望薪酬、对加班的看法、平时爱好、对OD的了解
  3. 技术一面:手撕代码(LeetCode 640,求解方程)
  4. 微服务开发框架的实际应用与区别,使用了哪些中间件?
  5. Kafka 的分区策略是怎样的?
  6. 如何进行 SQL 调优?
  7. 单元测试的使用场景和工具有哪些?
  8. 技术二面:手撕代码(LeetCode 114,二叉树展开为链表)及机考复盘
  9. Docker 相关八股

《参考解析》

  1. Kafka 分区策略:生产者发送消息时,若指定了 key,默认按 key 的 hash 值对分区数取模决定发往哪个分区(保证同一 key 的消息始终落在同一分区,从而保证分区内有序);若未指定 key,则采用轮询(Round Robin)或黏性分区(Sticky Partitioning)策略均匀分发,消费者端则通过消费者组内的分区分配策略(Range、RoundRobin、Sticky)决定每个消费者负责哪些分区。
  2. SQL 调优的常见手段:优先看执行计划(EXPLAIN)判断是否走了合适的索引;避免 SELECT *,只查询需要的字段减少 IO;对大表分页用游标分页代替 OFFSET 深分页;对于聚合、多表关联的复杂查询,考虑用小表驱动大表、拆分查询后应用层合并,或引入汇总表/物化视图做预计算。
  3. LeetCode 114 二叉树展开为链表:可以用后序遍历(先处理右子树、再左子树、最后根节点)的思路,用一个 prev 指针记录上一个处理完的节点,把当前节点的 right 指向 prev、left 置空,再更新 prev 为当前节点,这样只需一次遍历、O(1) 额外空间(不含递归栈)即可完成原地展开。