补充面试题(简历话术 + 扩展题)

项目补充面试题:三个项目的简历话术要点(食安智能问答助手、餐饮监管智慧协同系统、企智通)与大模型方向扩展面试题,附参考答案

项目补充面试题:简历话术 + 扩展题。点击折叠区查看答案。

食安智能问答助手

1:基于 Neo4j 数据库存储餐饮主体及其多元关系,支撑复杂问题的多跳查询

查看答案

主体(12 类节点)

  • Restaurant 餐饮商户 —— 核心主体(信用代码、地址、业态、风险等级、法人、状态)

  • License 资质证照(编号、类型、有效期、发证机关、状态)

  • Person 从业人员(姓名、职务、健康证编号)

  • HealthCert 健康证明(编号、有效期、发证机构、状态)

  • Inspection 监督检查(检查日期、类型、结果、检查员)

  • Violation 违法事项(编码、严重程度、描述、别名)

  • Punishment 行政处罚(决定书号、处罚类型、罚款金额、依据)

  • Complaint 投诉记录(编号、原因、状态、结果)

  • LawArticle 法规条款(法律名、条号、内容摘要)

  • Discretion 裁量基准(情形、等级、处罚区间、复核状态)

  • District 辖区网格(网格号、分局)

  • Regulator 监管人员(工号、分局、网格号)

关系(12 类)

Restaurant 直接关系(6 条):

  • HOLDS_LICENSE:Restaurant → License,持有许可证

  • EMPLOYS:Restaurant → Person,雇佣从业人员

  • LOCATED_IN:Restaurant → District,位于辖区

  • SUPERVISED_BY:Restaurant → Regulator,归属监管员

  • HAS_INSPECTION:Restaurant → Inspection,接受检查

  • HAS_COMPLAINT:Restaurant → Complaint,被投诉

延伸链关系(6 条):

  • HAS_HEALTH_CERT:Person → HealthCert,持有健康证

  • FINDS_VIOLATION:Inspection → Violation,检查发现违法

  • HAS_PUNISHMENT:Violation → Punishment,违法对应处罚

  • VIOLATES_LAW:Violation → LawArticle,违反法规条款

  • HAS_DISCRETION:LawArticle → Discretion,条款对应裁量基准

  • BELONGS_TO:Regulator → District,监管员属于辖区

2:设计统一调度节点,将语义改写、意图识别与实体抽取聚合为一次结构化(schema)LLM 调用

查看答案
response_format

3:针对实体构建两级检索策略,优先精确匹配,如果未命中再通过 BGE 转为向量进行语义检索

查看答案
bge-large-zh-v1.5 稠密向量

4:基于 LLaMA-Factory 对 Qwen3-8B 做 LoRA 微调(rank=32, alpha=64),准确率提升 30%

查看答案
  • 推荐:RTX 4090 24G (=A10);备选:RTX 3090 24G

  • 16G 显卡可跑(需梯度检查点 + 降 batch_size)

  • 框架:LLaMA-Factory

  • 50,000 条数据:49,000 训练样本,RTX 4090,epoch=1.2,batch_size=8

  • LoRA 训练 8–11 小时

  • 合成数据禁止高 epoch,防过拟合

  • 数据构造:写脚本大模型生成,语法检测,大模型语义检测,部分人工检测,人工提供部分真实数据

Rank (r):低秩矩阵的维度,决定可训练参数量和信息容量。r 越大,模型表达能力越强但显存占用越高;通常取 8~64。
Alpha (α):缩放系数,控制 LoRA 权重对基座模型的影响强度。实际生效的缩放因子为 α / r,增大 α 等效于提高 LoRA 的学习率或贡献度。 惯例取值一般是r 或者r的两倍,学的太慢就调大一点,过拟合及调小一点

5:对生成的 Cypher 语句执行只读校验、参数化查询、辖区权限检查和 Neo4j EXPLAIN 验证

查看答案
模型生成的 Cypher 先经白名单只读校验,再由 Neo4j EXPLAIN 编译验证;用户输入以参数注入防攻击,辖区权限值由服务端下发。

6:使用 FastAPI + SSE 提供流式接口,95% 的请求首 token 响应时间 <3s

查看答案
基于 SSE + asyncio.Queue 实现的。每个请求创建一个独立的异步队列,大模型侧开启流式推理,将 token 片段和进度信息逐条写入队列;FastAPI 端通过异步生成器从队列中循环读取、逐条 yield,最终由 StreamingResponse 以 SSE 格式(text/event-stream)推送给前端。

餐饮监管智慧协同系统

1:构建多个只读视图作为 NL2SQL 唯一入口,禁止模型访问业务原表

查看答案
NL2SQL 保证只读查询,和增删改是完全两条隔离的路线。

2:基于 SQLGlot AST 校验 SQL,注入商户权限并改写执行,确保只读查询,防止越权执行

查看答案
我们用 SQLGlot 把 NL2SQL 生成的语句解析成 AST(Abstract Syntax Tree抽象语法树),先校验只读:拦截 INSERT/UPDATE/DELETE 等写操作,表必须在五个只读视图白名单内;再把商户身份转成 merchant_id 等值条件 AND 进 WHERE,防 SQL 注入绕过;最后强制 LIMIT 兜底。不合规直接拒绝,不执行。

3:使用单次 LLM 调用联合完成上下文补全、意图识别与参数抽取

查看答案
我们在网关层用一次 LLM 调用同时完成上下文补全、意图识别和参数抽取,再经白名单校验(7 个意图)、高风险字段防猜测,实现单意图直连、多意图编排。

企智通

1:基于 LangChain 统一加载文档,支持PDF、Word、Markdown等格式,集成RapidOCR图片识别;

查看答案

我基于 LangChain 的 DocumentLoader 做统一文档加载:PDF、Word、Markdown 分别用对应 Loader 解析为标准 Document 对象;针对扫描件和图片,集成 RapidOCR 做本地离线识别,识别文本回填后统一进入切分、向量化流程,供本项目的 Agent 检索问答和材料审核使用。

  • 加载分开:PDF 用 PyPDFLoader、Word 用 Docx2txtLoader、Markdown 用 UnstructuredMarkdownLoader,各自解析成统一的 Document 对象(含 content + metadata)

  • 切分统一:所有 Document 进入同一条链路,用同一个 splitter(如 RecursiveCharacterTextSplitter,或按结构用 MarkdownHeaderTextSplitter)切分,再统一向量化入库

即"多入口、一条管道"——Loader 层格式各异,切分和后续处理完全复用。

2:基于 BM25 对企业 FAQ 做快速检索,通过阈值校准大于 0.78 高置信度直答

查看答案
高频问题先走 BM25 检索企业 FAQ。BM25 是基于 TF-IDF 的关键词匹配,靠词频和逆文档频率打分,不理解语义但速度快、省资源。阈值是BM25打分后把原始分数转成 0~1 的概率值 (Softmax 激活函数),取出 0.78超过即高置信直答,省 token 低延迟;未命中再降级 RAG 向量语义检索兜底。

3:基于 BERT 模型微调意图分类器,实现通用知识与企业知识的精准路由

查看答案
我用 bert-base-chinese 做二分类,区分 query 是"通用知识"还是"企业知识"。用 HuggingFace Trainer 全参微调:数据按 source_id 分组切 80/10/10,防同源泄漏;batch 8、3 个 epoch、warmup 0.1、weight_decay 0.01,fp16 加速。每个 epoch 评估,按宏 F1 回滚最优 checkpoint。模型很小只有一亿参数,全参微调成本可控,效果远好于规则或关键词匹配。

扩展面试题

1:Embedding 的原理是什么?

查看答案
Embedding 将高维离散数据映射为低维稠密向量,使语义相近的内容在向量空间中距离更近,便于模型理解与检索。 在我的项目中用 BGE-M3 把文档切块编码成向量存入 Milvus,查询时将问题同样向量化,通过 ANN 检索语义最相近的文档块。

2:向量相似度如何计算?常用哪些距离度量?

查看答案
向量相似度常用余弦相似度衡量方向一致性,欧氏距离算空间直线距离,曼哈顿距离算坐标差绝对值和。面试时强调:余弦适合文本语义,欧氏适合数值特征。

3:向量的维度是什么?维度高低的影响?

查看答案
维度是向量特征数量。高维表达力强但易过拟合、计算慢;低维高效但可能欠拟合。需根据数据与任务权衡选择合适维度。

4:HNSW/IVF 等向量索引算法的原理

查看答案
HNSW 用多层跳表加速近邻搜索;IVF 将向量聚类分桶,先定位桶再局部检索。两者均以空间换时间,平衡召回率与查询速度。

5:什么是 Agent?

查看答案
Agent = LLM + 记忆 + 工具 + 规划。能自主拆解任务、调用工具、根据反馈迭代的智能体,核心是"感知-决策-行动"闭环。

6:Agent 的核心构成要素有哪些?

查看答案
四要素:模型负责推理决策,记忆维持上下文连续性,工具扩展能力边界,规划把大任务拆成可执行步骤。

7:Agent 的安全与权限控制如何做?

查看答案
我们采用"逐步鉴权 + 人工确认"机制:编排每步独立鉴权并透传 task_id,高危操作(如批量创建任务)生成确认单,用户确认后才执行。

8:训练数据如何清洗、去重和质量校验?

查看答案
先用精确匹配去完全重复,再用 MinHash 算相似度去近似重复,兼顾效率与召回;然后模型打分过滤低质;最后人工抽检 10%,保证覆盖真实场景的分布。

9:微调的完整流程(数据准备→训练→评估→部署)

查看答案
构造指令数据 → LLaMA-Factory 训 LoRA → 留出集评估 → 合并权重 → vLLM 部署 → 线上 badcase 回流迭代。

10:开发 Agent 时最大的难点是什么?

查看答案
稳定性:输出不可控、工具偶发失败。靠结构化输出约束、失败重试降级、评估集回归测试保障。

11:Agent 的自主决策能力如何实现和约束?

查看答案
给白名单动作空间,越界即拒绝;关键路径加审批节点;所有决策留日志可回溯。

12:指令微调(SFT)的数据格式和对话模板

查看答案

本项目采用的 OpenAI messages 格式(jsonl)

数据文件(nl2cypher_train_50k.jsonl、intent_train_20k.jsonl)每行一条:

{
    "messages": [
        {
            "role": "user",
            "content": "【图谱Schema】\n节点:xxx\n需求:xxx,请输出可执行Cypher"
        },
        {
            "role": "assistant",
            "content": "MATCH ... RETURN ..."
        }
    ]
}

alpaca/sharegpt 格式:instruction、input、output 三元组; 多轮用 messages 列表,套模型 chat template。 三种格式对比

格式 结构 适用场景
Alpaca {"instruction", "input", "output"} 单轮、无角色概念的简单指令任务
ShareGPT {"conversations": [{"from", "value"}]} 多轮对话,from 为 human/gpt
OpenAI messages {"messages": [{"role", "content"}]} 多轮 + system 角色,与 Chat API/Qwen 模板天然对齐

13:训练超参如何设置(学习率、epoch、batch size)?

查看答案
学习率像步长,太大震荡太小慢,常用 1e-3 到 1e-4 配合 warmup;batch size 影响梯度稳定性与显存,32 或 64 起步,大 batch 需调大学习率;epoch 看 loss 收敛和验证集指标,早停防过拟合。三者联动调优,先固定 batch size,再搜学习率,最后定 epoch 轮数。

14:训练中的 Loss 如何解读?Loss 不降怎么办?

查看答案
训练降验证升是过拟合,早停;完全不降查数据质量和 lr;震荡就调小 lr 或加 warmup。

15:微调效果如何评估?

查看答案
留出集 + 业务真实 query 自动化评测,对比基座模型;看准确率和格式合规率,人工抽检兜底。

16:训练显存如何估算和优化?

查看答案
权重 = 参数量 × 2 字节(bf16),再加激活和优化器状态。LoRA 只训少量参数,7B 单卡 24G 可跑。

17:公司业务中你负责哪块数据和模型训练?

查看答案
我负责数据构造和训练调参:定义数据规范、跑训练、做效果评估;标注团队配合供数。

18:评测/业务数据泄露如何避免?

查看答案
评测集与训练集严格隔离存储;上线前做相似度去重检测;评测 query 绝不进训练语料。

19:System Prompt 和 User Prompt 如何划分?

查看答案
System 放稳定角色、规则和输出约束;User 放本次任务具体输入。

20:提示词和工程代码如何配合(控制逻辑放哪边)?

查看答案
确定性逻辑(校验、重试、路由)放代码;语义理解(改写、生成)放 prompt。prompt 只做模型擅长的事。

21:Zero-shot 和 Few-shot 的区别?

查看答案
Zero-shot 不给示例只给指令,简单任务够用;Few-shot 带示例对齐格式和风格,复杂任务更稳。

22:提示词过长有什么影响?如何精简?

查看答案
稀释注意力、成本高、可能超窗口。精简:砍冗余规则、示例精选、历史摘要压缩、结构化分段。

23:设计提示词时如何限制业务边界、明确任务和预留扩展能力?

查看答案
System 里明确"只做什么、不做什么" + 拒答规则;扩展位用变量注入,改配置不改主干。

24:说一下你工作中遇到了什么困难,怎么解决的?

查看答案
检索不准的问题:定位到分块粒度不当,改父子分块 + rerank 后召回显著提升,沉淀成了方法论。

25:知识图谱和 RAG 如何融合?GraphRAG 原理

查看答案
GraphRAG 用知识图谱增强 RAG:先建图存关系,检索时结合向量与图遍历,精准捕获多跳关联。相比纯文本检索,它更懂实体间逻辑,回答复杂问题时更全面准确,减少幻觉。

26:语料数据如何清洗和去重?

查看答案
语料清洗先除乱码、广告等噪声,再统一格式。去重可用哈希或相似度算法,精准剔除重复内容。关键是保留有效信息,避免误删。最后抽样人工校验,确保数据干净可用,为模型训练打好基础。

27:推理部署需要什么硬件?如何估算显存和选型?

查看答案
权重 = 参数量 × 2 字节,KV cache 随并发增长。7B bf16 推理约 16G,LoRA 训练建议 24G 单卡。

28:LangChain 是怎么封装 tools 的?

查看答案
用 @tool 装饰器或 StructuredTool,从函数签名和 docstring 自动生成 schema,注册进 agent 的 tools 列表。

Python

1:装饰器的原理和应用场景

查看答案
不改原函数加逻辑的语法糖,本质是高阶函数返回包装函数。用于日志、缓存、鉴权、重试。

2:闭包是什么?

查看答案
内层函数引用外层函数变量,且随返回值被携带出去,形成封装了环境状态的函数,常配合装饰器用。

3:生成器和迭代器的区别?yield 的作用

查看答案
迭代器实现 __iter__ 和 __next__;生成器是写法更简洁的迭代器,yield 暂停执行、惰性求值省内存。

4:GIL 是什么?对多线程的影响

查看答案
GIL 是 Python 全局解释器锁,同一时刻只允许一个线程执行字节码。导致多线程无法利用多核并行计算 CPU 密集任务,但 IO 密集型场景仍有效,想真并行需用多进程或 C 扩展绕过。

5:多线程、多进程、协程的区别和选择

查看答案
CPU 密集用多进程绕 GIL;IO 密集用多线程或协程;高并发网络请求优先协程,切换开销最小。

机器学习与深度学习

1:机器学习和深度学习的区别

查看答案
ML 靠人工特征工程 + 经典算法;DL 端到端自动学特征,数据需求更大,感知类任务(NLP/CV)占优。

2:监督学习、无监督学习的区别和典型算法

查看答案
监督有标签学映射(分类、回归);无监督无标签找结构(聚类、降维);中间还有半监督和自监督。

3:常见损失函数有哪些(交叉熵/MSE/BCE)?

查看答案

回归用 MSE;分类用交叉熵;二分类和多标签用 BCE;样本不均衡可加 focal loss。

回归用 MSE,算预测和真实的平方差;二分类用 BCE,是多分类交叉熵的特例;多分类用交叉熵,衡量预测概率与真实标签的差距。核心就是:回归看距离,分类看概率分布差异,选对损失函数模型才能学得好。

4:梯度下降和常见优化器(SGD/Adam)

查看答案
梯度下降就是沿坡最陡处下山找最低点。SGD 每次只用一个样本算梯度,快但震荡大;Adam 则自适应调整学习率,兼顾动量和方差修正,收敛更稳更快。面试时强调:SGD 简单基础,Adam 工程常用,选谁看数据规模和稳定性需求。

5:RNN/LSTM/GRU 的原理,解决了什么问题?

查看答案
RNN 通过隐藏层传递记忆,解决序列时序依赖问题,但存在梯度消失。LSTM 引入门控和细胞状态,GRU 简化为更新与重置门,两者都有效缓解长程依赖难题。核心是用"门"控制信息流动,让模型记住关键、遗忘无关,从而更好处理语音、文本等序列任务。

6:Word2Vec 词向量的原理

查看答案
词向量通过上下文预测词,让语义相近的词在向量空间中距离更近,把文字变成计算机能懂的数字坐标。(词向量 ≠ 语义向量)

7:分类和回归的区别

查看答案
分类是预测离散类别,像判断猫狗;回归是预测连续数值,像预估房价。核心区别就看输出是标签还是数字。

8:逻辑回归的原理

查看答案
逻辑回归用 sigmoid 函数把线性结果压到 0 到 1 之间,输出概率,通过设定阈值判断类别,本质是解决分类问题的线性模型。

9:决策树、随机森林、XGBoost 原理

查看答案
决策树是单棵树按规则分裂;随机森林是多棵树投票防过拟合;XGBoost 是树串行纠错,每棵拟合上棵残差,加权累加结果,兼顾精度与速度,适合结构化数据。

10:特征工程常用方法

查看答案
特征工程就是清洗、转换、组合原始数据,让模型更好学。常用归一化、编码、分箱、交叉特征,核心是提升数据质量与表达力。

11:归一化和标准化的区别

查看答案
归一化缩到 0-1,标准化变为均值 0、方差 1。

12:残差连接的作用

查看答案
残差连接让梯度直通,缓解深层网络退化,训练更稳;同时保留原始信息,模型既能学新特征又不丢底层细节,收敛更快效果更好。