当前位置:   article > 正文

字节跳动-博士生-计算机视觉研究员面经分享_博士 面经

博士 面经

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。

今天我整理一位博士算法岗方向面试题,分享给大家,希望对后续找工作的有所帮助。喜欢记得点赞、收藏、关注。更多技术交流&面经学习,可以文末加入我们交流群。


个人背景

先说一下个人背景,国内985本硕博,科研方向是底层计算机视觉,主要方向是超分辨率技术。

字节跳动我投递的是智能创作部门的计算机视觉研究员岗位,面试总共有四轮,前三轮是技术面试,第四轮是HR面试。对于技术问题,我将列出面试官问的问题,以及我当时的回答,还有一些可供参考的相关链接(不一定全面),对于非技术问题,我将挑选一部分常规问题,分享给大家。

一面:技术面

首先是比较常规的介绍一下自己博士期间的科研工作和科研成果,期间面试官问了一些跟研究成果有关的问题,然后就是技术问题了。

计算机视觉和机器学习问题

  1. 用 numpy 实现一下bicubic插值。

答题表现:这个问题一上来就把我干蒙圈了,bicubic 插值虽然特别常用,但是插值公式我只记得是个分三段的分段函数,具体的数学表达式我是真的不记得了,后来面试官退而求其次,让我写 bilinear,这个就比较好写了。

答案参考:双线性和双三次插值。

  1. 阐述常见的边缘提取算子,并介绍一下CANNY算子的具体步骤。

答题表现:我列了一下拉普拉斯算子、CANNY算子、索贝尔算子等,然后 CANNY 算子的具体流程我记得不是特

别清楚了,只回答了计算梯度-二值化-非极大值抑制这三步。

答案参考:Canny 边缘检测方法。

  1. 机器学习中 Overfitting 的常用解决方法。

答题表现:我按照模型层面、优化层面、数据集层面三个角度列举了一些解决方法。模型层面主要是减少参数量、加入BN和Dropout等网络层,优化层面就是加入正则项,如针对问题设计的正则化算子、常见的L1正则等,数据集层面则是加大数据量、数据增广等。

答案参考:这个可以直接去搜索一下相关问题,overfitting的解决方法很多,这里就不贴参考链接了。

  1. BN的原理和具体实现,用Pytorch实现一下BN层。

答题表现:这个还是比较简单的,虽然超分辨率问题中几乎没用过BN,但是没吃过猪肉还是见过猪跑的。面试官在我写BN代码的时候还问了一下BN的训练和测试的区别,这个也属于原理性的东西了,BN训练的时候,均值和方差的统计量都是在batch维度上统计得到的,但是测试的时候batch size一般是1,没办法得到统计量,因此一般会保存最后一个训练批次得到的统计量,或者对最后几个批次的统计量进行moving average,用于最后的测试。以上是我的回答。

答案参考:Batch normalization相关资料。

  1. Dropout前传和后传的差异。

答题表现:这个我当时回答的时候有点忘了,主要还是不常用啊QAQ,当时回答的是按照概率选择一些weight不计算,其实这个回答很含糊。

答案参考:正确答案是按照概率将输出的feature置零,就可以同时解决前传和反传了。

  1. BN和Dropout一起用的时候会出现什么问题?

答题表现:这个实在没用过,我当时一脸懵逼,完全不晓得咋回答。

答案参考:其实主要是Dropout会使得BN要用的统计量产生误差,因此Dropout直接在BN前面用会有问题,具体的可以参考链接BN和Dropout一起用的问题。

编程题与数学题

  1. 用较快的办法找到一个未排序数组第k大的数字。

答题表现:当时我还没有复习到排序算法,这道题答得非常以及极其的拉跨,随后面试官看我不太会,就问我知道多少种排序算法,哪些是O(n)的复杂度,哪些是O(logn)的复杂度,这里我还是答得非常差劲,主要是没复习啊啊啊。

答案参考:其实用冒泡排序就行了,冒k次就可以找到第k大的数字,给一个经典排序算法的链接:十大经典排序算法。

  1. 用均匀分布随机整数生成器rand(7)来实现rand(10)。

答题表现:这个问题一开始我还有点小蒙圈,面试官稍微提示了一下我就知道了,应该用两个rand(7),构成一个二维的平面,然后将其中的一些点均分成10份,每一份代表1-10中的一个数字,就实现rand(10)了。

答案参考:这是leetcode里面的一道中等难度题目,Leetcode-470。
计算机中一般常见的是均匀分布的(伪)随机数,如果要用正态分布,就需要用均匀分布去生成,那么如何用

  1. 均匀分布生成正态分布?或者给出数学推导。

答题表现:这个我真的是完全没有了解过,直接GG。

答案参考:其实上一问给出了一点提示的,可以通过类似的拒绝采样的方式来求解,不过在计算机编程语言中比较常用的还是Box-Muller方法,参考链接:均匀分布构造其他分布的方法。

小结

到这里字节跳动的一面就结束了,除了介绍自己科研成果时的问题我可以引经据典、对答如流,后面的一些问题有相当大一部分是回答得不太好的,主要原因还是当时正在实习,没有太多时间复习,很多基础的东西(如排序算法、BN、Dropout等)没有复习,就印象不深刻,很难回答得很流利,还是要多复习呀!不过可能是因为博士招聘科研成果相关内容占比比较高,一面我还是通过了。

二面:技术面

二面是由部门中做图像生成技术的面试官来进行的,首先还是常规的介绍自己科研经历的过程,然后就是问题环节,问的问题主要都是计算机视觉的问题和编程题。

计算机视觉问题

  1. 用过GAN吗?用过什么样的GAN?目前在用的GAN是什么?

答题表现:由于是智能创作部门,对GAN的研究比较多,所以面试官问了很多GAN的问题,我就都如实回答了。
你对网络结构的设计有什么心得?

答题表现:我当时的回答具体什么样记不太清了,大概的回答就是,要么就借鉴最新的、来自其他领域的、被证明了有效的框架和模块,如ResBlock、Channel Attention之类的,要么就根据当前任务的数据结构、图像模式、图像特征进行专门化的模块设计。

  1. 怎么做网络轻量化?

答题表现:我当时的回答是有三种方法,一种是设计轻量化的模块和结构,一种是对模型进行剪枝或者量化,一种是利用知识蒸馏技术用大模型教育小模型。随后他问了一下我了解过的轻量化模块,我提了一下超分辨率里面用过的IMDB,他就让我介绍了一下IMDB的设计思路。

  1. 你对attention机制的理解是什么?attention机制的优势和劣势分别在哪里?

答题表现:我当时的回答是,我认为attention机制是对卷积局部性、位移不变性这两种特性的补充,通过全局的attention计算来实现较大的感受野。

attention机制的优势是能够以较大的感受野来实现任务性能的提升,可以解决卷积的一些暂时不好解决的问题,但是它的劣势也比较明显,一来是计算量的问题,二来是不一定所有任务都需要attention,它也不是万能的东西。

  1. 视频超分与图像超分之间的区别?

答题表现:图像超分主要利用的是单张图像内部的局部、非局部特性作为约束和信息补充的渠道,而视频超分则在此基础上还要用到来自其他帧的信息,具体方法上二者的区别也体现在此,视频超分往往致力于怎么去更好地利用各帧之间的关系。

编程题

  1. 给定一个整数数组和一个目标值,返回数组中了两数之和等于目标值的数的下标。

答题表现:当时我是用python,通过建立字典来做的,最后是新建了一个字典来去重,面试官觉得我建立新字典太耗费空间,我说可以通过merge字典的方式来避免新建,他提议可以双重遍历。
小结

二面由于大部分都是计算机视觉的内容,就没啥太大问题,然后可能面试官也知道我编程刷题刷得不多,所以编程题也问了一道不那么难的。

三面:技术面(主管)

三面是一个部门的技术主管对我进行面试,首先还是介绍了一下自己的科研经历,然后主管问了我一些问题。

  1. 如果想给抖音的一个视频做封面,可以怎么设计算法,让我讲两种不同的思路。

答题表现:当时我的回答一个是根据视频内容,利用视频总结的方法(video summarization)提取出关键帧作为封面,第二个是根据大众的喜好,从视频中选取最容易引起高点击率的帧作为封面。

  1. 有100盏灯,一开始都是亮的,第一次隔1盏灯按一下开关,第二次隔两盏,第99次隔99盏,问99次之后哪些灯是亮的。

答题表现:这个我思考了一下,从整数的因数角度回答了出来。

答案参考:这个其实是leetcode的一道中等难度的编程题,Leetcode-319。

随后就是一些工作岗位相关问题的互相提问和解答,这里就不再赘述了。

四面:HR面

HR面试主要问的都是一些常规问题,当然由于不是技术面,就没有介绍自己科研经历的环节了,这里简单记录一下HR小姐姐问的问题。

  1. 方向问题:去字节想做什么方向?有什么职业规划?对字节的期待是什么?

  2. 每次面试之后会做复盘吗?怎么做的?

  3. 实习期间遇到了什么问题和困难,怎么解决的?

  4. 科研和工作时碰到技术瓶颈怎么解决?

对于不太懂技术的人,比如她自己,请简单地阐述超分辨率和HDR重建这两个方向的区别。

总结

字节跳动是个非常重视技术和员工基础能力的公司,从问的问题就可以看出来,技术面的时候问了很多有意思的基础问题。当然技术面的时候,关于我的个人研究方向,他们也都提出了一些比较深入的问题,可以看出对学术前沿的了解还是很深入的。而且字节跳动的面试官人都非常奈斯,当我有些问题记不起来或者答不出来时,他们都会耐心地提示、给出意见,整体来说面试体验还是非常棒的。

另外,面试过程也给了我启示,那就是要多复习基础知识,包括机器学习、数学、算法题等等。

技术交流

前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

我们建了算法岗面试与技术交流群, 想要进交流群、需要源码&资料、提升技术的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。

方式①、微信搜索公众号:机器学习社区,后台回复:技术交流
方式②、添加微信号:mlc2060,备注:技术交流+CSDN

用通俗易懂的方式讲解系列

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/600493
推荐阅读
相关标签
  

闽ICP备14008679号