面灵AI

华为 OD Java 面经:设计模式、工具权限与 RAG 分块

轮次
多轮面试
base
上海
时间
2026-09
来源
牛客网

《面试题目》

  1. 能否介绍一下自己,对这个岗位是否感兴趣?
  2. 最近的实习在做什么,个人职业规划是什么?
  3. 什么时候开始找工作,此前没有开始的原因是什么?
  4. 什么时候开始学习 Java,大四期间是否找过工作,平时是否刷题?
  5. 是否为独生子女?
  6. 项目中的 push-server 是怎样设计和工作的?
  7. 工厂模式、模板方法模式和策略模式分别用在项目的什么地方?
  8. Agent 业务中遇到过哪些难点,如何解决?
  9. 工具调用有没有遇到权限问题,如何处理?
  10. 如何将一个 n×n 矩阵原地顺时针旋转 90 度?
  11. Spring IoC 是什么?
  12. TCP 为什么需要三次握手?
  13. 给定一个字符串数组,如何调整拼接顺序,使结果最大?
  14. 项目采用了哪些技术栈和设计模式,你有哪些收获?
  15. 在项目或开发过程中怎样使用模型能力,Agent 的模型与执行框架各承担什么职责?
  16. RAG 文档如何分块,怎样评估分块效果?

《参考解析》

三种设计模式可以沿着一次请求讲

以推送业务为例:工厂根据渠道创建或选出发送器,策略封装短信、邮件等不同发送方式,模板方法固定校验、发送、记录结果的骨架,把可变步骤交给具体实现。回答时应换成自己项目中的真实类和调用关系,并说清为什么需要这些变化点。只有一个实现、没有变化需求时,也要能解释为什么没有直接写成普通方法。

工具权限由执行端检查

模型生成的工具名和参数只是调用请求。执行端仍需确认当前用户是谁、能访问哪些资源、参数是否有效,再进行实际操作。权限错误要把可理解的失败原因返回给调用方;涉及写入的操作还要处理重复调用,避免网络重试导致同一动作执行两次。

旋转矩阵先转置,再反转每行

原地交换主对角线两侧的元素,随后将每一行逆序,就得到顺时针旋转 90 度的结果。两步都只需常数额外空间,时间复杂度为 O(n²)。转置时只遍历对角线一侧,否则每对元素会被交换两次。这里按原帖明确提到的《旋转图像》题意说明。

字符串拼接需要先确认比较规则

若数组元素是非负整数的十进制表示,且目标是拼出最大的数,可以比较 a+bb+a,把拼接结果较大的顺序排在前面;最终若全是零,输出一个零即可。原帖特别说明实际题目只是类似“最大数”,没有保留完整约束,因此这个解法仅适用于上述条件。含字母、负号或有其他排序要求时,应先确认题意。

RAG 分块看能否找回完整依据

先准备带参考出处的问题,观察检索结果是否覆盖回答所需的段落,再比较不同块大小、重叠长度和按标题分段的方案。块太小可能丢失指代、表头或前提,块太大则可能把无关内容带进上下文。检索命中以后,还要检查答案是否正确引用依据;检索没找到与模型读错,是两类问题。