python字节跳动面试_字节跳动计算机视觉算法实习生视频面试

此专栏主要总结各大厂机器学习相关的面试经验,欢迎大家投稿分享面试经验

最近有朋友问我如何准备视觉算法的面试,恰好看到一篇很不错的文章(感谢@辛俊波写的这篇文章),有相关疑惑的朋友可以看一下如何看待 2020 届校招算法工程师岗位求职人数远大于招聘岗位的现象?​www.zhihu.com

岗位信息如下:

一面(时间2019.3.14,形式是视频面试) -- 已凉

下午四点面试,晚上七点半收到了凉凉的邮件通知,不慌的,再接再励,查漏补缺,下面我就详细总结一下面试的经过。

注意:回答不一定正确,仅提供了我个人的回答,答案里有些不正确的地方,我之所以给出我的个人回答只是为了更好地还原面试过程,最近如有时间,我会整理出正确的答案。

注:我在下面的这篇文章中汇总了一些好文章,如果有需要的可以参考一下JustDoIT:计算机视觉知识点总结​zhuanlan.zhihu.com

致谢:感谢各位朋友和各位大佬给出的宝贵意见

总结:根据各位朋友和各位大佬给出的宝贵意见,我反思总结如下:python 和 c++基本语法不够扎实,需强化基本语法点

例如对python里面的集合set不太熟悉回答过于简洁,难免给面试官基础知识不扎实的错觉,需讲得更详细

深度学习的基础知识不扎实,不系统化,需构建知识体系

面试建议:面试官主要是对着简历进行提问的,然后再扩展一下相关的知识点。面试主要考察了项目、比赛以及一些理论知识和编程语言的语法点。建议大家可以看着岗位信息进行简历的制作并且在简历上出现的内容需要好好准备一下。

下面就开始还原面试过程

1、简单自我介绍

2、kaggle "TGS Salt Identification Challeng"模型的准确度是怎么算的?

我说ap,然后面试官问有没有用miou,我说没有

3、说一下unet的结构

卷积,下采样,上采样,然后低层特征图和高层特征进行融合,最后进行分类

4、熟悉deeplab吗,aspp是怎样的

不太熟悉,目前正在阅读相应的论文和源码,我目前是对FCN,unet,refinenet,mask rcnn比较熟悉

5、说说 智能盘点—钢筋数量AI识别 这个比赛

这个比赛是实现拍照即可完成钢筋点根任务,先使用了YOLO,然后用了faster rcnn还有retinanet

6、retinanet的focal loss是解决的什么问题

解决类别不平衡问题,对困难样本的损失分配比较大的权重既能调整正负样本的权重,又能控制难易分类样本的权重

7、那focal loss有解决背景样本和目标样本的问题吗

我说应该有

8、谈一下比赛中提到k-means算法

我说yolo是根据iou来进行距离度量的

9、那k-means是怎么实现的,k近邻算法呢

这个我用的是官方源码

10、opencv做了哪些数据增强

直方图,翻转,随机裁剪,高斯模糊,高斯噪声

11、怎么做的模型融合

如果是同个模型,会整合两个模型的检测结果,根据score来排序再做nms操作。

但这里我是用的不同模型,用的yolo和faster rcnn,他们的score没有太大的可比性,所以我没有用score来排序,我是求两个模型的交集,以解决误检的问题

12、为什么用交集,不用并集

其实这个我是根据提交结果来决定的,事实上,在这里交集的效果比并集好,交集解决误检问题,并集解决漏检问题

13、安检机物品检测的图片格式是怎么样的

x光扫描的RGB图

14、为什么选用yolo而不用unet

比较熟悉yolo

15、yolo是怎么分配检测框的

每个grid分配9个检测框yolo会输出3种尺寸的特征图,13*13,26*26,52*52,每种尺寸特征图的每个grid预测3个框

16、yolo的预测框是什么值(x,y,w,h)

是相对grid的相对值

17、faster rcnn回归用的什么公式

我说欧式距离

实际是smooth l1

18、熟悉smooth L1吗

描述了一下函数形式

19、说一下nms的操作

对每一类进行nms,先根据score进行降序排序,然后计算最高的score和其他框的iou,去掉iou大于阈值的检测框

20、那假如一个类有1000个框,怎么计算iou和去掉大于阈值的框

先拿score最大的检测框和其余的检测框进行iou操作,这里用到了numpy数组的广播机制,然后用numpy的筛选操作,把大于一定阈值的检测框的score置0,然后下一次迭代从score不为0的检测框进行上述操作,直到操作完成

21、熟悉哪些基础网络

熟悉VGG、GoogleNet还有resnet这几个提取特征的,还有FPN这个来融合信息的

22、熟悉一些新的网络吗

不太熟悉,最近没关注,最近在研究代码估计面试官想问的是这些网络Xception、DenseNet、DetNet,在文章开头的链接里汇总了

23、激活函数有哪些

sigmoid还有relu

24、sigmoid存在什么问题

梯度消失

25、relu的表达式

我说成leaky relu的了,然后面试官说确定吗,不是relu的变形吗,

我说我说错了,然后我纠正了一下

26、relu的变体有哪些

learky relu

27、熟悉normalization吗

比较熟悉bn和gn

28、说说bn

bn是解决梯度消失问题的,通过bn能使数据在输入到激活函数之前回到导数较大的位置#解决问题

解决内部数据分布不稳定问题

#做法

统计mini-batch个样本的期望和方差从而进行归一化,但这样会导致数据表达能力的缺失,所以要引入两个参数从而恢复数据本身的表达能力

#优势

使得网络中每层输入数据的分布相对稳定,加速模型学习速度

允许网络使用饱和性激活函数,缓解梯度消失问题

具有一定的正则化效果

29、bn是做了归一化吗

先做了归一化,例如先减去期望再除以方差,然后再乘以一个参数和加上一个参数,这两个参数是可学习的

30、bn是在哪一维进行操作的

在mini-batch和通道这两维,描述了一下具体是怎么算的。我举了个例子,四维tensor,分别是[n,c,h,w],然后bn是统计每张特征图的期望和方差,而这个期望和方差是n个样本同一张特征图的期望和方差

31、那gn有什么用

gn是解决bn对mini-batch过度依赖,gn是在通道处进行分组统计,不依赖mini-batch

32、bn和gn都在哪用

bn和gn我所了解的是在目标检测,当然图像分类也用到bn

33、c++和python是都熟悉吗

是的

34、那c++的指针和引用有什么区别

一个用的地址,一个是别名,但都能修改值

35、那引用能重新赋值吗

不能

36、静态变量有什么用

能不在实例化类的情况下进行调用,而且每个实例化后的对象共享这个值

37、静态变量在哪初始化,能在类内初始化吗

在类内类外都行一般是在类外初始化,如需在类内初始化,要求该静态变量为静态字面值常量类型 C++ 静态成员的类内初始化 - WanChouchou - 博客园

38、静态函数有什么用

能在不实例化类的情况下进行调用

39、python有什么常用的数据类型

列表、无序字典和有序字典列表、元组、字典、集合等

40、对多线程了解吗

了解,但没写过

41、那如果让你自己实现pytorch里面的dataloader,你怎么可以使它加载快点

用多线程

42、python的append和extend有什么区别

append是添加单个元素,extend是添加一个列表

43、出一道算法题

算法题如下:给个有序数组,然后求元素平方后不重复的元素个数,例如[-10, -10, -5, 0, 1, 5, 8, 10]

我思想描述对了,然后面试官说有更好的方法吗,我想了一下说没有,然后面试官让我选个语言实现一下,选择了python来实现,用到了字典,然后面试官说用集合会不会更好,我说会的

# 这是我的实现,没有用到集合,如果用到集合会更好

data = [-10, -10, -5, 0, 1, 5, 8, 10]

new_list = []

for x in data:

temp = x*x

if temp not in new_list:

new_list.append(temp)

print(len(new_list))

# 其他实现

print(len(set([x**2 for x in data])))

# 评论区有朋友提到,使用双指针会更优

44、有什么问题想了解的吗

我说看岗位信息提到会进行技术的理论研究和技术的落地,如果我去了会负责什么,面试官说因为实习时间比较短,一般是做些技术落地的项目

45、那有师傅带吗,那一般做什么项目

有师傅带,一般做力所能及的项目

参考:

1 U-Net: Convolutional Networks for Biomedical Image Segmentation

2 Focal Loss for Dense Object Detection

3 YOLOv3: An Incremental Improvement

4 Fast R-CNN

5 Faster R-CNN Towards Real-Time Object Detection with Region Proposal Networks

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值