Skip to content

Commit

Permalink
modift cv_interview
Browse files Browse the repository at this point in the history
  • Loading branch information
zonechen1994 committed Oct 22, 2021
1 parent 93714f1 commit 0ef0383
Show file tree
Hide file tree
Showing 234 changed files with 13,222 additions and 93 deletions.
Binary file modified .DS_Store
Binary file not shown.
165 changes: 75 additions & 90 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,137 +1,122 @@
# CV_Interview
## 一.《百面计算机视觉第三版》简介

## 特别感谢小伙伴们(排名不分先后):
- **DarrenZhang**
- **BJWang**
- **小亦**
本仓库(**cv_interview**)主要针对的是计算机视觉算法岗面试题的整理。这一版本,我们开始汇总各大**互联网大厂公司**技术岗考察的**CV算法题**:fire:。希望可以帮助同学们更加有针对性地准备面试,也希望帮助同学了解面试中的**八股文套路**,可以让更多的同学拿到**Dream offer。** 当然,如果对你有帮助,也希望你可以点个star⭐,谢谢!

## 《百面计算机视觉第三版》简介


这里是《百面计算机视觉第三版》面试题的更新,以往两版帮助了很多同学。这一版本,希望可以帮助更多的同学拿到**Dream offer。**
## 二. 百面计算机视觉通用基础面经

**Update:** 此次我准备以公司为标签,整理每个公司在面试中所问到的算法题,希望给各位带来帮助。当然,如果对你有帮助,也希望你可以点个star⭐,谢谢
目前我们整理过《百面计算机视觉》的第一版与第二版。我们也会**持续更新**这些基本的知识内容的

## 注:如何看面经呢?
- **建议下载在本地观看,每天可以pull拉取最新的仓库哦!**
其中相对应的内容,参考了一些网上很优质的文章,向他们的工作表示谢意!(**Update: 2021.10.22**

- 这里面的面经有很多公式,可以采用Chrome浏览器,再添加[GitHub with MathJax](https://chrome.google.com/webstore/detail/github-with-mathjax/ioemnmodlmafdkllaclgeombjnmnbima/related)拓展程序。**但是,同样有很多公式,无法显示!**
- **[深度学习基础面试题]('./通用计算机视觉算法面经/深度学习基础面经题/readme.md')**
- **机器学习高频面试题**
- **传统CV (Opencv面试题)**
- **目标检测(Yolo系列等)**
- **图像分类(通用网络与小型网络等)**
- **图像分割面试题**
- **Transformer相关的面试题**
- **落地工程化等工作(量化/蒸馏)**

- **C++与操作系统**
- **Python面经**

- **我们会将面经,首发于公众号"灿视学长"中,欢迎各位扫码关注!**


![image](https://user-images.githubusercontent.com/47493620/137040561-89e9a8c7-a417-4dfd-9446-4b9cfa1190e8.png)
#### 注:如何更好地看面经?

## 1. 写在前面,信心很重要!(背景不好,还想做CV吗?)
- **因为面试题里有很多markdown的公式,建议下载在本地使用vscode/typora观看,每天可以pull一下拉取最新的仓库哦!**

![CV从业人员必会技能!!](https://user-images.githubusercontent.com/47493620/119588215-e8360b00-be02-11eb-8802-f1a840487c85.png)
- 也可以采用Chrome浏览器,再添加[GitHub with MathJax](https://chrome.google.com/webstore/detail/github-with-mathjax/ioemnmodlmafdkllaclgeombjnmnbima/related)拓展程序。**但是,同样有很多公式,无法兼容!**

我写了一篇公众号博文:[没文章,没背景,想做CV?那就按这个干!](https://mp.weixin.qq.com/s?__biz=MzkzNDIxMzE1NQ==&mid=2247485889&idx=1&sn=cc9e77174891a876264d087ba250c818&chksm=c241ea8df536639bb777b325bce49ef181d4ab2ea3f781b30ea964ae120e74f986ddbddbff0d&token=1223742475&lang=zh_CN#rd)

其中我整理相对应的**视频课****电子书****学习路线资料**,百度网盘链接:[下载地址](https://pan.baidu.com/s/1kOfOAKEhHByD2f2BTNEYFQ),密码:g85m

**若地址失效,可以加我微信,我发给你就好~**
### 三. 各大厂的面试真题



## 二. 百面计算机视觉通用面经
首先,这里的大厂,真的很多,这里我主要把bat,字节等公司放在一起,热度最高。其它如网易,商汤等大厂,我后面收集多了,我再分开~

### 1. 深度学习相关
[一文了解激活函数](./深度学习基础/激活函数.md)
[DenseNet详解](./深度学习基础/DenseNet.md)
[常用评价指标](./深度学习基础/常用指标.md)
[Softmax与Sigmoid的联系与区别](./深度学习基础/sigmoid与softmax的区别与联系.md)
[CV中的Attention](./深度学习基础/CV中的Attention.md)
[resnet及其相关变种](./深度学习基础/resnet.md)
[Drop正则化(1)](./深度学习基础/dropout_1.md)
[Drop正则化(2)](./深度学习基础/dropout_2.md)
[手撕反向传播](./深度学习基础/bp举例.md)
[显存有限,如何增加训练时的Batch Size?](./深度学习基础/enlarge_bs.md)
[很全的Normalization汇总哦~](./深度学习基础/normalization.md)
[L1与L2正则的区别,L1为何是更稀疏?](./深度学习基础/L1与L2正则的比较.md)
[感受野](./深度学习基础/描述一下感受野.md)
[权重初始化](./深度学习基础/权重初始化的方法.md)
[label smoothing推导](./深度学习基础/labelsmoothing.md)
[重参数技巧的简述](./深度学习基础/reparameter.md)
[softmax及其相关变形](./深度学习基础/softmax及其相关变形.md)
[优化算法](./深度学习基础/优化算法.md)
- [腾讯面试题汇总]('./大厂面试原题/腾讯/腾讯面试题.md')

- [阿里面试题汇总]('/大厂面试原题/阿里/阿里面试题.md')
- etc



### 四. Q:**为什么此仓库可以一直维护下去?**

A:**因为,我也是一个转行的算法工程师**。我本科的专业是材料科学与工程。2016年,我本科毕业后,在一个二线城市找到了一份工资3k+的工作,后面才了解到原来计算机这个行业中的待遇这么高,年薪动辄**20w+**,(**而今年(21)年,白菜价已经快到40w了**)。于是我就跨专业考研了。在考研之后,经历了AI大火时期,看到了大厂给算法岗开出了很高的待遇,就将方向一直放在CV中。在之后找实习中,我发现我不懂得面试官的套路,无从准备,一开始屡屡碰壁。当后面面试多了,了解多了,面试就成功率高了很多。最后我也在秋招时期,靠着自己断断续续整理2年多的面经,拿到了BAT等公司的cv算法offer。我也开始将面经开放出去,也帮助了很多同学拿到了心中的算法offer。**希望我可以用我的经历跟知识存储帮助各位可以更好地拿offer吧。**

### 2. 传统图像处理
[图像的颜色空间](./传统cv/颜色空间.md)
[初识直方图均衡化](./传统cv/初识直方图均衡化.md)
[直方图均衡化(II)](./传统cv/直方图均衡化(II).md)


![](https://files.mdnice.com/user/6935/24ba4132-327c-41c2-9aee-2cfcb7cb4172.png)

### 3. C++/Python工程篇

[指针与引用的区别](./C++与Python等工程篇/Pointer&References.md)
[多态与继承之间的区别](./C++与Python等工程篇/Inheritance&Polymorphism.md)
[重载、重写与重定义的区别](./C++与Python等工程篇/03.overload&override&redefine.md)
[构造函数与析构函数可以是虚函数吗?](./C++与Python等工程篇/04.Constructors&Destructors.md)
[map和unordered_map区别及其优缺点](./C++与Python等工程篇/map.md)

目前,我在复旦全日制攻读博士学位,跟一些工业界的小伙伴们,一起维护这样的仓库,如果你对**找工作,读研,读博有什么疑问,可以加我好友~**


### 4. 图像分类与图像分割篇
#### 通用分类网络

[Inception V1](./图像分割与图像分类/InceptionV1.md)
[InceptionV2V3](./图像分割与图像分类/InceptionV2V3.md)
[Inception4](./图像分割与图像分类/Inception4.md)
[xception](./图像分割与图像分类/xception.md)


![image](https://user-images.githubusercontent.com/47493620/137040634-1aabfda6-c8dc-4905-94ce-03eb5b800455.png)

#### 轻量化网络设计
[MobileNetV1详解](./图像分割与图像分类/MobileNet-V1.md)
[MobileNetV2详解](./图像分割与图像分类/MobileNet-V2.md)
[MobileNetV3详解](./图像分割与图像分类/MobileNet-V3.md)
[ShuffleNet-V1详解](./图像分割与图像分类/ShuffleNet-V1.md)
[ShuffleNet-V2详解](./图像分割与图像分类/ShuffleNet-V2.md)

#### 分割类
[Deep Lab v1~V3+](./图像分割与图像分类/DeepLab.md)
[介绍下FCN与UNet](./图像分割与图像分类/fcn_unet.md)
[空洞卷积](./图像分割与图像分类/空洞卷积.md)
[语义分割loss汇总](./图像分割与图像分类/语义分割loss汇总.md)

### 5. 目标检测与关键点检测篇
#### 目标检测
[说下NMS?](./目标检测与关键点检测/nms.md).
[NMS及其优化](./目标检测与关键点检测/NMS及其优化.md)
[yolov1梳理](./目标检测与关键点检测/yolov1.md)
[yolov2梳理](./目标检测与关键点检测/yolov2.md)
[yolov3梳理](./目标检测与关键点检测/yolov3.md)
[yolov4_v5梳理](./目标检测与关键点检测/yolov4_v5.md)
[Weighted_Boxes_Fusion](./目标检测与关键点检测/Weighted_Boxes_Fusion.md)
**目前已有的交流群**

:speech_balloon:【AI技术/落地交流群】:如果你是技术控,欢迎添加我的微信,备注“**技术群**”。我可以拉你进入我们的技术分享群。日常交流科研/落地的想法与技术。

### 6. 手撕代码汇总
:speech_balloon:【上海有为青年群】:如果你在上海周边工作(长三角地区如江浙沪皖),无论行业,愿意分享你所闻、所知,可以加我微信,备注“**上海**”,我这边在维护一个“上海有为青年群”,打破信息壁垒,共享信息。

[全连接层前向与反向传播](https://mp.weixin.qq.com/s?__biz=MzkzNDIxMzE1NQ==&mid=2247488876&idx=1&sn=7566b562e7ec92c7b45686c6c1ece52c&chksm=c241f620f5367f36c85c85a91dc81c068d900961c0a65dc202373427b6b11b0459e828973eeb&token=2036211154&lang=zh_CN#rd)
[Dropout前向与反向](https://mp.weixin.qq.com/s?__biz=MzkzNDIxMzE1NQ==&mid=2247488876&idx=1&sn=7566b562e7ec92c7b45686c6c1ece52c&chksm=c241f620f5367f36c85c85a91dc81c068d900961c0a65dc202373427b6b11b0459e828973eeb&token=2036211154&lang=zh_CN#rd)
[激活函数之ReLu/Sigmoid/Tanh前向与反向传播](https://mp.weixin.qq.com/s?__biz=MzkzNDIxMzE1NQ==&mid=2247488876&idx=1&sn=7566b562e7ec92c7b45686c6c1ece52c&chksm=c241f620f5367f36c85c85a91dc81c068d900961c0a65dc202373427b6b11b0459e828973eeb&token=2036211154&lang=zh_CN#rd)
[卷积层与池化层前向与反向传播](https://mp.weixin.qq.com/s?__biz=MzkzNDIxMzE1NQ==&mid=2247488876&idx=1&sn=7566b562e7ec92c7b45686c6c1ece52c&chksm=c241f620f5367f36c85c85a91dc81c068d900961c0a65dc202373427b6b11b0459e828973eeb&token=2036211154&lang=zh_CN#rd)
[BatchNorm2d前向反向传播](https://mp.weixin.qq.com/s?__biz=MzkzNDIxMzE1NQ==&mid=2247488876&idx=1&sn=7566b562e7ec92c7b45686c6c1ece52c&chksm=c241f620f5367f36c85c85a91dc81c068d900961c0a65dc202373427b6b11b0459e828973eeb&token=2036211154&lang=zh_CN#rd)
[Flatten层前向与反向传播](https://mp.weixin.qq.com/s?__biz=MzkzNDIxMzE1NQ==&mid=2247488876&idx=1&sn=7566b562e7ec92c7b45686c6c1ece52c&chksm=c241f620f5367f36c85c85a91dc81c068d900961c0a65dc202373427b6b11b0459e828973eeb&token=2036211154&lang=zh_CN#rd)
[交叉熵损失函数前向与反向传播](https://mp.weixin.qq.com/s?__biz=MzkzNDIxMzE1NQ==&mid=2247488876&idx=1&sn=7566b562e7ec92c7b45686c6c1ece52c&chksm=c241f620f5367f36c85c85a91dc81c068d900961c0a65dc202373427b6b11b0459e828973eeb&token=2036211154&lang=zh_CN#rd)
[优化器代码](https://mp.weixin.qq.com/s?__biz=MzkzNDIxMzE1NQ==&mid=2247488876&idx=1&sn=7566b562e7ec92c7b45686c6c1ece52c&chksm=c241f620f5367f36c85c85a91dc81c068d900961c0a65dc202373427b6b11b0459e828973eeb&token=2036211154&lang=zh_CN#rd)
:speech_balloon:【其他区域交流群】:我们也在维护在校生的【**秋招/实习**】求职群,如果你是在校生,欢迎加我微信,备注“**校招生**”,我们会时刻分享互联网算法相关求职干货信息,如招聘信息,简历注意事项。

### 三. 如何写简历?

[简历模板与写简历的套路总结](https://mp.weixin.qq.com/s?__biz=MzkzNDIxMzE1NQ==&mid=2247485095&idx=1&sn=b3fa4c5e87d2c883e4234a512b03f925&chksm=c241e5ebf5366cfd0e1e878d6f81cc441c39da645f53f470547a6e1ca8fad20d3de16f3055bb&token=507085599&lang=zh_CN#rd)

### 四. 关于我

**复旦在读博士。前bat算法工程师,94年的奶爸。双非材料本科出身,零基础跨专业考研到985cs专业。目前主要以计算机视觉算法入门与真题面经分享为主,持续更新《百面计算机视觉第三版》**


![image](https://user-images.githubusercontent.com/47493620/137040634-1aabfda6-c8dc-4905-94ce-03eb5b800455.png)

## 五. 写在前面,信心很重要!(背景不好,还想做CV吗?)

![CV从业人员必会技能!!](https://user-images.githubusercontent.com/47493620/119588215-e8360b00-be02-11eb-8802-f1a840487c85.png)

我写了一篇公众号博文:[没文章,没背景,想做CV?那就按这个干!](https://mp.weixin.qq.com/s?__biz=MzkzNDIxMzE1NQ==&mid=2247485889&idx=1&sn=cc9e77174891a876264d087ba250c818&chksm=c241ea8df536639bb777b325bce49ef181d4ab2ea3f781b30ea964ae120e74f986ddbddbff0d&token=1223742475&lang=zh_CN#rd)

其中我整理相对应的**视频课****电子书****学习路线资料**,百度网盘链接:[下载地址](https://pan.baidu.com/s/1kOfOAKEhHByD2f2BTNEYFQ),密码:g85m。**若地址失效,可以加我微信,我发给你就好~**



**注:目前市场上的cv岗位还是比较稀缺的(一线城市为主),不一定说我们一定要在校招中进入头部的大厂,只要我们一直在炼丹,那么社招中,我们依然可以拿到不错的待遇!**

![图片](https://mmbiz.qpic.cn/mmbiz_png/8SMJ0xH7ShdHYzvDlPibkmfM0v2uZsR13BlNTu2ibD6Ebxvmn8zc0JsuqlPMib60g7x8OJGbvZIaAVjqHEfKMZzibg/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)







## 六. 其它你需要看的资源

- [1. 简历模板与写简历的套路总结](https://mp.weixin.qq.com/s?__biz=MzkzNDIxMzE1NQ==&mid=2247485095&idx=1&sn=b3fa4c5e87d2c883e4234a512b03f925&chksm=c241e5ebf5366cfd0e1e878d6f81cc441c39da645f53f470547a6e1ca8fad20d3de16f3055bb&token=507085599&lang=zh_CN#rd)

- [2. B站高质量免费课程,适合落地与科研,b站可搜索 “灿视讲堂”](https://space.bilibili.com/107817975)

- **我们会将面经整理,一些工作感悟/建议等信息,首发于公众号"灿视学长"中,跟进的最新paper发布于公众号“集智书童”中,实战的项目放在知识星球中。**


![](https://files.mdnice.com/user/6935/fc04e5eb-5297-4e95-bd5f-8c501aef4300.jpg)





## 特别感谢小伙伴们(排名不分先后):

- **DarrenZhang**
- **BJWang**
- **小亦**
- **心满**


Binary file added 大厂面试原题/.DS_Store
Binary file not shown.
6 changes: 6 additions & 0 deletions 大厂面试原题/腾讯/腾讯面试题.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
### 腾讯算法面试题汇总

- 手写SE Layer
- 手写NMS
- 手写IoU

26 changes: 26 additions & 0 deletions 大厂面试原题/阿里/阿里面试题汇总.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
### 阿里面试题汇总

- resnet结构为啥要这么设计

- relu 的优势

- 选择softmax的优势

- 常用哪些激活函数,leaky relu的优势

- 归一化的优点

- SE的过程

- 对传统机器学习有没有太了解(答之前在比赛,没咋复习,可能不是很熟悉)

- 了解XGBD?

- 了解XGboost?

- yolo系列的发展史

- 对yolov4中的csp结构有无了解

- 想问logistic回归相关问题

Binary file added 通用计算机视觉算法面经/.DS_Store
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#### 1、说⼀下你理解的 C++ 中的四种智能指针

⾯试官你好,⾸先,说⼀下为什么要使⽤智能指针:智能指针其作⽤是管理⼀个指针,避免程序员申请的空间在函数结束时忘记释放,造成内存泄漏这种情况的发⽣。

然后使⽤智能指针可以很⼤程度上的避免这个问题,因为智能指针就是⼀个类,当超出了类的作⽤域是,类会⾃动调⽤析构函数,析构函数会⾃动释放资源。所以智能指针的作⽤原理就是在函数结束时⾃动释放内存空间,不需要⼿动释放内存空间。

#### 常用接口

```
T* get();
T& operator*();
T* operator->();
T& operator=(const T& val);
T* release();
void reset (T* ptr = nullptr)
```

T 是模板参数, 也就是传⼊的类型;

get()⽤来获取 auto_ptr 封装在内部的指针, 也就是获取原⽣指针;

operator()重载 , operator->()重载了->, operator=()重载了=;

realease()将 auto_ptr封装在内部的指针置为nullptr, 但并不会破坏指针所指向的内容, 函数返回的是内部指针置空之前的值;直接释放封装的内部指针所指向的内存, 如果指定了 ptr 的值, 则将内部指针初始化为该值(否则将其设置为nullptr;

#### 下面分别说⼀下哪四种:

#### 1、 auto_ptr(C++98 的⽅案, C11 已抛弃)采⽤所有权模式。

auto_ptr<std::string> p1 (new string ("hello"));
auto_ptr<std::string> p2;
p2 = p1; //auto_ptr 不会报错
此时不会报错,p2剥夺了 p1 的所有权,但是当程序运⾏时访问 p1 将会报错。所以 auto_ptr的缺点是:存在潜在的内存崩溃问题!

#### 2、 unique_ptr (替换 auto_ptr)

unique_ptr 实现独占式拥有或严格拥有概念,保证同⼀时间内只有⼀个智能指针可以指向该象。它对于避免资源泄露特别有⽤。

采⽤所有权模式,还是上⾯那个例⼦
unique_ptr<string> p3 (new string (auto));//#4
unique_ptr<string> p4;//#5
p4 = p3;//此时会报错
编译器认为 p4=p3 ⾮法,避免了 p3 不再指向有效数据的问题。
因此, unique_ptr ⽐ auto_ptr 更安全。

#### 3、 shared_ptr(共享型,强引⽤)

shared_ptr 实现共享式拥有概念,多个智能指针可以指向相同对象,该对象和其相关资源会在 “最后⼀个引⽤被销毁”时候释放。从名字share就可以看出了资源可以被多个指针共享,它使⽤计数机制来表明资源被⼏个指针共享。

可以通过成员函数 use_count() 来查看资源的所有者个数,除了可以通过 new 来构造,还可以通过传⼊auto_ptr, unique_ptr,weak_ptr来构造。当我们调⽤release()时,当前指针会释放资源所有权,计数减⼀。当计数等于 0 时,资源会被释放。

shared_ptr 是为了解决 auto_ptr 在对象所有权上的局限性 (auto_ptr 是独占的),在使⽤引⽤计数的机制上提供了可以共享所有权的智能指针。

#### 4、 weak_ptr (弱引⽤)

weak_ptr 是⼀种不控制对象⽣命周期的智能指针,它指向⼀个 shared_ptr 管理的对象。进⾏ 该对象的内存管理的是那个强引⽤的 shared_ptr。

weak_ptr 只是提供了对管理对象的⼀个访问⼿段。weak_ptr设计的⽬的是为配合shared_ptr ⽽引⼊的⼀种智能指针来协助 shared_ptr ⼯作,它只可以从⼀个shared_ptr 或另⼀个 weak_ptr 对象构造, ,它的构造和析构不会引起引⽤记数的增加或减少。

weak_ptr 是⽤来解决 shared_ptr 相互引⽤时的死锁问题,如果说两个shared_ptr 相互引⽤,那么这两个指针的引⽤计数永远不可能下降为0,也就是资源永远不会释放。它是对对象的⼀种弱引⽤,不会增加对象的引⽤计数,和 shared_ptr 之间可以相互转化,shared_ptr可以直接赋值给它,它可以通过调⽤ lock 函数来获得shared_ptr。
当两个智能指针都是 shared_ptr 类型的时候,析构时两个资源引⽤计数会减⼀,但是两者引⽤计数还是为1,导致跳出函数时资源没有被释放(的析构函数没有被调⽤),解决办法:把 其中⼀个改为weak_ptr就可以。
Loading

0 comments on commit 0ef0383

Please sign in to comment.