高斯信息技术 AI 开发工程师一面:BERT微调与LangGraph编排
- 轮次
- 一面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 请做一下自我介绍,GPA 大概多少、排在什么比例?没考虑继续读研吗,不考虑的原因是什么?
- 你在项目里负责哪些具体模块和技术细节?团队一共多少人,每个人分别负责哪部分?
- 你当时用的 OCR 是什么模型?
- 知识图谱里涉及哪些边和节点的设计,具体做到了哪些关系?
- BERT 微调当时用了多少数据?训练框架是什么,大概占用多少显存?数据集来自哪里、label 怎么构建、规模多大?既然已经有原始数据集,为什么还要用 BERT?
- Transformer 的微观结构是怎样的?Attention 的作用是什么,Q、K、V 分别表示什么?
- 项目里的 Agent 是如何编排的?LangGraph 的 state 怎么设计?涉及多轮对话怎么处理,条件边怎么构建?
- 图谱的检索和常规 RAG 检索有什么区别?
- 整轮的耗时大概多久?
- 最终的评测数据是怎么样的?效果评测指标和准确率是多少?
- TypeScript 这一块掌握得怎么样?
- 另一个项目的节点编排是怎么做的?
- 后端和 REST 接口都是哪些类型的?自己部署的还是调用现成的?项目部署到网站、APP 还是小程序?
- 如果让你设计一个企业知识库,你会怎么设计这条链路?
- 做重排的话有哪些重排策略?了解 RRF rank 吗?BM25 检索习惯用什么样的工具来做?
- Python 的异步编程熟悉吗?
- 讲讲 Tools、MCP 以及 Skills 的区别。
- 聊聊你在 AI Coding 方面的心得。
- 有没有遇到过比较困难的事情?
《参考解析》
项目深挖:BERT 微调的每个数字都可能被追问
这一面的主线是简历项目,面试官会顺着一个技术点往下一层层问,所以每个写进简历的模型都要能报出数据来源、规模、训练开销和选型理由。以 BERT 微调为例,「有原始数据集为什么还要用 BERT」的答案不在数据量上:原始数据往往是无标注的领域文本,而下游任务需要的是语义表征能力,规则或传统模型泛化差、换一批说法就崩;预训练模型已经学过通用语言结构,只需少量标注样本微调就能适配垂直领域。显存这块要能粗算:主要由参数量、精度字节和优化器状态决定,fp16 比 fp32 省一半,再用小 batch 加梯度累积把显存换回训练稳定性。OCR 这类选型问题同理,面试官想听的是你比较过哪几个方案、为什么最后选了它、在哪些场景下它失效了。
Transformer 与 Attention:要能讲到矩阵形状
Transformer 的每一层是「多头自注意力 + 前馈网络」,两个子层都带残差连接和 LayerNorm,位置信息靠位置编码补进去,因为注意力本身对顺序不敏感。注意力做的事是让每个 token 按相关性去聚合其他 token 的信息:Q 是当前 token 发出的查询,K 是各 token 用来被匹配的键,V 是实际被加权取用的内容,先算 Q 与 K 的点积得到相关性分数,除以根号 d_k 防止维度变大后 softmax 梯度消失,再做 softmax 归一化去加权求和 V。多头则是把表示切成若干子空间并行做这件事,让不同的头分别关注语法、指代、位置等不同关系,最后拼接再线性变换。被追问时最容易失分的是只背公式答不出「为什么要缩放」「多头到底带来什么」,把这两点讲清楚就够了。
Agent 编排与检索:LangGraph、图谱检索与重排
LangGraph 的核心是把 Agent 建模成状态机:state 一般用带 reducer 的字典或 TypedDict 定义,reducer 决定某个字段的新值是覆盖还是追加(消息列表通常用追加语义),节点是读写 state 的函数,边决定流转,条件边则是一个读 state 返回下一节点名(或路由键)的函数。多轮对话靠 checkpointer 按 thread_id 持久化 state,每轮把历史消息带回来,需要人工确认时可以用中断机制暂停再恢复。图谱检索和常规 RAG 的区别在于检索单位:向量 RAG 召回的是语义相近的文本块,答不了「A 和 B 是什么关系」这类需要连边的问题;图谱把实体和关系显式建模,可以先定位实体再沿边做多跳扩展,代价是抽取成本高、覆盖率受限于 schema,工程上常见的是两者混用、由图谱补关系类问题。重排环节要能说清两级结构:粗排用 BM25 这类稀疏检索或向量召回把候选拉到几十上百条,精排用 cross-encoder 逐条打分,混合召回的结果常用 RRF 融合——按每个结果在各路召回中的排名取 1/(k+rank) 求和,好处是不需要调权重、对不同量纲的分数天然鲁棒;BM25 通常直接落在 Elasticsearch/OpenSearch 里,量小也可以用现成的 BM25 库。
工程广度与 AI Coding:别把工具名当成理解
后半程问的 TS、Python 异步、部署形态属于「你是不是真写过」的交叉验证,答的时候给真实用过的场景比罗列语法点有效,比如 Python 的 asyncio 适合 IO 密集的并发调用、遇到 CPU 密集要丢给线程池或进程池,避免阻塞事件循环。Tools、MCP 和 Skills 的区别可以从抽象层次讲:Tools 是模型可调用的具体函数,MCP 是把工具和数据源按统一协议暴露出来的服务层,让不同客户端接一次就能复用,Skills 更像面向任务打包好的流程与知识。AI Coding 的心得别停留在「提效」,讲清你把它用在什么粒度的任务上、哪些环节必须人工把关(接口契约、边界条件、涉及数据与权限的改动)、怎么用测试和 review 兜住生成结果,面试官想确认的是你有没有判断力而不是会不会用工具。反问环节可以问团队目前的技术栈分工、这个岗位进去先做什么,以及评估模型效果用的指标体系。