搜狐畅游

AI 算法实习生一面面经

完整信息

49 条问法 · 41 道题

本篇目录

ai算法实习生

2026.03.04,下午14:00,一面,线上,1h左右,都开摄像头了

1.自我介绍

2.多策略微调这个项目是什么类型的?

在 910B3 服务器上微调Qwen-3-8B 模型,使用全量微调、lora 微调和 freeze 微调三个策略做对比,是自己为了学习模型微调自主开展的项目。

3.这个项目最终成果和目的是什么?

目的是提升模型在中文语义理解方面的能力,最终用中文逻辑推理、中文语理解、知识相关三个数据集完成了测试。

4.可以举例说一下中文语言理解的实现过程吗?

选用中文逻辑推理、中文语理解、知识方面的三个数据集,基于Qwen-3-8B 模型用三种微调策略训练后,用这三个数据集对模型进行中文语义理解能力的测试。

5.这三类微调是用的怎样一个框架来做的呢?

使用的是 LLaMafactory 框架。

6.全量微调、lora 微调、freeze 微调三者有什么差别?

全量微调是对预训练大模型的所有参数进行更新;freeze 微调是冻结模型的最后两层,微调其他层的参数;Lora 微调是引入两个低秩矩阵,训练时只微调这两个矩阵,推理时将其与原始权重矩阵合并。

7.这三种微调方法一般怎么用,在什么时候用哪一种?

时间紧凑时用 Lora 微调,因为其速度是三者中最快的;想要较好的训练效果用全量微调,理论上其效果更好,但训练速度相对较慢。

8.Qwen-3-8B 模型的结构有了解吗?

千问系列模型使用 GQA 分组查询注意力机制,千问 3 增加了深度思考模式和 QKnome,不过 QKnome 的具体作用记不清了。

9.8B 和 235B 模型有什么区别,参数量大小是怎么做到不一样的?

核心区别是参数量,8B 参数量少,235B 参数量大;参数量不同的原因是 235B 的训练数据集更大、训练轮数更多、模型层数也更多,不过没有仔细了解过具体原理。

10.实习的两个项目是怎么和同事协作的,是自己负责一块吗?

是自己独立负责其中一块工作。

11.第一个实习项目(自然语言分析查询系统)的具体任务是什么?

给客户开发本地化的自然语言分析查询系统,用户上传 Excel 或 CSV 文件,系统能自动识别表格内容,完成销售额总额等数值计算,也能实现部分数据可视化。

12.如果指定具体指标,要最近 12 个月每个月的求和、平均值等计算,该怎么实现?

调用本地化部署的Qwen3-Coder-30B-A3B模型,让模型在内部编写 SQL 或 Python 数字计算类代码,在本地完成计算后将结果返回给用户,绘制图表时模型会编写 matplotlib 代码实现。

13.有没有考虑过用户上传脏数据的数据清洗问题,具体怎么做到的?

首先用 Pandas 读取表格转化为 DataFrame,让系统自行判断缺失数据,将缺失数据的整行删除;对于异常值,若某一行要求是数值类型却出现非数值内容,就判定为异常值并做相应处理。

14.是否可以设计 agent 系统让大模型自己做各类数据清洗?

可行,可以借助另一个大模型先分析表格结构,判断异常值位置,再通过提示词引导大模型完成数据清洗。

15.第二个实习项目(机场 RAG 智能问答客服)为什么针对机场,是不是客服系统?

因为系统使用的是机场的航班类数据,本质是 RAG 智能问答客服系统,所以被称作机场系统。

16.为什么写的是多模态 RG,数据是多模态的吗?

数据本身不是多模态的,但系统要实现图文问答和语音问答的多模态交互功能。

17.可以举例说明这个 RAG 智能问答客服的输入、查询和输出过程吗?

输入比如 “某年某月从长沙到某地方的航班有哪些”,系统数据库存储有机场航站楼、航班、机场巴士时刻等信息,最终输出会根据用户输入的问题返回对应的答案。

18.在 RAG 向量数据库管理中是怎么做索引的?

使用 postgresql 里的 PGvactor 插件实现数据向量化并存储,检索时采用混合检索策略,将 BM25 算法的关键词检索和余弦相似度的语义检索结合。

19.PDF 文档是怎么变成向量的,几十页的长文档也能直接转吗?

先读取文档,长文档会先做文本分块,用 python 自带的 recursive text split ,按固定长度 1000、重叠 100 分块;再用Qwen-3-Embedding-8B 模型将分块后的文本转化为嵌入向量,存入向量数据库。

20.混合检索后为什么要用重排序?

使用Qwen3-Reranker-8B 模型进行重排序,对混合检索的初步候选文档做二次筛选,纠正混合检索的性能不足,提升检索精度。

21.有没有可能混合检索足够好不用重排序,或直接走重排序就行,为什么要检索加重排序?(这里有些不知如何回答)

肯定不能只使用重排序模型,单靠重排序无法筛选出准确内容,检索步骤是必须的;暂时没有对比过加与不加重排序的性能差异,但重排序能优化检索结果。

22.举例说明检索和重排序的输入输出分别是什么?

检索输入是用户的问题,输出是用户问题和检索到的内容,结合提示词后给到大语言模型;重排序输入是混合检索得到的用户问题和检索内容,输出是用户问题和重排序后的精准筛选结果。

23.动态滑动窗口装人记忆具体是怎么做的?

实现了三轮对话记忆,编写了一个类,设置存储池保存用户对话内容和模型输出结果,下一轮对话时将上一轮的问题和回答一并传入模型,超过三轮则将历史内容全部删除。

24.OCR 问答的输入是怎样的?

用户输入图片,系统先将图片内容通过 OCR 转换成文本,再结合用户输入框的文本作为最终输入。

25.若输入是游戏描述文本 + 游戏截图,如何从库里的图片 / 文字中找出相似游戏?

因图片可能含文本或不含,不能仅用 OCR,需用视觉语言模型(VLM)解析图片,再让 VLM 模型在 RAG 系统的数据库中进行比对,找出相似游戏。

26.面对游戏评论分析的开放问题,输入是大量无预设类别的游戏评论,如何输出评论类别及各类型评价情况总结?

用大参数量的 LLM 模型提取评论中的关键信息并存入存储池;将存储池中相似的关键信息归为一类,抽取对应类别的评分;单独的、无相似项的关键信息则单独列为一类。

27.存储游戏评论关键信息和评分的存储池,设计什么数据结构合适?

设计成字典格式,包含用户关注的内容、对应的评分等核心字段。

28.如何从新发布游戏的各类数据中找出有潜力、有价值的游戏,怎么定义有潜力的游戏?

有潜力的游戏可从下载量、销量、每月流水、玩家热度、宣传力度这几个维度判断,这些维度的数据表现好则说明游戏有潜力。

29.对 Agent 设计有什么了解,Agent 是怎么回事、怎么做开发、有哪些类型?

知道 Agent 是智能体,目前接触得不是很多,但后续可以学习相关内容。

30.多模态机系统的用途是什么,给谁用?

具体用途和使用对象不清楚,该系统是开发后私有化部署到客户服务器的。

31.这套系统开发完是提供 API 还是其他形式,为什么提到 Fast API?

系统是私有化部署到客户服务器,供客户自行调整;Fast API 是用来搭建系统后端的,前端使用 HTML 等技术开发。

32.大模型输入 token 量已支持几十万 / 上百万,为什么还要从库里挑出游戏重点资料,直接给所有游戏内容让大模型自己找不行吗?

理论上可以让大模型自己找,但提供重点内容能节约时间和 token 成本,提升大模型的推理效率;大模型能从重点内容中更快筛选出用户需要的信息并生成结果。

33.从原理上说,给大模型游戏重点信息(1 万 token)和所有游戏信息(几十万 token),生成内容的效果有什么差别?

效果有明显差别,1 万 token 的重点信息生成效果更好,几十万 token 的海量信息易让生成结果出现模糊情况;即便大模型有注意力机制,海量数据中易出现信息重叠(如相似游戏名),导致大模型混淆内容、返回错误答案。

34.VLM中的 V 是什么意思,怎么做到融入视觉能力的?

V 是视觉(Vision)的意思;VLM 中使用 VIT 视觉编码器,将图片切成图片 token 并排成一列,传入 Transformer 编码器,借助编码器的注意力机制让模型感知图片重要信息、抑制次要信息,最终实现视觉能力的融入。

35.Dify 具体是怎么用的?

将 Dify 部署到客户的服务器上,用 docker compose 进行部署;部署后有专属界面,可在界面中创建知识库、上传文件,还能搭建工作流,比如连接输入模块和嵌入模块。

36.Dify 自带知识库和 RAG 机制,为什么还要加 RAGflow?

RAGflow 也是部署到客户服务器的项目,和 Dify 一样,都是给客户做的私有化部署小 demo,属于实习中的其他工作内容。

37.觉得 RAG 有什么不足,后续可以怎么改进?

自己开发的 RAG 系统用的是固定长度分块,这是可改进的点;可以采用语义分块,先将文本拆成句子,用余弦相似度判断句子间的相似度,低于阈值则截断,高于阈值则合并,同时设置长度限制,超出则重新分块后再嵌入。

38.面对无现成结构化数据的复杂条件查询(如游戏装备适配角色、克制关系等),只有大量文本,该如何完成查询并提升准确性?

先对文本做结构化提取,比如提取出角色、标注角色对应的技能,将信息整理成规范的结构化内容;再把结构化后的内容嵌入向量数据库,后续进行检索时效果会更好。

39.对知识图谱的实体、关系等概念有什么了解,这和上述的结构化提取是否类似?

了解过知识图谱的基本概念,知道其由实体和关系构成并连线,之前在 B 站看过中医药问答的知识图谱项目,但具体细节记不清了。

40.用 docker compose 部署 Dify 的具体步骤是什么?

首先用 git clone 把 Dify 整个项目克隆下来,进入对应的项目目录,然后直接执行 docker compose up -d 命令启动即可;不清楚 docker compose 内部的具体原理。

41.Docker 是什么概念,和在电脑上直接启动程序有什么区别?

Docker 是容器化技术,能将应用和运行环境容器化启动,与本机系统隔离;在 Docker 创建的容器内的开发、运行环境,和服务器本地的环境是相互隔开的。

42.开发时使用的是什么操作系统和开发环境?

实习公司主要使用 Linux 操作系统。

43.现在有很多 AI 编程工具,平时是怎么编程的,用的什么工具?

平时编程用 TRAE 和 Claude Code,会借助 AI 编程工具辅助开发。

44.AI 编程和人工手写代码有什么区别?

AI 编程效率比人工高很多,能大概率避免语法和逻辑错误;开发小型项目时 AI 编程速度优势明显;但开发大型企业级项目,需要人工主导,结合 AI 编程一起完成。

45.有 10 个游戏,每个游戏有文本、图片、视频等多模态数据,如何对这些游戏做聚类,判断哪些游戏相似?

用聚类算法实现,核心是多维度判断相似度:文本层面用余弦相似度两两判断,高于阈值则判定为相似;图片层面,可先用 IOU 系数判断相交程度,更优的方式是用 VLM 视觉语言模型识别图片内容并打分,高于预设分数则判定为相似;聚类时先选一个中心游戏,以文本和图片的相似度为依据,将满足条件的游戏归为一类,不满足的则作为新的中心点,继续和未归类的游戏比对。

46.个人定位是前端还是后端,为什么会涉及 CSS、HTML 等前端内容?

个人定位偏向后端;因为实习项目的前端界面也是自己开发的,开发时借助 AI 工具完成了前端代码的编写。

47.后端开发主要用的什么技术?

主要用 Python,其中 Fast API 用得比较多。

代码题如下(当时看到脑子已经蒙了):

请你实现一个名为 get_nested_value 的函数。它接受两个参数:

data: 一个可能多层嵌套的字典。

path: 一个用点(.)作为分隔符的字符串,表示访问路径。

函数的行为需要满足以下要求:

根据 path 字符串在 data 字典中进行查找。

如果路径完全有效,则返回最终的值。

如果在查找的任何一步,键不存在,或者路径还没走完但中间的值已经不是字典了(导致无法继续深入),函数都应该返回 None。

整个调用过程不应该抛出 KeyError 或 TypeError 等异常。”

# 假设我们有这样一个数据结构

data = {

'result': {

'details': {

'user_name': 'Alice',

'scores': [98, 85, 92]

},

'status': 200

}

}

# 成功的调用:

get_nested_value(data, 'result.details.user_name') # 应该返回 'Alice'

get_nested_value(data, 'result.status') # 应该返回 200

# 失败的调用 (键不存在):

get_nested_value(data, 'result.details.age') # 应该返回 None (因为 'age' 键不存在)

# 失败的调用 (中间值不是字典):

get_nested_value(data, 'result.details.user_name.first_name') # 应该返回 None (因为 'user_name' 的值 'Alice' 是字符串,无法继续查找 'first_name')

# 失败的调用 (处理空路径或无效输入):

get_nested_value(data, '') # 应该返回 None

get_nested_value({}, 'a.b') # 应该返回 None

反问:公司的主要业务

基于游戏的各类多模态数据,建立游戏的知识库,并对游戏相关信息进行结构化的知识提取;

将上述结构化的数据,通过 RAG(检索增强生成)或模型训练的方式,为团队开发的各类 Agent(智能体)提供服务,而这些 Agent 会应用在游戏的设计、开发等各个环节中。

感受:代码题第一次遇见的不是算法,只写了个大概,没有运行出来,肯定是寄了[牛泪][牛泪][牛泪]

本篇目录
  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
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
    PDF 文档是怎么变成向量的,几十页的长文档也能直接转吗?
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
    若输入是游戏描述文本 + 游戏截图,如何从库里的图片 / 文字中找出相似游戏?
  26. 26
    面对游戏评论分析的开放问题,输入是大量无预设类别的游戏评论,如何输出评论类别及各类型评价情况总结?
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
    大模型输入 token 量已支持几十万 / 上百万,为什么还要从库里挑出游戏重点资料,直接给所有游戏内容让大模型自己找不行吗?
  33. 33
    从原理上说,给大模型游戏重点信息(1 万 token)和所有游戏信息(几十万 token),生成内容的效果有什么差别?
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
    面对无现成结构化数据的复杂条件查询(如游戏装备适配角色、克制关系等),只有大量文本,该如何完成查询并提升准确性?
  39. 39
    对知识图谱的实体、关系等概念有什么了解,这和上述的结构化提取是否类似?
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
    有 10 个游戏,每个游戏有文本、图片、视频等多模态数据,如何对这些游戏做聚类,判断哪些游戏相似?
  46. 46
  47. 47
  48. 48
    请你实现一个名为 get_nested_value 的函数。它接受两个参数: data: 一个可能多层嵌套的字典。 path: 一个用点(.)作为分隔符的字符串,表示访问路径。 函数的行为需要满足以下要求: 根据 path 字符串在 data 字典中进行查找。 如果路径完全有效,则返回最终的值。 如果在查找的任何一步,键不存在,或者路径还没走完但中间的值已经不是字典了(导致无法继续深入),函数都应该返回 None。 整个调用过程不应该抛出 KeyError 或 TypeError 等异常。”
  49. 49

同作者面经

相关公司