华为

通用软件开发一面、二面面经

完整信息

40 条问法 · 41 道题

本篇目录

两轮都从简历和项目开始。一面更关注 AI Agent、RAG、工程实践和个人产出;二面主要考 Java 后端基础,包括 MySQL、Spring、Redis、消息队列和并发。

一面

1. 先做一下自我介绍,讲讲实习经历、项目背景和个人负责的内容。

2. 你的研究方向是什么?为什么开始关注 AI Agent 和大模型应用?

3. 你对 AI 应用开发了解多少?做过哪些实际项目?

4. 介绍一下 RAG 的完整流程,离线建库和在线查询分别做什么?

5. 你亲自搭过 RAG 系统吗?文档解析、切块、Embedding、检索和生成分别是怎么实现的?

6. 项目是基于 LangChain 等框架搭建的,还是自己实现了主要链路?为什么这样选?

7. RAG 目前支持哪些文件类型?上传、下载和解析模块是不是你负责的?

8. 文件上传下载的调用量大概有多少?高并发和大文件场景怎么处理?

9. 这段实习持续了五个月,除了文件和 RAG 链路,还做过哪些工作?

10. 你在项目里使用了哪些 Agent 或 Coding Agent?它们具体帮你完成了什么?

11. 为什么不直接采购成熟的大模型服务,而要自己搭建应用层和 Agent 流程?

12. 你怎么理解 Agent?它和普通 Chatbot、固定 Workflow 有什么区别?

13. 你提到 OpenClaw 和 Hermes Agent,有没有真正读过源码?哪些设计让你印象比较深?

14. 平时看代码主要靠自己分析,还是会让 AI 辅助?你怎么验证 AI 给出的结论?

15. 你现在用 Claude Code 做什么?通常怎么拆任务和控制上下文?

16. 介绍一下论文或研究项目的创新点。你用哪些指标评价效果,这些指标具体怎么计算?

17. 你怎么评价自己的工程能力?能不能举一个独立解决问题的例子?

18. 你做过文件分片上传和断点续传吗?如何记录分片状态、校验完整性并合并文件?

19. 写完断点续传后有没有补测试?如何覆盖重复分片、缺失分片、乱序上传和校验失败?

20. 你怎么理解 TDD?项目里有没有真正使用过?

21. 说三个你比较突出的优点,并分别举一个具体例子。

22. 你觉得自己目前最需要补的能力是什么?

23. 这段实习对你最大的帮助是什么?开始实习前的预期达到了吗?

24. 手撕代码:实现一个简化的分片上传管理器,支持初始化上传任务、记录分片、查询缺失分片以及判断文件是否可以合并,同时处理重复上传。

25. 反问。

二面

1. 自我介绍,并选择一个后端项目讲清楚业务背景、技术架构和个人贡献。

2. 多个请求同时修改 MySQL 中的同一条数据时,可能出现哪些问题?

3. MySQL 如何通过事务、隔离级别和锁解决并发修改问题?

4. 给定几个联合索引和查询语句,判断是否会走索引,并说明原因。

5. 联合索引的最左匹配原则是什么?范围查询为什么可能影响后续字段?

6. 常见的并发控制方式有哪些?乐观锁和悲观锁分别适合什么场景?

7. `synchronized` 和 `Lock` 有什么区别?项目里会怎么选?

8. Spring 的核心功能有哪些?介绍一下 IoC 和 AOP。

9. 手动 `new` 出来的对象能不能交给 Spring 管理?如果需要,应该怎么做?

10. Spring Bean 有哪些注入方式?构造器注入和字段注入各有什么特点?

11. Redis 能不能当消息队列使用?如果可以,为什么项目里还会选择 RabbitMQ?

12. Redis Stream、Pub/Sub 和 RabbitMQ 在可靠性、确认机制和消息持久化方面有什么区别?

13. 使用过双向链表吗?它和单向链表在插入、删除和内存占用方面有什么区别?

14. 项目中遇到过内存问题吗?当时怎么排查,用了哪些工具?

15. 了解 Java 虚拟线程和协程吗?两者解决的问题有什么不同?

16. 线程池、虚拟线程和异步编程应该怎么选?

17. 打开笔试代码,重新讲一遍当时的思路、复杂度和边界处理。

18. 手撕代码:给定一个长度为 `n` 的数组,每当出现连续 `m` 个相同数字时,就把这 `m` 个数字替换成它们的和。替换产生的新数字可以继续参与合并,直到不存在连续 `m` 个相同数字,最后输出剩余数组。要求使用栈维护 `(数值, 连续次数)`。

19. 反问。

本篇目录
  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
    14\. 平时看代码主要靠自己分析,还是会让 AI 辅助?你怎么验证 AI 给出的结论?
  15. 15
  16. 16
    16\. 介绍一下论文或研究项目的创新点。你用哪些指标评价效果,这些指标具体怎么计算?
  17. 17
  18. 18
    18\. 你做过文件分片上传和断点续传吗?如何记录分片状态、校验完整性并合并文件?
  19. 19
    19\. 写完断点续传后有没有补测试?如何覆盖重复分片、缺失分片、乱序上传和校验失败?
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
    24\. 手撕代码:实现一个简化的分片上传管理器,支持初始化上传任务、记录分片、查询缺失分片以及判断文件是否可以合并,同时处理重复上传。
  25. 25
  26. 26
  27. 27
  28. 28
    5\. 联合索引的最左匹配原则是什么?范围查询为什么可能影响后续字段?
  29. 29
    6\. 常见的并发控制方式有哪些?乐观锁和悲观锁分别适合什么场景?
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
    18\. 手撕代码:给定一个长度为 \`n\` 的数组,每当出现连续 \`m\` 个相同数字时,就把这 \`m\` 个数字替换成它们的和。替换产生的新数字可以继续参与合并,直到不存在连续 \`m\` 个相同数字,最后输出剩余数组。要求使用栈维护 \`(数值, 连续次数)\`。

同作者面经

相关公司