找回密码
 立即注册
查看: 210|回复: 4

2021社招视觉算法岗面经

[复制链接]
发表于 2022-6-11 14:24 | 显示全部楼层 |阅读模式
个人背景:硕士毕业1年,面试的岗位大部分是计算机视觉算法工程师,少部分算法优化、部署岗。然后这个面经是去年写的,今天突然看到了,就发出来防止丢失。
社招面经

我面的基本都是计算机视觉算法岗,总的来说,大部分公司的技术面试都分为这几个部分:项目描述和细节提问、深度学习+目标检测算法、数据结构和算法代码及编程语言相关。下面是我面试当中问到的一些问题。
一,项目

主要是描述项目背景、项目实现的功能及使用的方法和流程,面试官会针对他感兴趣的点问一些技术细节,基本上只要能把项目流利的描述出来就问题不大。
二,深度学习、模型部署

2.1,目标检测相关

1,两阶段检测网络(Faster RCNN 系列)和一阶段检测网络(YOLO 系列)有什么区别?以及为什么两阶段比一阶段精度高?
2,说说你对 Focal Loss 的理解,为什么能解决分类问题中的类别不平衡问题?
3,如何判断过拟合,及模型过拟合问题如何解决?
4,如何判断欠拟合,及模型欠拟合问题如何解决?
5,描述以下 YOLOv3 算法及 YOLOv4、YOLOv5 的改进点,及为什么 CIoU Loss 比 IoU Loss 效果好?
6,描述下 RoI Pooling 过程和作用,以及 RoI Align 的改进点。
7,YOLOv3 的标签编码解码过程,以及正负样本采样策略。
8,详细讲解下 Faster RCNN 和 Mask RCNN 算法过程。
9,最新的目标检测算法有哪些?
10,手写 Soft NMS 和 Focal Loss。
2.2,深度学习相关

1,BN 的作用及 BN 工作流程,以及训练和推理的区别?
2,普通卷积层、分组卷积、深度可分离卷积的 FLOPs 计算公式。
3,普通卷积层、分组卷积、深度可分离卷积的 MAC 计算公式。
4,详细描述下你知道的轻量级网络:MobileNetV1、ShuffleNetv1-v2。
5,L2 正则化(权重衰减)原理,为什么它能防止模型过拟合?系数 λ\lambda  如何取值?
6,L1 正则化原理,系数 λ\lambda  如何取值?
7,Pytorch 的 conv2d 函数的参数有哪些?以及模型输出大小计算公式,并解释为什么公式是这样。
8,Pytorch 的 DataLoader 原理。
9,普通卷积过程描述下。
2.3,模型部署相关

1,浮点数在计算机中的表示方式?
2,描述下你知道的模型量化知识。
3,知识蒸馏原理,及温度系数如何取值?
4,通用矩阵乘(GEMM)优化算法有哪些?
二维矩阵相乘的 C++ 代码如下;
vector<vector<int>> matrix_mul(vector<vector<int>> A, vector<vector<int>> B){
    /*二维矩阵相乘函数,时间复杂度 O(n^3)
    */
    // vector<vector<int>> A_T = matrix_transpose(A);
    assert((*A.begin()).size()==B.size()); //断言,第一个矩阵的列必须等于第二个矩阵的行
    int new_rows = A.size();
    int new_cols = (*B.begin()).size();
    int L = B.size();
    vector<vector<int>> C(new_rows, vector<int>(new_cols,0));

    for(int i=0; i<new_rows; i++){
        for(int j=0; j<new_cols;j++){
            for(int k=0; k<L; k++){
                C[j] += A[k]*B[k][j];
            }
            // C[j] = vector_mul(A, get_col(B, j));
        }
    }
    return C;
}
对这样的矩阵乘的算法优化可分为两类:

  • 基于算法分析的方法:根据矩阵乘计算特性,从数学角度优化,典型的算法包括 Strassen 算法和 Coppersmith–Winograd 算法。
  • 基于软件优化的方法:根据计算机存储系统的层次结构特性,选择性地调整计算顺序,主要有循环拆分向量化、内存重排等。
2.4,编程语言相关

1,虚函数原理及作用?
2,C++ 构造函数和析构函数的初始化顺序。
3,智能指针描述下?
4,static 关键字作用?
5,STL 库的容器有哪些,讲下你最熟悉的一种及常用函数。
6,vector 和 数组的区别?vector 扩容在内存中是怎么操作的?
7,引用和指针的区别?
8,C++ 中定义 int a = 2,; int b = 2 和 Python 中定义 a = 2 b=3 有什么区别?
9,OpenCV 读取图像返回后的矩阵在内存中是怎么保存的?
10,内存对齐原理描述,为什么需要内存对齐?
三,数据结构与算法 coding

1,二分查找算法 + 可运行代码。
2,白板写链表反转。
3,包含 min 函数的栈 + 可运行代码(剑指 Offer 30. 包含min函数的栈)
4,最长回文子串 + 时间复杂度
5,TOP k 问题-最小的 K 个数 + 说下你知道哪几种解法,及各自时间复杂度
6,返回转置后的矩阵(逆时针)
7,冒泡排序及优化
8,求数组中比左边元素都大同时比右边元素都小的元素,返回这些元素的索引
9,手写快速排序
10,手写 softmax 算子 + 解释代码及衍生问题
12,无重复字符的最长子串
发表于 2022-6-11 14:27 | 显示全部楼层
反手就是一个赞,周末一起吃饭?
发表于 2022-6-11 14:37 | 显示全部楼层
啊,你之前认识我吗。
发表于 2022-6-11 14:38 | 显示全部楼层
想咨询一下,数据结构算法这一块,是否指定编程语言解答
发表于 2022-6-11 14:39 | 显示全部楼层
不用,用自己擅长的即可。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-22 07:20 , Processed in 0.092218 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表