面灵AI

海口Java后端小厂面经(AI项目方向)

轮次
一面
base
海南
时间
2026-06
来源
牛客网

《面试题目》

  1. 介绍一下自己。
  2. 讲一下你的第一个项目(AI 类)。
  3. 项目中的会话记忆是怎么实现的,最多存几轮对话?
  4. 会话记忆怎么存储,存到哪里?是数据库吗?
  5. 你的 RAG 部分功能怎么实现的,怎么切分知识片段?
  6. 怎么让 RAG 部分将知识片段切分得更细?
  7. 如果写了提示词和做了 RAG,AI 还是会出现幻觉该怎么解决?
  8. 第二个点评类项目介绍一下。
  9. 项目中写到了一系列压测数据,这是真实的吗,怎么测出来的?
  10. 讲一下做 AI 项目遇到的最大的难题是什么,怎么解决的?
  11. 算法:左右括号匹配问题(LeetCode hot100 原题)。
  12. MySQL 增删改查怎么做,聚合函数?
  13. Linux 基础命令有哪些?
  14. Docker 知不知道,常用 Docker 来干嘛?

《参考解析》

1. AI 项目会话记忆的实现与存储

会话记忆通常分短期与长期两层:短期记忆直接维护在内存(如 Redis 或进程内缓存)中,以 sessionId 为 key 存储最近 N 轮对话(受限于模型上下文窗口,超出部分做摘要压缩或滑动窗口丢弃);长期记忆才需要落库(MySQL/向量数据库),用于跨会话的用户画像或历史检索。存到内存而非数据库的原因是对话上下文读写频繁、对延迟敏感,数据库 IO 开销不适合每轮对话都读写。

2. RAG 知识片段切分

常见切分策略:按固定 token 数滑动窗口切分(简单但可能切断语义)、按语义边界(标题/段落)递归切分、结合重叠窗口(overlap)保留上下文连续性。要切得更细,可以减小 chunk size、增加 overlap 比例,或引入二级切分(先按章节粗切,再按句子细切),但切得过细会丢失语义完整性,需要在召回精度和上下文完整性之间权衡,通常配合检索时的 chunk 合并/相邻片段拼接来补偿。

3. RAG + 提示词后仍出现幻觉的解决思路

可从几个层面优化:① 提高检索质量(更好的 embedding 模型、混合检索 BM25+向量、重排序 rerank);② Prompt 层面明确要求「仅根据提供的资料回答,资料中没有则回答不知道」;③ 引入答案校验环节,将生成答案与检索片段做一致性比对(如 NLI 模型或二次 LLM 校验);④ 控制生成温度(降低 temperature)减少模型自由发挥;⑤ 必要时加引用溯源,让用户可验证答案出处。

4. 算法:括号匹配问题

经典思路是用栈:遍历字符串,遇到左括号入栈,遇到右括号则检查栈顶是否为对应的左括号,匹配则出栈,不匹配或栈为空则直接返回 false;遍历结束后栈为空才算完全匹配。时间复杂度 O(n),空间复杂度 O(n)。