面灵AI→

高斯信息技术 AI 开发工程师一面:BERT微调与LangGraph编排

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

《面试题目》

  1. 请做一下自我介绍,GPA 大概多少、排在什么比例?没考虑继续读研吗,不考虑的原因是什么?
  2. 你在项目里负责哪些具体模块和技术细节?团队一共多少人,每个人分别负责哪部分?
  3. 你当时用的 OCR 是什么模型?
  4. 知识图谱里涉及哪些边和节点的设计,具体做到了哪些关系?
  5. BERT 微调当时用了多少数据?训练框架是什么,大概占用多少显存?数据集来自哪里、label 怎么构建、规模多大?既然已经有原始数据集,为什么还要用 BERT?
  6. Transformer 的微观结构是怎样的?Attention 的作用是什么,Q、K、V 分别表示什么?
  7. 项目里的 Agent 是如何编排的?LangGraph 的 state 怎么设计?涉及多轮对话怎么处理,条件边怎么构建?
  8. 图谱的检索和常规 RAG 检索有什么区别?
  9. 整轮的耗时大概多久?
  10. 最终的评测数据是怎么样的?效果评测指标和准确率是多少?
  11. TypeScript 这一块掌握得怎么样?
  12. 另一个项目的节点编排是怎么做的?
  13. 后端和 REST 接口都是哪些类型的?自己部署的还是调用现成的?项目部署到网站、APP 还是小程序?
  14. 如果让你设计一个企业知识库,你会怎么设计这条链路?
  15. 做重排的话有哪些重排策略?了解 RRF rank 吗?BM25 检索习惯用什么样的工具来做?
  16. Python 的异步编程熟悉吗?
  17. 讲讲 Tools、MCP 以及 Skills 的区别。
  18. 聊聊你在 AI Coding 方面的心得。
  19. 有没有遇到过比较困难的事情?

《参考解析》

项目深挖: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 兜住生成结果,面试官想确认的是你有没有判断力而不是会不会用工具。反问环节可以问团队目前的技术栈分工、这个岗位进去先做什么,以及评估模型效果用的指标体系。