岗位索引

算法工程师面试题库第 9 页

算法工程师面试题解析,覆盖机器学习、大模型、推荐、意图识别和模型评估。

546 道题 29 个公司 130 个知识点

算法相关面试题第 9 页

连接视觉编码器和 LLM 时,Q-Former 与 LLaVA MLP Adaptor 各有什么优缺点,如何选择?

这题考多模态大模型里视觉特征到语言模型 token 空间的连接器设计。好的回答要说明二者都在解决维度对齐、语义对齐、信息压缩和训练稳定性问题,但 Q-Former 更像带可学习查询的语义压缩器,MLP projector 更像简单直接的视觉 token 映射器,选择取决于数据规模、视觉细节需求、上下文预算、延迟和冻结策略。

如何手写 Multi-Head Self-Attention,Q/K/V 投影、分头、mask 和输出拼接如何实现?

这题考 Transformer 注意力层的可实现细节。好的回答不能只背公式,而要讲清输入输出形状、Q/K/V 一次投影或三次投影、head 维度拆分、scaled dot-product attention、padding/causal mask 广播、softmax/dropout、head 合并、输出投影以及常见数值和 shape bug。

同题还出现在 1 个公司岗位

大模型推理变慢时,如何从序列长度、batch、KV Cache、量化、FlashAttention 和 GPU 资源排查?

这题考 LLM 推理性能诊断闭环。高质量回答应先定义慢在哪里,再拆分队列、prefill、decode、KV Cache、batch 调度、attention kernel、量化、GPU 利用率和服务链路,用指标定位瓶颈,而不是一上来堆优化名词。

同题还出现在 1 个公司岗位

长上下文推理中 KV Cache 为什么可能被污染,如何做缓存隔离、清理和复用边界控制?

这题考的是大模型推理缓存的正确性与安全边界:KV Cache 本身是某个模型、某段 token、某套位置编码和注意力 mask 下的中间状态;一旦跨请求、跨会话、跨租户、跨模板版本或跨可变上下文错误复用,就可能产生答案串扰、隐私泄漏、事实陈旧或位置错乱。

RAG 中检索文档正确但生成答案错误时,如何定位 Prompt、上下文组织、模型推理和后处理问题?

这题考的是 RAG badcase 的责任拆解:当正确证据已经被检索到,问题就不再主要是召回率,而要检查证据是否进入 prompt、是否被截断或排序淹没、指令是否约束模型使用证据、模型是否误读冲突信息、解码是否不稳定,以及后处理是否改坏答案。

PPO clip 在 advantage 为正或为负时分别限制什么,为什么这样能稳定策略更新?

这题考 PPO clipped surrogate objective 的符号细节。好的回答要能从 r(theta)=pi_new(a|s)/pi_old(a|s) 和 advantage A 的正负出发说明:A 为正时,这个动作比预期好,PPO 限制新策略把它概率提高得过多,也就是限制 ratio 的上界;A 为负时,这个动作比预期差,PPO 限制新策略把它概率降低得过多,也就是限制 ratio 的下界。这样用保守目标抑制单步策略漂移,从而提升训练稳定性。

LoRA 微调通常插入哪些层,epoch、learning_rate 等常用训练参数如何设置?

这题考 LoRA 微调的工程落点:适配器插到哪些线性层,常用 rank、alpha、dropout、epoch、learning_rate、batch 和 scheduler 如何取舍。好的回答不能只说冻结原模型、训练低秩矩阵,而要能根据任务类型、数据规模、显存预算和过拟合风险解释从 q/v 到 attention+MLP 的 target module 选择,以及为什么 LoRA 学习率通常比全参微调更高但仍需验证集约束。

训练中把 loss 除以 10 和把学习率除以 10 有什么区别?

这题考优化器细节:把 loss 除以 10 会先把反向传播得到的梯度缩小 10 倍;把学习率除以 10 是在优化器更新参数时缩小 step size。二者在最简单的无动量 SGD、无正则、无裁剪场景下近似等价,但在 Adam/AdamW、动量、weight decay、gradient clipping、混合精度、多任务 loss、分布式梯度累积等真实训练中会产生明显差异。

大模型后训练中,PPO 为什么通常被视为 on-policy,importance sampling 起什么作用?

PPO 通常被视为 on-policy,是因为它的训练样本来自当前或刚刚冻结的行为策略,更新只在这批新 rollout 附近做有限幅度的策略改进,而不是长期复用任意历史策略产生的数据。importance sampling 在 PPO 中主要通过新旧策略概率比修正采样策略和待优化策略之间的小偏差,使我们能用旧策略采到的样本估计新策略目标;但由于只修正动作概率、对状态分布偏移和大幅策略漂移无能为力,所以它不能把 PPO 变成真正意义上的通用 off-policy 算法。

Qwen 支持 128K 长上下文时,如何降低显存占用和注意力计算复杂度?

Qwen 这类支持 128K 长上下文的大模型,不能只靠把最大位置编码拉长来解决问题,核心挑战是注意力计算随序列长度接近平方增长、KV cache 随层数和上下文长度线性增长、训练激活和通信也会放大。常见工程组合包括 RoPE 外推或缩放、FlashAttention 类内存高效注意力、GQA/MQA 降低 KV cache、paged/quantized KV cache、chunked prefill、序列并行或 context parallel、激活重计算,以及在可接受的质量边界内使用滑窗、稀疏或分块注意力。回答时要区分降低显存峰值、降低 KV cache、降低真实计算复杂度三件事。

Qwen 这类大模型做多语言支持时,数据配比、分词、对齐训练和评估应如何设计?

Qwen 这类大模型做多语言支持时,设计重点不是简单增加几种语言语料,而是要在数据配比、tokenizer 覆盖、跨语言指令对齐、偏好训练、安全策略和评估体系之间做平衡。高资源语言提供通用能力和知识密度,低资源语言需要通过采样温度、质量过滤、合成数据和翻译增强避免被淹没;tokenizer 要兼顾不同文字系统的压缩率和 byte fallback;对齐训练要避免只对中文或英文有效;评估也要覆盖语言质量、任务能力、文化语境、安全和 code-switch 等真实场景。

大模型训练显存如何估算,参数、梯度、优化器状态、激活和临时缓存各占哪些部分?

大模型训练显存可以先拆成 model states、activations、temporary buffers、通信缓存和碎片/框架开销。model states 包括参数、梯度和优化器状态;以 Adam 混合精度训练为例,常见粗估是参数 bf16/fp16 2P、梯度 2P、Adam 一阶和二阶矩 fp32 8P、可选 fp32 master weights 4P,总计约 12P 到 16P bytes。除此之外,activation 随 batch、sequence length、hidden size 和层数增长,长上下文 attention 还可能带来平方项;临时缓存包括 attention workspace、GEMM workspace、logits、通信 bucket、all-gather buffer 和内存碎片。估算时要同时考虑并行策略、ZeRO 分片、activation checkpointing、精度和 micro-batch。

同题还出现在 1 个公司岗位

多模态模型中跨模态注意力机制如何设计,如何举例说明不同模态 token 的对齐和融合?

这题考多模态 Transformer 中跨模态注意力的设计能力。好的回答要讲清楚不同模态 token 如何产生、如何注入位置和类型信息、如何做 cross-attention 或 co-attention、如何处理长度差异和噪声、如何训练对齐,并用图文例子说明文字 token 通过 query 关注图像 patch 或 object token,从而把语义、空间位置和细粒度属性融合起来。

文生图模型的核心框架如何设计,文本编码器、生成主干和图像解码器如何协同?

这题考文生图模型的整体框架理解。好的回答要讲清楚文本编码器把 prompt 变成条件表示,生成主干通常在像素或 latent 空间逐步生成图像,图像解码器把 latent 还原为像素;同时要说明 cross-attention、扩散噪声预测、时间步条件、classifier-free guidance、VAE 编解码、训练损失和推理采样如何协同。

Agent 微调中如何选择和清洗训练样本,哪些样本质量问题最容易改变模型行为?

这题考 Agent 微调数据的样本选择与清洗能力。与普通 SFT 不同,Agent 样本不仅有问答文本,还包含意图、计划、工具选择、参数、工具结果、状态变化、安全边界和最终回复。回答要说明哪些样本值得训练、哪些噪声会改变模型行为,以及如何用指标验证。

同题还出现在 1 个公司岗位

LLM 推理中做 KV Cache sparse 计算时,vLLM/Triton 实现为什么可能选择稀疏索引或稀疏块,而不是直接用 dense mask?

这题考的是稀疏注意力在推理引擎里的真实性能取舍。dense mask 在数学上能表达稀疏模式,但计算和访存仍接近 dense attention;而稀疏索引或稀疏块能让 kernel 只读取和计算被选中的 KV cache,从而节省显存带宽、减少无效 FLOPs,并更适合 vLLM 这类分页 KV 和 Triton 块级并行实现。

SmoothQuant 为什么要做 activation/weight 平滑?平滑参数如何设定,用激活分布判断模型是否适合时应关注 input channel 还是 output channel?

这道题考察对 SmoothQuant 的核心动机、等价变换和校准维度的理解。回答时要先说明 LLM 的激活 outlier 会让 INT8 activation 量化特别困难,而 SmoothQuant 通过按输入通道缩放,把一部分动态范围压力从 activation 平滑地迁移到 weight 上,从而让 W8A8 推理更稳定。关键点不是笼统地说做归一化,而是说明缩放不改变浮点计算语义、参数需要用校准集和逐层误差选择,并明确判断激活分布时主要看线性层的 input channel 维度。

AWQ 和 GPTQ 的量化原理有什么区别?在 LLM 推理部署中它们各自适合什么取舍?

这道题要求区分 AWQ 和 GPTQ 都是大模型后训练量化方法,但优化目标和工程取舍不同。GPTQ 更像基于二阶近似的逐块权重量化误差补偿,利用校准激活构造 Hessian 近似来最小化层输出重构误差;AWQ 则强调 activation-aware 的显著权重保护,通过观察激活通道重要性和缩放搜索减少关键通道误差。好的回答要能讲清原理差异、校准成本、精度与速度、kernel 适配、以及在 LLM 推理部署中的选择标准。

分布式 LLM 训练中 AllReduce、AllGather、ReduceScatter 和 AllToAll 分别解决什么通信问题,哪些并行场景会用到它们?

这道题考察分布式训练中 collective communication 的语义和并行策略映射。回答要先把 AllReduce、AllGather、ReduceScatter、AllToAll 的输入输出关系讲清,再说明它们分别解决梯度汇总、参数或激活拼接、归约后分片、个性化交换等问题。进一步要能联系数据并行、张量并行、ZeRO/FSDP、序列并行、专家并行和 MoE token dispatch,指出通信量、同步开销、拓扑和 overlap 对训练效率的影响。

如何根据模型参数量、训练 token 数、FLOPs、GPU 数量和硬件利用率估算 LLM 训练时间?

这道题考察能否把 LLM 训练时间从经验判断转成可计算的工程估算。核心公式是总训练 FLOPs 除以集群有效算力:dense decoder-only 模型可用约 6 × 参数量 × token 数估算前向加反向训练 FLOPs,再除以 GPU 数、单卡峰值 FLOPs 和硬件利用率或 MFU。好的回答还要说明单位换算、序列长度和 attention 开销、MoE active 参数、数据并行扩展效率、checkpoint/eval/restart 等 wall-clock 修正因素。

LLM 训练过程中应该监控哪些指标,如何用 loss、梯度、吞吐、显存、GPU 利用率、checkpoint 和评测集发现异常?

这道题考察 LLM 训练监控体系,而不是只问 loss 曲线。完整回答要覆盖模型质量、数值稳定性、吞吐性能、资源利用、数据管道、checkpoint 可靠性和周期评测。更重要的是说明如何用这些指标定位异常:loss spike 可能来自坏数据或学习率问题,梯度爆炸会伴随 grad norm 和 NaN,吞吐下降可能来自 dataloader、通信或 straggler,显存增长可能是泄漏或碎片,评测集退化可能暴露过拟合、数据污染或训练分布偏移。