资讯动态

AI模型面试15题:从评估、微调到工程落地的核心考点解析

发布时间:2026/10/22 23:55:51 来源:尧图企业网站定制
前阵子我帮团队整理技术面题库陆陆续续面了几十个人真把“AI模型面试15题”这套东西打磨成了内部笔试之外的必问清单。原因很简单这几个问题看着基础实际每个都能往下追两层背过答案的人会卡壳真正做过的项目的人反而会越聊越兴奋。下面把每题背后的考察点、回答框架和我自己的评判标准都摊开来讲。准备跳槽的同学可以用来模拟自检做技术面的朋友也可以直接拿去改造。这套题并不追求生僻相反它刻意选的都是“天天要用的知识”因为面试要筛的不是百科全书而是能把模型问题想通、讲清、落地的人。把15题拆开看刚好覆盖五个维度机器学习基础、深度学习和微调、工程落地、业务评估、手写代码能力。1. 基础功底四问别把“会用”当成“会了”1.1 分类模型评估怎么回答才不显外行面试官开场喜欢问“你做了一个二分类模型怎么判断它好不好”这个问题的陷阱在于很多人第一反应是“看准确率”。但准确率有两个致命盲区类别不平衡时它会被多数类推高业务代价不对称时它不能反映真实损失。我一般会期待候选人按下面这个顺序展开先问清楚业务场景比如这是风控、推荐还是内容识别误报和漏报的成本分别是多少再看正负样本分布如果正样本只占0.1%准确率基本没有参考价值最后才落到指标选择上。这个回答框架的好处是它展示的不是“我知道一个指标”而是“我知道指标该怎么服务于决策”。为了更直观看清楚不同指标的用途可以这样对照指标看什么典型场景Accuracy整体预测正确的比例正负样本均衡、代价对称Precision预测为正的样本里有多准宁可漏报也不误报的场景Recall真正例里被找出来多少宁可误报也不能漏报的场景F1Precision和Recall的调和平均两者都重要时AUC模型排序能力不依赖阈值对比模型版本、粗筛模型PR-AUC正样本极少时排序能力异常检测、欺诈识别我分享一个真实例子之前做文本内容识别负样本占99%把全部判成负样本准确率也是99%。但业务真正要抓的是那1%的违规内容所以团队只看坏样本Recall在Precision达到95%前提下能到多少准确率这个数字从头到尾就不出现在周报里。候选人如果能举出类似“准确率99%但不解决问题”的案例基本就能过这道关。实操心得准备一个你亲手做过的评估案例把“为什么不用准确率”讲成故事不要干背公式。面试官问AUC时最好顺手补一句“AUC只代表排序能力不代表线上阈值命中效果”这句话能区分看书和动手。1.2 过拟合怎么发现、怎么治这个问题看似轻松实际最能暴露新手和老手的差别。新手回答通常直接说“加正则、加Dropout、加早停”但我会追问“你如何先判断它是过拟合而不是欠拟合”正确顺序是先看训练集误差。如果训练集精度也很低说明模型容量不足或特征不够这时候加Dropout只会雪上加霜。只有当训练集误差持续下降、验证集误差开始回升时才能确认过拟合。所以我的答题模板是先画训练和验证损失曲线观察两条曲线的gap再从数据角度缓解扩样本、数据增强、清理异常标签最后才是正则、早停、降复杂度这些模型手段。很多人会漏掉一个点交叉验证里的划分不当也会制造“伪过拟合”。比如时间序列数据用随机K折验证集里混进未来信息会让验证曲线表现失真。能主动提到这一点的人通常是真的处理过真实数据而不是只在比赛平台里跑过baseline。实操心得我自己排查过拟合时会先把错误样本拎出来看很多看起来是过拟合的问题实际是标签噪声。标签错上几个点模型再正则也白搭先把脏标清理掉比调一星期参数都管用。这个排查顺序改变了我做项目的节奏先看数据质量再谈模型调参。1.3 类别不平衡别一上来就过采样这类题我见过太多统一答案“SMOTE”。但真实项目里SMOTE不是首选因为你根本不知道合成样本在特征空间里是否可信。我建议的回答分三层第一层是重新定义目标。业务到底要优化什么很多“不平衡”场景其实应该做成排序问题或者分群问题而不是硬分类。第二层是调整训练策略class weight、focal loss、阈值移动三件套里先试class weight最稳妥因为它不改变样本本身只改变梯度贡献。第三层才是数据层面的欠采样或过采样必要时用SMOTE但要验证合成样本没有引入噪声。一个可以讲的案例某异常行为检测项目正样本只有千分之二直接训练出来的模型Recall极低。我们把问题从“判断是否异常”改成“给异常行为打分排序”再把阈值调到业务可接受的误报率上效果立刻不一样。这个思路比任何采样技巧都更能打动面试官因为它体现的是把算法问题翻译成业务问题的能力。实操心得别把“AUC高”当成成功。极端不平衡下ROC曲线会被大量负样本灌水PR曲线更能反映真实进步。所以我评估这类模型时固定看 recallprecision0.9 这种业务指标而不是只看一个孤立的AUC数值。1.4 特征工程到底问什么、答什么特征工程问法很多但核心无非是处理缺失值、连续特征离散化、特征选择和特征交叉。候选人不需要背出来“业界十招”能把链路讲通就行。我的参考回答是缺失值先看缺失机制如果缺失和预测目标有关直接填充会引入偏差可以先加“是否缺失”标记再决定是填充还是删字段连续特征做离散化本质是为了引入非线性、方便在线服务做映射同时降低异常值影响特征选择不要只靠相关性还要看特征的历史分布和上线成本线上没有的特征离线做再多工程也是白做。这里有一个面试官高频追问“为什么离线加了特征线上却完全没提升”我最想听到的答案是“回看特征是否用了未来信息是否只有离线表才有、在线实时取不到”。能说清这件事的人工程意识基本过关因为他清楚离线实验和在线系统的边界。实操心得特征工程不是为了炫技是为了降低模型的搜索难度。我常把一句话挂在嘴边好特征是“把答案的线索摆到桌面上”而不是“把所有线索一股脑堆在桌上”。面试时如果能用这样一个概括收尾会让面试官觉得你有方法论。2. 深度学习与大模型四问Transformer不是背出来的2.1 自注意力为什么要除以根号d_k在Transformer里自注意力公式写作 Attention(Q,K,V)softmax(QK^T/√d_k)V。如果只背公式不问为什么那面试是撑不过追问的。答案核心在于数值分布和梯度稳定性Q和K的维度是d_k它们的点积是d_k个独立随机变量的和方差约为d_k。当d_k较大时点积结果的方差随之变大值域被推到softmax的饱和区。softmax在饱和区梯度很小反向传播时模型很难学。除以√d_k之后方差被压回1softmax输入落在一个相对温和的区域梯度就能稳定流动。这里可以补一个直观类比两个人各写了一串向量点积结果就像把两串数字逐位相乘再求和。维度越宽结果波动越大如果不缩放注意力分数会出现“一个值特别大、其他都趋近于零”的极端局面模型就退化成在做硬选择失去了对上下文的细粒度区分能力。面试官大概率还会追问“为什么不是除以d_k而是√d_k”因为除以d_k会把方差压得过小注意力分布过于平坦等于失去选择性。所以√d_k是让方差为1的缩放因子既不给某个位置绝对话语权也不让所有位置糊成一片。这个推导虽然不难但能当场讲清的人并不多。2.2 参数高效微调怎么选型大模型面试必问微调全参微调vs参数高效微调你在项目里用哪种为什么比如LoRA设计冻结预训练权重注入低秩矩阵近似更新。它最大价值是让微调成本从“重新训练一个大模型”降到“训练一个小适配器”同时每个下游任务只需要存少量增量参数。回答时要带出选择逻辑数据量小、只想适配特定任务语法用LoRA或Adapter需要把模型变成垂直领域专家数据量也够才考虑全参微调但要提前准备好灾难性遗忘的应对方案在线服务要节省显存和加载成本用LoRA合并权重避免部署时带额外分支。细节上LoRA的rank和alpha需要实验。我实测的经验是rank8到16在大多数任务上就够用不是rank越大越好alpha通常设为rank的1到2倍。target modules如果只锁住attention里的q、v和把所有线性层都替换掉结果会差不少我一般从q、v开始看loss变化再扩展。实操避坑LoRA微调前先确认基座版本不同版本之间的分词器或hidden size变了直接加载会报错或者静默出错。很多翻车不是模型问题是环境基座不匹配。面试时能讲出这种细节比背一整套微调流程要更能立住“真做过”的人设。2.3 温度、Top-p、Top-k怎么搭配用生成式模型面试里“讲一下温度和Top-p”属于送分题但送分题最容易暴露死记硬背。Temperature是作用在logits上的缩放温度越高概率分布越平滑采样结果越发散温度越低越接近贪心但过低会退化到重复套话。Top-p是把累积概率超过阈值的候选词筛出来再重新归一化。Top-k是按logits从大到小截断前k个二者可以叠加。一个合格回答要落到场景上代码生成或者数学题建议低温度0.2到0.3目的是稳定少幻觉开放聊天、营销文案0.7到1.0适合探索多样性抽取式任务直接温度0因为不需要创造性。面试官如果接着问“为什么温度高了会胡说八道”你要能解释温度不会让模型掌握新知识只是让低概率候选获得更多采样机会。低概率词在训练数据里出现得少本身可靠性就差采样到它们当然更容易出错。这本质上不是在改变模型的“知识”而是在改变“探索的胆子”。实操心得评测生成质量千万别忘了固定随机种子、固定采样参数。我见过同一份prompt在两次评测里因为温度不同导致结论完全反过来最后查了半天才发现是测试脚本默认temperature0.8另一个跑的是0.2。做对比实验时除了对比项之外的一切变量都要焊死。2.4 灾难性遗忘怎么缓解微调任务最容易踩的坑就是“在这个domain上变得好用但通用能力断崖式下跌”。考察点就是候选人有没有全局意识眼睛只盯着下游指标迟早要还账。缓解方案从轻到重可以这么排混合通用语料在下游数据里掺入10%到30%的通用数据能明显稳住基础能力回放机制从老任务采样一部分数据和当前任务一起训练低秩约束用LoRA这类参数高效方法本质是限制参数更新扰动也可以减轻遗忘损失约束在微调损失之外加一项与旧模型输出分布的KL散度让它别偏离太多。可以补充一个实际案例我做过一个客服问答方向的微调只喂业务对话结果模型连“今天天气怎么样”都不想答了。后来把单轮常识问答数据按2:8和业务数据混合进去通用对话能力回来了一些垂直意图识别也没下降。这个故事虽然简单但比念十遍“回放、正则”都更有说服力。3. 工程落地三问模型能跑通和能上线是两回事3.1 模型上线前哪几类数据泄漏必须查数据泄漏漏一轮线下指标全是虚的。常见有三种时间泄漏特征里用了预测时刻的未来信息比如用全天点击量预测上午的点击行为目标泄漏训练特征直接或间接包含答案比如做违约预测却把“是否已经逾期”放进了特征预处理泄漏先用全体数据算均值或做标准化再切分训练验证验证集会“偷看”训练集的信息。我建议候选人给出一个查泄漏的checklist每个特征字段都要标注产生时间戳保存特征时严格使用历史窗口划分必须在任何统计计算之前去重和异常值清理也要防止同一用户出现在两个集合。这里面试官很吃一个细节同一用户反复出现在训练集和测试集会导致模型“记住人”而不是“学到规律”。能在回答里主动提到“按用户去重切分”的人说明真的独立搭过训练数据管线。线上模型上线后效果差有相当大比例是这类泄漏没堵住。3.2 线上模型效果变差怎么定位这个问题考察的是排查体系的完整度而不是某个酷炫算法。我推荐一个系统化排查顺序确认是哪个指标掉了点击率、转化率还是延迟先把症状定义清楚。分维度下钻渠道、地域、用户新老、设备先定位影响范围。计算分布漂移统计线上实时特征和训练集特征的PSI/KL看哪些特征变化最大。看上游依赖标签口径是否变了、特征服务是否有bug、实验环境是否被其他策略污染。回放模型拿同批线上日志喂给新旧两个模型看是数据问题还是模型问题。一个可以说的经验某一次线上点击率掉了5%查完发现不是模型坏了而是上游特征服务发布新版本后把某些字符串字段解析成了空值模型输入大量缺省分布一变预测全偏。这类问题不是重训能解决的先把上线信息的质量管好再谈新模型。现象优先排查方向验证方式单指标下跌上游数据变更、特征缺失回放线上日志对比新旧模型局部人群下跌流量分配、人群漂移分维度下钻全量普跌训练分布过期、环境变化PSI/KS分布监控排查心得给线上问题定位时先不要急着怀疑算法。大量线上指标恶化其实是数据管道问题、实验污染问题模型本身并没有变。学会把“模型背锅”的可能性放在最后是工程成熟度的标志。3.3 推理延迟太高先优化哪个环节如果候选人做过在线推理这道题他能聊十分钟。我建议按分层排查先看预处理文本要不要截断、重复prompt的公共前缀缓存能不能复用再看模型前向动态形状导致无法预分配显存、序列过长导致计算量平方级增长量化、批处理、算子融合、KV cache都是手段最后看后处理与服务依赖解码策略是否复杂、有没有外部RPC串行调用。别一上来就谈分布式推理。面试官更想听你能不能先找瓶颈用profiler看耗时分布是GPU算力瓶颈还是数据搬运瓶颈是单请求延迟重要还是吞吐重要这两个维度决定了你选“加大batch”还是“增加并发”还是“换小模型”。举个例子在某个生成类服务里我们把后处理的超时重试逻辑改了延迟p99从1.2s降到600ms比量化模型收益还大。很多人一谈性能就想着量化往往忽略外围代码里的串行阻塞。先量化每一层耗时再动手优化才是稳的路径。4. 业务思维两问模型要给业务回答问题而不是只出指标4.1 A/B实验怎么设计才科学这道题关键在“怎么回答才不算拍脑袋”。我的常规框架是先定主指标一个OEC比如业务真正关心的转化率或收益不能同时挑七八个“显著”指标吹结果再确保实验可信AA分组验证、样本量估算、实验周期覆盖一个完整业务周期最后考虑多重比较看太多指标、做太多次中途观测都可能制造假显著。经常被追问的细节是样本量计算。可以用简单方式说明业务指标本身的方差越大需要的样本量越大预期提升幅度越小需要的样本量越大。样本量不够就别急着下结论一个常见的错误是上线第三天看到涨了2%就欢呼其实那可能只是随机波动。一个真实的翻车经历我们当时上线一个模型离线AUC涨了1.5%顺手开了个A/B第一周转化率涨了3%大家很高兴第二周变成跌1%。后来复盘发现第一周新模型分配到了高质量流量样本不够均衡。所以我现在要求所有实验在分析前先加一层“流量均衡性检查”对比实验组和对照组在核心画像维度上的分布一致性。4.2 损失函数选不好训练白忙一场把这个当成业务问题来答别光罗列公式。回归任务里MSE对异常值很敏感MAE梯度恒定但收敛慢Huber是两者的折中适合带噪声数据分类任务里CrossEntropy只管“分对分错”Focal Loss会把难样本权重提上来正负样本极度不平衡时损失函数本身就可以参与平衡排序任务里pointwise适合打分pairwise比大小listwise整体优化NDCG。关键答题技巧是要说出“你选某个损失是因为它和线上考核指标更接近”。比如业务考核的是AUC那训练目标就别执着于MSE的绝对值业务考核的是NDCG那pointwise可能不够至少要pairwise损失。场景常用损失注意点回归噪声小MSE收敛快对异常敏感回归有离群点Huber需要调delta二分类类别均衡CrossEntropy配合softmax二分类极不平衡Focal Loss调gamma别默认值硬套排序追求整体顺序Listwise实现复杂数据准备成本高一个小坑很多人用Focal Loss时不调gamma结果难样本被过度放大模型反而震荡。我一般从gamma2往下调同时配合类别权重一起看并在验证集上观察是否真的把难样本找对了。5. 手写代码两问光会说不如能算5.1 逻辑回归训练循环5分钟写出来有些候选人聊起来头头是道一写代码就露馅。我最常让人写的是逻辑回归因为它短、考基础、能看出工程风格。参考代码如下import numpy as np def sigmoid(z): # 数值稳定的sigmoid return np.where(z 0, 1 / (1 np.exp(-z)), np.exp(z) / (1 np.exp(z))) def compute_loss(y, prob): eps 1e-12 return -np.mean(y * np.log(prob eps) (1 - y) * np.log(1 - prob eps)) def train(X, y, lr0.1, epochs100, batch_size32): n, d X.shape w np.zeros(d) b 0.0 for epoch in range(epochs): idx np.random.permutation(n) for i in range(0, n, batch_size): batch_idx idx[i:i batch_size] X_b, y_b X[batch_idx], y[batch_idx] prob sigmoid(np.dot(X_b, w) b) grad_w np.dot(X_b.T, (prob - y_b)) / len(y_b) grad_b np.mean(prob - y_b) w - lr * grad_w b - lr * grad_b if epoch % 10 0: prob sigmoid(np.dot(X, w) b) print(fepoch {epoch}, loss {compute_loss(y, prob):.4f}) return w, b这里值得说的细节sigmoid在z很小时直接用 1/(1exp(-z)) 可能溢出写成np.where版本更稳梯度推导要会写因为sigmoid的导数和交叉熵正好相消所以prob-y这个形式不是记出来的是推出来的。能现场推导一次的人记忆会深刻很多。写完之后面试官常追加一句“如果loss没有下降你检查哪里”可以答检查数据是否归一化、学习率是否过大、标签是否错位不要一上来就调模型结构。这个回答比“调学习率”更完整因为它是按可能性排序的。5.2 top-k采样怎么写才不bug多大模型方向的提问会变成手写一个采样函数。参考实现import numpy as np def temperature_top_k_sampling(logits, k50, temperature1.0): # logits: 一维向量代表每个token的得分 if temperature 0: return int(np.argmax(logits)) probs np.exp(logits / temperature) probs probs / np.sum(probs) if k is not None and k 0: top_k_idx np.argsort(probs)[::-1][:k] top_k_probs probs[top_k_idx] top_k_probs top_k_probs / np.sum(top_k_probs) return int(np.random.choice(top_k_idx, ptop_k_probs)) return int(np.random.choice(len(probs), pprobs))这题考的是三点知道采样是在概率分布上做选择知道温度要先作用到logits再softmax知道Top-k截断后需要重新归一化。大部分只会调API的人到这就会卡住。实操心得写这种代码时别着急面试官更关心你的边界处理。比如temperature0要特判、概率相加要用浮点误差兜底、np.random.choice的p参数必须和为1。这些小细节最能看出你是不是天天在写生成代码而不是只会调现成接口。6. 项目拷问与复盘最后一题往往是“你自己”6.1 被追问到空白处时怎么稳住技术面末尾经常是“讲一个你最满意的项目”然后连环追问。这个环节没有标准答案但有一个很稳的应对框架STAR。先交代Situation当时要解决什么问题背景数据规模多大再讲Task你负责的是哪一块和谁协作然后是Action为什么选这个方案当时的备选项是哪些最后是Result带来了什么可量化的变化注意量化要真实可解释。既然面试官会追问数字那简历上每个指标都要能扛三连问这个数怎么算的为什么它重要它变化一个点对业务意味着什么答不上来前面印象分全扣。我自己面试别人时会特别留意候选人讲“失败项目”。能把“自己哪一步拍脑袋拍错了”说清楚的人通常比把所有项目都包装成成功的人靠谱得多。所以不用怕暴露问题要主动说出“如果重来我会先做特征校验而不是直接调模型”。这种反思能力比把项目讲得天花乱坠更能建立信任。6.2 15题背后的复盘方法论最后说点方法论角度的事。这15题不是题目清单而是四个能力维度的抽样原理理解、工程落地、业务思维和动手能力。我建议准备面试的人做一个错题本每次模拟面之后把自己没答好的问题按这四类归类然后补对应的功课。工程能力不够就补“上线监控和数据泄漏”原理不够就回去推自注意力和损失函数梯度业务不够就找两个曾经的项目重新算一遍收益动手不够就每天在本地写一个二十行的小函数。我第一次做技术面评审时也很紧张后来发现面试官真正想要的是一个“遇到问题知道怎么拆解”的人而不是背完所有面经的“行走知识库”。把这15题当成自检比当成押题价值大得多。最后说两句我自己的体会。这个行业变化很快但面试底层逻辑一直没变你能不能在有限信息下做出合理判断并且把判断讲得让人信服。很多候选人问我有没有捷径我的答案永远是“拿自己真实项目反复拆解”。把每个项目的背景、指标、替代方案、失败原因都理清楚面试官问什么你都能回到自己的主线上来。这套“AI模型面试15题”也只是帮你暴露盲区真正能救你的还是你动手做过的那几个项目。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑