面灵AI→

华为通用软件开发一至三面:Agent 项目、AI Coding 与文化面

轮次
一面
时间
2026-09
来源
牛客网

《面试题目》

  1. 拷打实习的具体情况:做了什么,怎么做的?
  2. 你的 Agent 项目架构是怎样的?
  3. 你的 Agent 和现在的 Agent 有什么区别?
  4. 多模式 Agent 引擎是怎么做的?举例说明。
  5. 记忆系统是怎么做的?
  6. 针对他看出来的项目缺陷进行提问。
  7. Java 熟悉吗?多线程同步的 Java 容器有哪些?
  8. 怎么设计一个多线程 ID 发布器?
  9. 手撕:不超过 k 种字符类型的最长连续子段。
  10. 二面 AI Coding:实现一个 RAG 的双路检索。
  11. 你平时怎么用 AI?如何保证准确性?
  12. 自我介绍、实习情况、个人情况。
  13. 你对华为了解多少?华为文化了解吗?
  14. 能否接受加班?对工作地有什么要求?

《参考解析》

多线程安全的容器:分三类记。① 早期同步容器 Vector、Hashtable、Collections.synchronizedXxx——每个方法加 synchronized,串行化严重,复合操作(先检查再插入)仍不安全。② 并发容器 ConcurrentHashMap(JDK8 起用 CAS + synchronized 锁桶头 + 红黑树)、CopyOnWriteArrayList(写时复制,适合读多写极少)、ConcurrentLinkedQueue。③ 阻塞队列 ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue、SynchronousQueue,是线程池的任务队列基础。选型看读写比和是否需要阻塞语义。

多线程 ID 发布器:核心诉求是「不重不丢、有序、高并发下无锁竞争」。常见方案:① AtomicLong 的 incrementAndGet(),无锁 CAS,单机够用;高竞争下可用 LongAdder 做统计但不能保证连续序号。② 分段发号——内存里按步长批量领取号段(如每次取 1000 个)缓存,用完再取下一段,把数据库压力降到 1/1000;代价是重启会浪费一段(可用「当前最大值」记录兜底)。③ 严格全局有序且跨节点时,用雪花算法(时间戳 + 机器 ID + 序列号)或独立的发号服务(数据库自增步长 / Redis INCR / Leaf)。④ 发布场景常要求「ID 单调递增且可读」,可用「时间戳 + 业务前缀」避免纯自增暴露业务量。

不超过 K 种字符的最长连续子段:滑动窗口模板题。右指针扩张并把字符计数加入窗口 map,当窗口内不同字符数超过 K 时,左指针收缩并同步减少计数,直到不同字符数回到 K 以内;每一步用窗口长度更新答案。时间复杂度 O(n)(每个字符最多进出窗口各一次),空间 O(K)。注意 K 为 0 或字符串为空时的边界返回 0,另外要确认题目问的是「最多 K 种」而不是「恰好 K 种」。

Agent 项目的讲法:面试官通常会从「和现有 Agent 产品有什么区别」切进来,回答要给出一句可比较的定义,再展开三个支撑点——多模式引擎(不同任务走不同推理模式,如 ReAct 与 Plan-and-Execute 按任务类型路由)、记忆系统(短期/长期分层 + 压缩与召回策略)、以及可观测与评测(执行记录、指标口径)。说自己项目缺陷时不要回避,主动说出已知短板与下一步计划,比等面试官挑出来更好。

AI Coding 环节:RAG 双路检索的意思是「关键词检索 + 向量检索并行召回再融合」。作答时要说清三件事:两路各自解决什么(关键词保精确匹配、向量保语义泛化)、分数怎么融合(RRF 按排名融合,避免量纲不一致)、以及如何验证(准备一组覆盖精确/同义/无答案的查询做对比)。同时主动交代工程细节——召回结果去重、重排序、上下文装配与截断、以及权限与时间范围的过滤下推。