跳到主要内容
综合面经

AI Infra 面经 (1)

AI Infra 面试真题,涵盖推理优化、算子优化、高性能计算等方向

推理优化 算子优化 高性能计算

C++ 基础知识

  1. 指针与引用的异同点有哪些?
  2. static 关键字的用途,分别修饰成员变量和成员函数时的行为差异,以及 static 全局变量与普通全局变量的区别
  3. 智能指针的种类与用法,shared_ptr 是否具备线程安全性?
  4. 右值引用的概念及应用场景
  5. std::move 与 std::forward 的作用及区别
  6. 拷贝构造函数的参数为何必须采用引用传递而非值传递?
  7. new 与 malloc 的区别,new 的底层实现机制
  8. C++ 内存模型概述
  9. 构造函数为何不能声明为虚函数?析构函数为何建议声明为虚函数?
  10. 多态的实现方式及底层原理,虚函数表的存储位置;模板多态与模板偏特化
  11. vector 的扩容策略是什么?为何通常采用 2 倍扩容?
  12. lambda 表达式的语法与捕获方式
  13. 锁的类型及使用场景
  14. 线程间共享内存时,条件变量与互斥锁各自适用于何种场景?二者有何区别?
  15. 死锁的四个必要条件及预防方法;lock_guard 与 unique_lock 的区别
  16. 如何实现线程安全的单例模式?
  17. 如何限制对象只能在堆上创建?
  18. C++ 程序的编译流程;动态库与静态库的区别
  19. C++ 如何调用 C 语言编写的函数?
  20. 进程与线程的区别
  21. 大端与小端存储的判断方法(至少两种)

高性能计算

  1. GPU 架构概述
  2. GPU 全局内存与共享内存(局部内存)的区别,如何有效利用共享内存?
  3. Cache 的工作原理及提升缓存命中率的方法
  4. 时间局部性与空间局部性的概念
  5. 计算密集型与访存密集型的区别
  6. 常用的性能优化思路有哪些?
  7. OpenCL 的执行流程
  8. 编写 OpenCL kernel 时为何应减少分支?掩码的作用是什么?
  9. OpenCL kernel 的主要参数包括哪些?
  10. 可分离卷积在 GPU 上为何性能不佳?为何属于访存密集型?
  11. 算子融合的概念,conv + BN 融合的公式推导及可融合的原因
  12. 推理框架中卷积算子的常见实现方式
  13. 产生 bank conflict 的原因及解决方法
  14. TVM 编译框架的基本概念

深度学习基础

  1. Batch Normalization 的计算过程、作用,以及训练与推理阶段的差异
  2. Depthwise 卷积与 Pointwise 卷积的原理
  3. MobileNet v1/v2/v3 的演进路线,GhostNet 的设计思路,SE 模块的结构
  4. YOLO v1/v2/v3 与 SSD 的对比
  5. 全局池化通常用于网络的哪个位置?
  6. 模型蒸馏的原理与流程
  7. 量化技术分类,INT8 量化的具体实现:对称/非对称量化的优缺点,量化感知训练及推理细节
  8. Dropout 在训练与推理阶段的行为差异
  9. 反卷积与空洞卷积的原理
  10. GIoU 损失函数的定义与作用
  11. Softmax 函数的公式及其用于分类的原因
  12. NMS 的改进方案

编程题

  1. 实现卷积操作
  2. 实现计算图
  3. 实现 Pooling 操作
  4. 实现 NMS 算法
  5. 使用 OpenCL 实现矩阵乘法与向量求和