小红书 AI应用开发 一面

1. 如果知识库原始数据不是 markdown,而是 PDF、PPT、图片或者网页,你会怎么处理进 RAG 系统?

PDF 和 PPT 会提取标题、段落、表格和页码,图片先做 OCR,网页先抽正文和元信息,然后统一清洗噪声、去掉页眉页脚、按语义做切片,补上来源、时间、文档层级这些元数据,最后再做 embedding 和索引。这样后面的召回、溯源和权限控制都更稳定。

public List<Chunk> buildChunks(Document doc) {
    List<Block> blocks = parser.parse(doc);
    List<Block> cleaned = cleaner.clean(blocks);
    return splitter.split(cleaned);
}

2. 在 RAG 检索过程中,常用的检索机制有哪些?

常见的是关键词检索、向量检索和混合检索。关键词检索适合专业术语和精确匹配,向量检索适合语义相近但表达不同的问题,混合检索通常更稳,因为它能同时覆盖字面匹配和语义匹配。线上一般不会只走一条召回链路,而是多路召回后再统一重排。

3. RAG 评价指标一般怎么设计?

通常会拆成检索侧和生成侧。检索侧会看 Recall@K、MRR、NDCG 这些指标,判断真正相关的片段有没有被召回;生成侧会看答案相关性、忠实度和上下文利用率,判断模型是不是基于检索内容在回答,而不是自己编。只看用户觉得“像不像对的”不够,因为模型有时候会说得很顺,但依据不对。

4. 为什么很多场景会优先选 RAG,而不是直接微调大模型?

因为业务知识更新很快,直接微调的成本高、周期长,而且知识一变就要重新训练。RAG 更适合接私域知识,更新快,也更容易做引用和溯源。微调更适合调整模型风格、任务习惯和领域能力上限,但不适合承担频繁更新的事实知识。真正线上很多时候是 RAG 和微调一起用,不是二选一。

5. MCP 和 Function Call 的区别是什么?

Function Call 更像是模型在当前对话里按约定好的 schema 去调用某个工具,重点是“调哪个函数”。MCP 更偏协议层,它不只是描述函数,还会描述资源、能力和上下文暴露方式,本质上是在做标准化接入。简单理解,Function Call 是工具调用能力,MCP 是让模型接外部系统时更统一的一套协议。

6. 为什么 AI 应用里经常需要做两级缓存?

因为 AI 应用的很多链路成本高、延迟高,比如 embedding、检索、重排、生成。两级缓存一般是本地缓存加 Redis,本地缓存解决进程内热点访问,Redis 解决多实例共享。这样可以减少重复 embedding、重复召回和重复生成,既能降成本,也能稳住 RT。设计时要注意缓存穿透、热点 key 和版本失效问题。

public String queryWithCache(String key, Supplier<String> loader) {
    String v = localCache.getIfPresent(key);
    if (v != null) return v;

    v = redisTemplate.opsForValue().get(key);
    if (v != null) {
        localCache.put(key, v);
        return v;
    }

    v = loader.get();
    redisTemplate.opsForValue().set(key, v, Duration.ofMinutes(10));
    localCache.put(key, v);
    return v;
}

7. 如果要做一个智能客服类 AI 应用,整体链路怎么设计?

一般会先做问题分类,区分 FAQ、知识问答、工具调用和人工转接。简单固定问题走模板回复,知识类问题走 RAG,查订单、查物流、查账户这类走工具调用,高风险或低置信度问题直接转人工。核心链路要有会话管理、权限校验、敏感词过滤、日志追踪和效果评估,不然上线后很难控风险。

8. 为什么有些场景会选 PGVector,而不是直接用 ES 做向量检索?

如果业务本身就在 PostgreSQL 上,数据规模也没有大到必须拆专门的检索集群,那 PGVector 的接入和运维成本会低很多,结构化数据和向量数据能放在一起管理,事务和权限也更容易统一。ES 也能做向量检索,但它更强的地方还是全文检索和分布式搜索。如果场景是文本搜索加语义检索混合很重,ES 会更有优势;如果更偏业务数据绑定和快速落地,PGVector 反而更顺手。

9. MySQL 和 Elasticsearch 的区别是什么,AI 应用里怎么分工?

MySQL 更适合事务型、关系型、强一致的主业务数据,Elasticsearch 更适合全文检索、模糊匹配和聚合分析。AI 应用里一般是 MySQL 存用户、配置、权限、任务记录,ES 用来做文本搜索、内容检索和日志分析。两者不是替代关系,更多是主存储和搜索层分工。

10. 为什么 Elasticsearch 要使用倒排索引,而不是顺序扫描?

因为全文检索的数据量通常很大,如果每次查询都顺序扫所有文档,代价太高。倒排索引是先建立“词 -> 文档”的映射,查询时直接定位命中文档,再做过滤和打分。这样无论是关键词查询、短语匹配还是多条件组合搜索,效率都会比顺序扫描高很多。

11. Spring 框架里常用的注解有哪些?

常用的有 @Component@Service@Repository@Controller@RestC

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论

相关推荐

03-30 19:52
已编辑
Northeastern University golang
上周三面字节,&nbsp;拷打30分钟做题是面试官原创,基于实习内容的编程原创题。&nbsp;比较两个json&nbsp;obj的区别,写出全部区别。因为不知道json在python环境下转换成字典没写出来。面试官表示这题写上就过写不上就死。我因为以前没注意过这个可以转换成字典,不知道怎么遍历&nbsp;也就没法写出递归。讨论:&nbsp;你觉得我在美国&nbsp;金钱有限&nbsp;时间有限&nbsp;怎么拿到最好的结果?答:&nbsp;你基础弱&nbsp;你要面试起码把八股背了&nbsp;问你agent&nbsp;loop你要面试你起码知道是什么?(岗位是后端)你代码也看不懂?&nbsp;(em&nbsp;我是语法不会&nbsp;比如我不知道这个函数干什么的&nbsp;我就不认识…&nbsp;)&nbsp;多投简历多去面试,想进我们公司呢&nbsp;吧啦吧啦吧啦&nbsp;再练一下语言表达没事看看anthropic的官网文档。你进了就进了&nbsp;新人三个月landing怎么都会了&nbsp;工作了还有其他指标要看。面试官给我感觉好像不了解美国生态一样,9本在美国捞不到几个面试…&nbsp;他以为我们投了就有,实际上半年来我只有四五个,算上字节每个公司考的都不一样。虽然说他说的很难听不过还是算了…&nbsp;怪我看不懂代码我也没话说。最近火气挺大的,前几天有个几年前上岸的大婶非给我科普什么fifo和lifo,怎么我是不认识先进先出的队列和后进先出的栈吗?&nbsp;你当初进去考的什么和我面试能一样么
查看3道真题和解析
点赞 评论 收藏
分享
03-27 15:16
门头沟学院 Java
斗胆起一个逆袭的标题吧,因为对鼠鼠来讲已经算是我的顶了回想去年的这个时候,还在焦虑毕业能不能找到月薪8k的工作,觉得8k已经是我的天了,到两段实习后又自信满满秋招觉得至少12k,然后却被秋招狠狠扇了一巴掌,秋招只有零星几个面试,最后也还好被数马收留,虽然只有8k(,但也不至于落0,然后用数马boxing成蚂蚁,找到现在这家,拿到年包25w。最开始的阶段是最痛苦的阶段,就是大三的时候没有实习的焦虑,身上两座大山,一座叫暑期,一座叫没有实习秋招你就完了,那个时候啥也不会,redis都不知道是啥,这个时候是真觉得天都塌了,这时候还问过导师,学校严令禁止实习,那段时间压力崩溃到,偷偷在床上掉小珍珠。这段时间天天上别人直播间问双非学院本,0实习还有救吗,这个在我之前帖子也能看到,那个时间还发牛客帖子问,但是看到好多佬也是直接泼凉水建议转行,最后还是猫✌️和k哥,给我两巴掌扇醒,不要陷入到虚无主义中,要先行动起来,我印象很深刻的一句话就是&nbsp;如果你想听我跟你说有希望,那就是有希望,你现在就赶紧干去吧。焦虑随着我找到第一份小厂实习消散许多,虽然这个实习mt有点压力我,但是其实mt还不错,但是主管疯狂pua是真cs,要你10点后还干的那种(这段小厂实习也结束的比较快,在这种压力和pua的环境下心态的成长还是很快的,抗压能力增强不少,技术也就是crud熟练了(有一段实习去参加暑期后,就开始来一股莫名得自信,觉得能有不错的offer,整个暑期阶段也是只有0星几个面试,最后也只有一个上海小厂offer和万达,最搞的是,万达一直没消息,小厂那个已经一拖再拖了,结果最后时刻,踏上了上海的火车在车上告诉我,oc了,当时我心里只有&nbsp;法法法,也是在上海小玩几天,也是人生第一次飞机,从上海飞到成都。其实这段实习也是水的一笔,代码就是crud,这是国企控资的,业务啥的特别轻松,甚至打卡只需要,搞个模拟器,搞个虚拟定位就打了,最搞的是学校要搞期末考试,回去了两周,然后这两周居然给我发了2000。接下来就是秋招重头戏了,手握两段实习,一小一中,我觉得不乱杀也得起码有12k左右的吧,但是事实是,面都约不到,只有躺在床上反反复复的焦虑,跟暑期实习投的时候一个状态,初期觉得随意拿捏,中期觉得还得坚持,末期只有一个大写的寄,整个秋招只有负反馈,零星几个面试,小厂水面,还有个就是水滴的子公司,还有就是数马了,也是蛮感谢数马收留的,获得了boxing成大厂title的机会最后也是拿蚂蚁的title,春招刚开不久就拿到了这个offer,有一说一,面试强度是真不低,说是小厂,但是这个面试官的专业程度不像小厂的,现在也不准备面其他的了,好好休息两周了,论文还一字未写也特别感谢下猫✌️,k哥,沟槽的贯一,答案✌️,贯一和答案✌️帮我做模拟面和人生方向指导,简直就是灯塔。其实纵观我整个过程,没有特别亮点,也没啥特别深的技术深度,只算是混了混资历,但是坚持二字也是贯彻始终,接下来就是蛰伏了,虽然沟槽的贯一喜欢串我但是不得不说,在秋招,春招阶段,也是给我灌不少鸡汤总结一下,xdm,坚持是最重要的,其次就是要学会演戏,反正对面也对你不知根知底,别怕,先把自己骗了,连我这样的都能有offer,牛爷爷们加一点点的运气就能随意拿捏了,祝大家都找到心仪的offer!
头顶尖尖的程序员:数马包装蚂蚁,不会被看出来吗
春招至今,你的战绩如何?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务