AI Infra 面经汇总(百度/美团/快手等 · 牛客网)
来源:牛客网 AI Infra 面经帖(6篇),由 webinfo2md 自动提取整理
涵盖公司:百度 Paddle HPC、美团北斗、快手、AI Infra 独角兽等
| 属性 | 信息 |
|---|---|
| 来源网页数 | 6 |
| 整理时间 | 2026-03-17 |
| 主要公司 | 百度(Paddle HPC)、美团、快手等 |
| 岗位方向 | AI Infra / HPC / 推理优化 |
| 问题总数 | 53 |
来源网页列表
- https://www.nowcoder.com/feed/main/detail/1ab43816a7fa41d8b411bbc7fcdddd71
- https://www.nowcoder.com/feed/main/detail/1f978d3508e640c8b4a31564ed29ad7e
- https://www.nowcoder.com/feed/main/detail/0665be228728465ebf5dcefa8504a3a9
- https://www.nowcoder.com/feed/main/detail/841452f926a140babb84585de97c04aa
- https://www.nowcoder.com/feed/main/detail/c94734d67c9f461ab950bf1d800c5643
- https://www.nowcoder.com/feed/main/detail/eccb5cafdfce452c8d56374ef070685d
目录
行为问题
1. 请介绍一下你的商汤实习经历。
- 简短回答:分享在商汤的实习经历,包括主要工作内容和收获。
- 详细解答:
- 描述实习的具体项目和职责。
- 强调在团队中的角色和贡献。
- 讨论所学到的技能和经验。
- 追问预测:
- 你在实习中遇到的最大挑战是什么?
- 如何处理团队中的冲突?
- 关键词:
实习经历团队合作技能提升
项目经验
1. 请介绍大模型量化流程。
- 简短回答:大模型量化流程主要包括数据收集、模型训练、量化和验证等步骤。
- 详细解答:
- 数据收集:收集训练和验证数据。
- 模型训练:使用浮点数训练模型。
- 量化:
- 选择量化方案(如w8a8)。
- 应用量化技术。
- 验证:评估量化后模型的性能。
- 追问预测:
- 量化过程中可能遇到哪些问题?
- 如何评估量化模型的性能?
- 关键词:
大模型量化流程性能评估
算法/系统设计
1. 请问算子融合方式是什么?
- 简短回答:算子融合是将多个算子合并为一个算子的技术,以提高计算效率。
- 详细解答:
- 目的:减少内存访问和计算时间。
- 方法:
- 手动融合:开发者手动实现。
- 自动融合:编译器或框架自动处理。
- 追问预测:
- 你能举例说明算子融合的应用吗?
- 融合过程中可能遇到的挑战是什么?
- 关键词:
算子融合计算效率内存访问
2. 请问在商汤做的QAT工作是什么?
- 简短回答:QAT(量化感知训练)是在训练过程中模拟量化,以提高量化模型的性能。
- 详细解答:
- 流程:
- 在训练过程中引入量化噪声。
- 调整模型参数以适应量化。
- 优势:提高量化后模型的准确性。
- 流程:
- 追问预测:
- QAT与传统训练方法的区别是什么?
- QAT的局限性有哪些?
- 关键词:
QAT量化感知训练模型性能
3. 请问在线量化流程是什么?
- 简短回答:在线量化是在模型推理时动态调整量化参数的过程。
- 详细解答:
- 步骤:
- 收集推理时的激活值。
- 动态调整量化参数。
- 应用量化模型进行推理。
- 优点:适应性强,能提高推理精度。
- 步骤:
- 追问预测:
- 在线量化与离线量化的区别是什么?
- 如何评估在线量化的效果?
- 关键词:
在线量化动态调整推理精度
4. 请问pr的ort算子实现流程是什么?
- 简短回答:PR的ORT(优化运行时)算子实现流程包括算子定义、优化和执行等步骤。
- 详细解答:
- 算子定义:明确算子的输入输出。
- 优化:通过图优化技术提升算子性能。
- 执行:在运行时调用优化后的算子。
- 追问预测:
- 你能详细描述优化的具体方法吗?
- ORT算子的性能评估标准是什么?
- 关键词:
ORT算子实现性能优化
5. 请问c++八股知识有哪些?
- 简短回答:C++八股知识包括基本语法、面向对象特性、STL等。
- 详细解答:
- 基本语法:数据类型、控制结构、函数等。
- 面向对象特性:封装、继承、多态。
- STL:标准模板库的使用。
- 追问预测:
- 你在项目中如何应用这些知识?
- C++的内存管理机制是什么?
- 关键词:
C++基本语法面向对象
6. 请问数组和链表的区别是什么?
- 简短回答:数组是固定大小的连续内存块,而链表是动态大小的节点结构。
- 详细解答:
- 数组:
- 优点:快速访问。
- 缺点:大小固定,插入删除效率低。
- 链表:
- 优点:动态大小,插入删除效率高。
- 缺点:访问速度慢。
- 数组:
- 追问预测:
- 在什么场景下选择链表而不是数组?
- 如何实现链表的基本操作?
- 关键词:
数组链表内存结构
7. 请问c++面向对象的特性是什么?
- 简短回答:C++的面向对象特性包括封装、继承和多态。
- 详细解答:
- 封装:将数据和方法封装在类中。
- 继承:子类可以继承父类的属性和方法。
- 多态:允许不同类的对象以相同方式调用方法。
- 追问预测:
- 你能举例说明多态的应用吗?
- 如何实现类的继承?
- 关键词:
封装继承多态
8. 请问卷积网络的量化流程是什么?
- 简短回答:卷积网络的量化流程包括训练、量化和验证等步骤。
- 详细解答:
- 训练:使用浮点数训练卷积网络。
- 量化:将权重和激活值转换为低精度格式。
- 验证:评估量化后模型的性能。
- 追问预测:
- 量化过程中如何选择量化策略?
- 量化对模型性能的影响如何评估?
- 关键词:
卷积网络量化流程模型验证
9. 请问大模型量化流程的细节是什么?
- 简短回答:大模型量化流程的细节包括选择量化方案、应用量化技术和性能验证。
- 详细解答:
- 选择量化方案:如w4a16、w8a8等。
- 应用量化技术:包括权重剪枝、激活量化等。
- 性能验证:通过测试集评估量化模型的准确性。
- 追问预测:
- 量化方案的选择依据是什么?
- 如何处理量化带来的精度损失?
- 关键词:
大模型量化细节性能验证
10. 请问fp8是什么?
- 简短回答:FP8是一种8位浮点数格式,用于减少模型存储和计算的开销。
- 详细解答:
- 结构:包括符号位、指数位和尾数位。
- 优点:在保持模型性能的同时,显著降低内存占用。
- 追问预测:
- FP8与FP32的比较如何?
- 在什么情况下使用FP8?
- 关键词:
FP8浮点数格式内存优化
11. 请问常用的加速手段有哪些?
- 简短回答:常用的加速手段包括连续批处理、投机解码等。
- 详细解答:
- 连续批处理:通过批量处理提高计算效率。
- 投机解码:提前计算可能的结果以减少延迟。
- 追问预测:
- 这些加速手段的缺陷是什么?
- 如何选择合适的加速策略?
- 关键词:
加速手段连续批处理投机解码
12. 请问这些加速方法各自的缺陷是什么?
- 简短回答:加速方法的缺陷包括复杂性增加、资源浪费等。
- 详细解答:
- 复杂性增加:实现和维护成本高。
- 资源浪费:在某些情况下可能导致资源的低效使用。
- 追问预测:
- 如何评估加速方法的有效性?
- 有哪些优化策略可以减少缺陷?
- 关键词:
加速方法缺陷资源管理
13. 假定现在有一个trace好的graph,请你设计一个图模式匹配引擎,能把图中所有的conv norm融合成convnorm算子。
- 简短回答:设计图模式匹配引擎需考虑图的遍历、模式识别和算子替换。
- 详细解答:
- 图遍历:使用深度优先或广度优先算法遍历图。
- 模式识别:识别conv和norm的组合模式。
- 算子替换:将识别的模式替换为convnorm算子。
- 追问预测:
- 你如何处理图中的复杂模式?
- 如何评估匹配引擎的性能?
- 关键词:
图模式匹配conv norm算子融合
算法
1. 请做题layernorm(c++/cuda)。
- 简短回答:LayerNorm是对每个样本的特征进行归一化的技术,通常在深度学习中使用。
- 详细解答:
- 实现步骤:
- 计算每个样本的均值和方差。
- 进行归一化处理。
- 应用缩放和偏移参数。
- CUDA实现:利用CUDA并行计算加速归一化过程。
- 实现步骤:
- 追问预测:
- LayerNorm与BatchNorm的区别是什么?
- 如何优化LayerNorm的实现?
- 关键词:
LayerNorm归一化CUDA
2. 当训练推理卡规模倍增的情况下,最容易产生瓶颈的位置可能是什么?
- 简短回答:在训练推理卡规模倍增时,数据传输和计算资源可能成为瓶颈。
- 详细解答:
- 数据传输:大规模数据传输可能导致延迟。
- 计算资源:GPU计算能力可能无法满足需求。
- 优化方案:
- 使用更高效的数据传输协议。
- 优化计算任务的调度。
- 追问预测:
- 你如何识别瓶颈?
- 有哪些具体的优化措施?
- 关键词:
瓶颈数据传输计算资源
3. 当进行GEMM计算时,一定可以保证它是一个计算瓶颈算子吗,如果要你去优化它,你的思路是什么?
- 简短回答:GEMM计算不一定是瓶颈,优化思路包括算法改进和硬件加速。
- 详细解答:
- 分析:检查数据依赖和内存访问模式。
- 优化思路:
- 使用更高效的算法(如Strassen算法)。
- 利用GPU并行计算。
- 追问预测:
- 你能详细描述GEMM的优化方法吗?
- 如何评估优化效果?
- 关键词:
GEMM计算瓶颈优化
4. 手撕:手写包含GQA的attention模块实现。
- 简短回答:GQA(图像问答)中的attention模块用于聚焦于相关信息。
- 详细解答:
- 实现步骤:
- 计算注意力权重。
- 加权求和得到输出。
- 代码示例:
// 示例代码
void attention(float* queries, float* keys, float* values, float* output) {
// 计算注意力权重
// 加权求和
}
- 实现步骤:
- 追问预测:
- 你如何处理多头注意力?
- 如何优化attention模块的性能?
- 关键词:
GQAattention模块实现
5. 介绍一下Transformer的架构,和传统RNN循环神经网络相比有何优势。
- 简短回答:Transformer架构基于自注意力机制,具有并行处理和长距离依赖建模的优势。
- 详细解答:
- 架构:
- 编码器-解码器结构。
- 自注意力机制。
- 优势:
- 并行处理:相比RNN,Transformer可以同时处理所有输入。
- 长距离依赖:自注意力机制可以捕捉长距离依赖关系。
- 架构:
- 追问预测:
- Transformer的缺点是什么?
- 如何在实际应用中选择模型?
- 关键词:
TransformerRNN自注意力
6. Transformer中参数都分布在哪里,参数量最大的是哪部分?计算量最大的是哪部分,为什么?
- 简短回答:Transformer的参数主要分布在自注意力层和前馈网络中,参数量最大的是自注意力层。
- 详细解答:
- 参数分布:
- 自注意力层:包含多个权重矩阵。
- 前馈网络:包含激活函数和权重矩阵。
- 计算量:自注意力层的计算量最大,因为需要计算所有输入之间的关系。
- 参数分布:
- 追问预测:
- 如何优化Transformer的计算效率?
- 你能详细描述自注意力的计算过程吗?
- 关键词:
Transformer参数分布计算量
7. 讲讲大模型的量化,讲量化算子。
- 简短回答:大模型的量化通过减少参数精度来降低模型大小和加速推理。
- 详细解答:
- 量化方法:
- 权重量化:将浮点数权重转换为低精度格式。
- 激活量化:在推理时动态量化激活值。
- 量化算子:实现量化的基本操作,如量化和反量化。
- 量化方法:
- 追问预测:
- 量化对模型性能的影响如何评估?
- 如何选择合适的量化策略?
- 关键词:
大模型量化量化算子
8. 详细讲pd分离。
- 简短回答:PD分离是将模型的前向和反向传播分开,以提高计算效率。
- 详细解答:
- 原理:通过分离计算图,减少内存占用。
- 实现:
- 前向传播时记录计算图。
- 反向传播时使用记录的图进行梯度计算。
- 追问预测:
- PD分离的优缺点是什么?
- 如何在实际项目中应用PD分离?
- 关键词:
PD分离计算效率内存优化
9. 详细讲paged atten。
- 简短回答:Paged Attention是一种优化的注意力机制,用于处理大规模输入。
- 详细解答:
- 原理:通过分块处理输入,减少计算复杂度。
- 实现:
- 将输入分为多个页面。
- 逐页计算注意力。
- 追问预测:
- Paged Attention与传统注意力的区别是什么?
- 如何评估Paged Attention的性能?
- 关键词:
Paged Attention优化计算复杂度
10. LC25题:K个一组翻转链表。
- 简短回答:K个一组翻转链表是将链表每K个节点翻转的经典算法题。
- 详细解答:
- 实现步骤:
- 遍历链表,分组处理。
- 对每组进行翻转。
- 连接翻转后的组。
- 代码示例:
ListNode* reverseKGroup(ListNode* head, int k) {
// 实现翻转逻辑
}
- 实现步骤:
- 追问预测:
- 如何处理链表长度不足K的情况?
- 你能优化这个算法吗?
- 关键词:
链表翻转算法题
11. 写cuda算子:前缀和。实现一个base的,讲优化方法。
- 简短回答:前缀和的CUDA算子通过并行计算加速求和过程。
- 详细解答:
- 实现步骤:
- 使用CUDA核函数并行计算前缀和。
- 采用共享内存优化数据访问。
- 代码示例:
__global__ void prefixSumKernel(int* input, int* output, int n) {
// CUDA实现前缀和
}
- 实现步骤:
- 追问预测:
- 如何优化前缀和的计算效率?
- 你能详细描述CUDA的内存管理吗?
- 关键词:
CUDA前缀和并行计算
12. 写cuda算子gemm:实现一个base的,讲优化方法。
- 简短回答:GEMM的CUDA算子通过并行计算实现矩阵乘法。
- 详细解答:
- 实现步骤:
- 使用CUDA核函数实现矩阵乘法。
- 利用共享内存和块划分优化性能。
- 代码示例:
__global__ void gemmKernel(float* A, float* B, float* C, int N) {
// CUDA实现GEMM
}
- 实现步骤:
- 追问预测:
- 如何优化GEMM的计算性能?
- 你能详细描述CUDA的线程管理吗?
- 关键词:
CUDAGEMM矩阵乘法
13. RL异步调度有哪些,优缺点是什么?
- 简短回答:RL异步调度包括多线程和分布式调度,具有提高效率和降低延迟的优点。
- 详细解答:
- 方法:
- 多线程调度:多个线程同时执行任务。
- 分布式调度:在多个机器上分配任务。
- 优缺点:
- 优点:提高资源利用率,减少等待时间。
- 缺点:实现复杂性增加,可能导致数据一致性问题。
- 方法:
- 追问预测:
- 你能详细描述异步调度的实现吗?
- 如何评估调度策略的效果?
- 关键词:
RL异步调度优缺点
14. RL异步调度算法上需要做哪些改进?
- 简短回答:改进RL异步调度算法可以集中在提高效率和降低复杂性。
- 详细解答:
- 改进方向:
- 优化任务分配策略。
- 提高数据一致性管理。
- 实现方法:
- 使用更高效的调度算法。
- 引入缓存机制减少数据传输。
- 改进方向:
- 追问预测:
- 你能详细描述改进的具体方法吗?
- 如何评估改进效果?
- 关键词:
RL异步调度改进
15. 手撕代码:合并k个升序链表。
- 简短回答:合并K个升序链表可以使用优先队列或分治法实现。
- 详细解答:
- 实现步骤:
- 使用优先队列维护当前最小节点。
- 逐个合并链表。
- 代码示例:
ListNode* mergeKLists(vector<ListNode*>& lists) {
// 实现合并逻辑
}
- 实现步骤:
- 追问预测:
- 如何处理链表为空的情况?
- 你能优化合并算法吗?
- 关键词:
链表合并升序
16. 手撕代码: LRU。
- 简短回答:LRU(最近最少使用)缓存算法通过双向链表和哈希表实现。
- 详细解答:
- 实现步骤:
- 使用哈希表存储键值对。
- 使用双向链表维护访问顺序。
- 代码示例:
class LRUCache {
public:
LRUCache(int capacity) {
// 初始化LRU缓存
}
int get(int key) {
// 获取缓存值
}
void put(int key, int value) {
// 更新缓存
}
};
- 实现步骤:
- 追问预测:
- 如何处理缓存容量满的情况?
- 你能优化LRU的实现吗?
- 关键词:
LRU缓存算法
17. 手撕代码: online-softmax和flash-attn伪代码。
- 简短回答:online-softmax和flash-attn是用于加速注意力计算的技术。
- 详细解答:
- online-softmax:动态计算softmax以减少内存占用。
- flash-attn:通过优化计算流程加速注意力机制。
- 伪代码示例:
def online_softmax(logits):
# 实现online-softmax逻辑
def flash_attention(queries, keys, values):
# 实现flash-attn逻辑
- 追问预测:
- 你能详细描述这两种方法的实现吗?
- 如何评估加速效果?
- 关键词:
online-softmaxflash-attn注意力计算
总结
| 类别 | 问题数 | 关键技能点 |
|---|---|---|
| 行为问题 | 1 | 实习经历、团队合作 |
| 项目经验 | 1 | 大模型量化流程 |
| 算法/系统设计 | 13 | 算子融合、QAT、量化流程等 |
| 算法 | 17 | CUDA编程、链表操作、LRU等 |
其他
1. 请问壁仞给多少
- 简短回答:壁仞的薪资水平因岗位和经验而异,具体数额需面试时确认。
- 详细解答:
- 壁仞科技的薪资通常与行业标准相符,可能会根据个人能力和经验进行调整。
- 建议在面试中询问具体薪资范围,以便更好地了解。
- 追问预测:
- 壁仞的薪资结构是怎样的?
- 是否有年终奖金或其他福利?
- 公司的薪资调整机制是什么?
- 关键词:
薪资壁仞面试福利
2. 可以问下佬摩尔二面的内容吗
- 简短回答:二面内容通常包括技术问题、项目经验和行为面试。
- 详细解答:
- 技术问题可能涉及具体的编程语言、算法和数据结构。
- 项目经验部分会询问候选人过去的工作经历及其在项目中的角色。
- 行为面试则关注候选人的团队合作、解决问题的能力等。
- 追问预测:
- 二面通常有几位面试官?
- 面试时会使用什么样的技术工具?
- 是否有特定的面试题库?
- 关键词:
二面面试内容技术问题项目经验
3. 请解释并介绍一下 Roofline 模型,如何判断性能已经达到计算瓶颈
- 简短回答:Roofline 模型是一种可视化工具,用于评估计算性能与内存带宽的关系。
- 详细解答:
- Roofline 模型通过图形展示计算能力(FLOPS)与内存带宽的限制。
- 性能达到瓶颈的标志是计算性能接近 Roofline 的水平,且内存带宽成为限制因素。
- 通过分析计算密集型和内存密集型操作,可以判断性能瓶颈。
- 追问预测:
- 如何优化以提高性能?
- Roofline 模型的实际应用案例有哪些?
- 该模型的局限性是什么?
- 关键词:
Roofline模型性能瓶颈计算能力内存带宽
4. 请介绍一下你理解的 Flash-attention
- 简短回答:Flash-attention 是一种高效的注意力机制,旨在减少计算复杂度和内存使用。
- 详细解答:
- Flash-attention 通过优化注意力计算,降低了时间复杂度。
- 其核心思想是利用稀疏性和并行计算来提升效率。
- 适用于大规模模型,尤其是在自然语言处理任务中。
- 追问预测:
- Flash-attention 与传统注意力机制的区别是什么?
- 在实际应用中如何实现 Flash-attention?
- 该机制的性能提升幅度如何?
- 关键词:
Flash-attention注意力机制计算复杂度内存使用
5. 对于性能优化的定位和瓶颈的检测,你有什么方法吗
- 简短回答:性能优化可以通过分析工具、代码审查和基准测试等方法进行。
- 详细解答:
- 使用性能分析工具(如 gprof、Valgrind)来识别瓶颈。
- 进行代码审查,查找潜在的低效算法或数据结构。
- 通过基准测试对比不同实现的性能,找出最优解。
- 追问预测:
- 你常用的性能分析工具有哪些?
- 如何选择合适的优化策略?
- 在优化过程中遇到的挑战是什么?
- 关键词:
性能优化瓶颈检测分析工具基准测试
6. 了解GPU的cudacore、Tensorcore吗,你常用的GPU有哪些,他们的显存和显存带宽有多大?
- 简短回答:CUDA Core 和 Tensor Core 是 NVIDIA GPU 中的两种计算单元,分别用于通用计算和深度学习加速。
- 详细解答:
- CUDA Core:用于执行基本的计算任务,适合各种计算密集型应用。
- Tensor Core:专为深度学习优化,能够加速矩阵运算。
- 常用的 GPU 包括 NVIDIA 的 A100、V100 和 RTX 3080,显存和带宽各有不同:
GPU型号 显存 显存带宽 A100 40GB 1555 GB/s V100 32GB 900 GB/s RTX 3080 10GB 760 GB/s
- 追问预测:
- 如何选择合适的 GPU 进行深度学习训练?
- Tensor Core 的使用场景有哪些?
- 显存和带宽对模型训练的影响是什么?
- 关键词:
CUDA CoreTensor CoreGPU显存带宽
7. H100相比A100有哪些改进
- 简短回答:H100 在计算性能、内存带宽和能效方面相较于 A100 有显著提升。
- 详细解答:
- 计算性能:H100 提供更高的浮点运算能力,适合更复杂的模型。
- 内存带宽:H100 的显存带宽更大,支持更快的数据传输。
- 能效:H100 在相同功耗下提供更高的性能,提升了能效比。
- 追问预测:
- H100 的应用场景有哪些?
- 在实际使用中,H100 的性能提升幅度如何?
- H100 的价格与 A100 相比如何?
- 关键词:
H100A100性能提升内存带宽能效
8. DP、TP-SP的计算通信重叠原理,具体是什么通信和什么计算重叠
- 简短回答:DP(数据并行)和 TP-SP(模型并行)通过重叠计算和通信来提高训练效率。
- 详细解答:
- DP:在数据并行中,多个 GPU 同时处理不同的数据批次,计算和通信可以重叠。
- TP-SP:在模型并行中,模型的不同部分在不同 GPU 上计算,通信与计算也可以重叠。
- 具体重叠的内容包括:
- 数据传输与前向传播计算
- 反向传播计算与梯度传输
- 追问预测:
- 如何实现 DP 和 TP-SP 的有效重叠?
- 在实际应用中遇到的挑战是什么?
- 这种重叠对训练时间的影响有多大?
- 关键词:
DPTP-SP计算通信重叠训练效率
9. launch bound是什么含义H2D和D2H可以重叠吗
- 简短回答:Launch bound 是指 GPU 核心启动的时间限制,H2D(Host to Device)和 D2H(Device to Host)可以在某些情况下重叠。
- 详细解答:
- Launch Bound:指的是 GPU 核心启动的延迟,影响计算任务的调度。
- H2D 和 D2H 重叠:
- 在数据传输过程中,H2D 和 D2H 可以通过流(streams)实现重叠。
- 通过合理的流管理,可以在数据传输的同时进行计算,提高效率。
- 追问预测:
- 如何优化数据传输以减少 launch bound?
- 在实际应用中如何管理流?
- H2D 和 D2H 重叠的最佳实践是什么?
- 关键词:
launch boundH2DD2H重叠流管理