岗位索引

C/C++ 工程师面试题库第 3 页

C/C++ 工程师面试题解析,覆盖 Linux、网络编程、内存和并发基础。

117 道题 11 个公司 63 个知识点

C/C++相关面试题第 3 页

手写 CUDA All-Reduce/归约 kernel 时,如何设计线程内与 block 内归约,并说明 block 间同步和跨 GPU AllReduce 通常为什么需要多 kernel、cooperative groups 或 NCCL?

这题要先澄清 All-Reduce 在面试手写题里的边界:单 GPU 内通常先写归约 kernel,再解释 block 间同步为什么不能靠普通 __syncthreads 解决;真正跨 GPU AllReduce 属于通信 collective,通常交给 NCCL 或多阶段通信算法。

TensorRT-LLM(TRT-LLM)和 vLLM 在 LLM 推理部署中有什么区别,TRT-LLM 主要靠哪些机制加速?

这题考 LLM 推理部署中的系统取舍。好的回答要把 vLLM 和 TensorRT-LLM 区分为不同工程侧重点:vLLM 更像面向在线服务的通用推理引擎和调度系统,强调 PagedAttention、连续批处理、OpenAI 兼容服务和模型接入灵活性;TensorRT-LLM 更贴近 NVIDIA GPU 上的编译优化与高性能运行时,强调 TensorRT engine、算子融合、专用 kernel、量化、KV cache、in-flight batching 和多 GPU 通信优化。不能简单说谁一定更快,要看模型、硬件、batch、延迟目标和工程成本。

高斯卷积核如何用可分离卷积等方式优化,时间复杂度和效果会怎样变化?

高斯卷积核优化的核心是利用数学结构和硬件特性减少重复计算。二维高斯核可分解为横向一维高斯和纵向一维高斯的外积,因此一次 K×K 卷积可以改成两次长度 K 的一维卷积,理论复杂度从每像素 O(K²) 降到 O(2K),效果在同一离散核和边界策略下基本等价。进一步还可以通过截断半径、缓存、SIMD、定点化、近似盒滤波或递归滤波继续提速,但要说明精度、边缘和伪影取舍。

积分图如何实现均值滤波,为什么能把窗口求和从面积相关降到常数时间?

积分图用于均值滤波的关键是把每个像素左上方矩形区域的累计和预先存起来。这样任意轴对齐窗口的像素和都可以由四个角的积分值相加相减得到,不再需要逐个遍历窗口内所有像素。对半径为 r 的均值滤波,朴素方法每个像素要累加 (2r+1)² 个值,而积分图在预处理 O(HW) 后,每个窗口求和只需常数次读取和加减,再除以窗口面积即可得到均值。

CUDA 算子优化后如何做公平 benchmark,排除硬件和精度差异,并证明性能提升真实有效?

这题考 CUDA 算子优化后的性能证明能力。好答案要建立公平 benchmark:固定硬件、驱动、CUDA/cuDNN/cuBLAS 版本、dtype、shape、batch、warmup、stream、同步点和统计方法;排除异步计时、首次编译、温度降频、不同 GPU 架构和精度算力差异;再用 Nsight/NCU 证明瓶颈从访存、计算、occupancy、launch 或同步角度确实改善,并用精度回归和端到端指标证明收益真实。

vLLM 和 SGLang 在 LLM 推理引擎中分别解决什么问题,如何从 PagedAttention、前缀复用和请求调度角度比较?

这题考 LLM 推理引擎的系统理解,而不是问两个项目谁更快。好答案要说明 vLLM 的核心公共概念是提升 serving 吞吐和显存利用率,典型抓手包括 PagedAttention、KV cache 分页管理、continuous batching 和 prefix caching;SGLang 更强调面向复杂 LLM 应用的编程/运行时,围绕结构化生成、多轮/多调用流程、前缀复用、调度和缓存优化降低复杂请求的执行成本。比较时要从 KV 管理、前缀复用、请求调度、结构化输出、内存压力和 workload fit 讲边界,避免虚构版本特性。

为什么 CPU 通常需要多级 Cache,而 GPU 更强调 shared memory、coalescing 和高带宽并行访存?

这题考 CPU/GPU 架构差异和访存优化思路。好答案要说明 CPU 面向低延迟、强控制流、少量复杂线程,依赖多级 Cache、分支预测和乱序执行降低单线程访存延迟;GPU 面向高吞吐、大量线程并行,用 warp 调度隐藏延迟,更强调 coalesced global memory access、shared memory 显式复用、高带宽和 occupancy。不能简单说 GPU 没有 Cache,而要说明 GPU 也有 L1/L2/纹理等缓存,只是优化重点从自动低延迟缓存转向显式数据布局和并行带宽利用。

Qwen 各代模型结构演进通常体现在哪些方面,如何从注意力结构、长上下文、多模态能力和推理效率回答?

这题考的是能否用公开模型家族演进的视角解释 Qwen 结构变化,而不是背某一代的内部参数。好的回答应按 Transformer 基座、注意力与 KV Cache、长上下文扩展、多模态接入、训练与推理效率几个维度展开,并说明这些变化分别解决吞吐、上下文长度、跨模态理解和部署成本问题。

大模型后训练投入成本如何决策,怎样用效果收益、训练成本、推理成本和风险指标做取舍?

这题考的是大模型后训练的工程 ROI 判断。好答案不能只说效果好就继续训,而要把收益、训练成本、推理成本、数据和安全风险放到同一张决策表里,用离线评测、线上指标、成本模型和风险阈值决定做 SFT、DPO/RL、数据修复、提示词优化、RAG、蒸馏还是不做。

如何手写 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 个公司岗位

如何评价并落地 AI 辅助开发:它能提升哪些开发环节,开发者仍必须承担哪些工程责任?

这道题考候选人对 AI 编程工具的工程判断。好答案要说明 AI 能提升需求拆解、代码阅读、样板代码、测试、排错和文档效率,也要明确架构决策、正确性、安全、隐私、性能、代码审查和最终交付责任仍在开发者。

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

FlashAttention 为什么更适合 Prefill,Decode 阶段的瓶颈是什么,Flash Decoding 如何优化?

这题考 GPU 推理性能分析能力。好的回答要区分 Prefill 和 Decode 的计算形态:Prefill 是长 query 的大矩阵注意力,FlashAttention 能提高 IO 效率和并行度;Decode 是单 token 迭代生成,瓶颈常在 KV cache 读取、显存带宽和 SM 利用率,Flash Decoding 通过切分 KV 序列提升并行读取和长上下文吞吐。