谢邀。
首先和你导师商量下是否有同意去实习,是否同意你长期实习,长期实习会大大增加录取概率。
根据我的面试经验,其实公司们比较关心的就两三个东西,最核心的两条腿就是理论专业度和coding能力,理论专业度就是你对DL或者你的研究领域的了解程度,当面试官问你一个DL的问题时,你能够侃侃而谈谈笑风生,优缺点对比分析原理分析都明明白白,能够通过实验结果去挖掘出问题所在,去提出解决这个问题的方案,这个自然是很有加分的,这些东西就取决于你的论文和实验的积累量。另外一条腿就是coding能力,这个coding能力既包括你DL框架复现论文的能力已经优化产品代码的能力,我们做实验总是喜欢去找开源代码调通然后跑实验,在我进入公司实习之后,我终于不得不的去战胜这些惰性,总之有各种原因不允许你像在实验室一样优哉游哉的git clone别人的代码,我为了验证论文里算法是否有效,我自己复现了很多模型,完全是重头写起,当然也用了公司自己积累的一些轮子,但是在训练model这个核心环节基本都是自己复现的,另外一个coding就是工程coding能力,怎么把训练的model封装成一个可用的SDK,再开发为可以用的产品,这些就取决于工程的coding能力,很惭愧我做的是research intern,所以这方面能力挺弱的,面试的时候这类问题也基本都是放弃的,这些去刷题就好,公司面试也只能从这个角度去尽量考察你。
关于这两条腿你都强自然是好的,我也问过几个公司,怎么看待我这种DL很强而开发coding能力基本为0的人,公司们的回答是那就看你的优点是否能足够掩盖你的缺点。另外除了这两条腿,你的潜力、天赋以及是否踏实这些品质也是很重要的,这个就看你的简历是否能展现出来或者面试官是否能够挖掘出来了。
以上是公司比较关心的一些东西,这些空空的东西大家也都知道。下面有一些可能会有帮助的实际东西,在找实习的前期,尽量找到人可以内推,内推应该都是有奖金的,所以大家应该很乐意内推,这个你可以去知乎上勾搭,很多公司的大佬们都会上知乎的,对我司感兴趣的也可以去看我的个人介绍然后上官网或者找人内推,我就不内推了,我推荐了几个最后都没得到面试机会,伤心,我司的要求是还是很高的,我看到很多简历都很不错但都没进来。
下一步就是简历了,简历最关键的无非就是项目和论文了,项目证明了你的工程能力,最好就是和DL/CV相关的,相关的写到最前面,并且分三步走,做了什么,怎么做,解决了什么问题或者取得什么成绩,把项目介绍清楚,用了什么相关的DL技术也可以点出来,我收到有些简历就是一个项目名字,没了,这种简历显然不过关的,另外还有就是项目经历很多,最后一个和DL相关的都没有,APP开发搭建网页一大堆,这个我都会让TA再仔细思考下有没有能搭点边的,哪怕是用opencv做的视觉项目也比这些好,实在没有那也没办法,那就去kaggle上刷些top排名吧,能够进top20%基本上都会给个面试机会吧,所以项目经历是包括比赛的,和DL或者ML相关的比赛都可以去刷一下。另外一个就是论文了,论文最直接反映了你的理论专业度、研究能力和思考问题的能力,这个也没啥说的,就看个人的研究实力了,有就是有,没有也急不出来。
然后如果得到了面试机会,那么面试官基本就是针对你的简历来问的,尤其是和DL相关的项目经历,非相关的可能就一带而过,经常会问你选一个你最满意的项目,介绍下做了什么,你的特色所在,和别人不同的地方, 做的过程中遇到了什么问题,你是怎么解决的之类的。然后会根据你的项目去问一下常问的问题,比如过拟合怎么解决啊,BN为什么效果这么好啊,这些基本的问题知乎上很多都提到过,这些都是可以去准备的,一般稍微懂点DL的人都能回答出来,不懂的人背一背也能回答出来,所以我不是很care这类题目。更深的是面试官会根据你的项目、比赛和论文去问一些针对性的问题,比如你研究某个课题,问你这个课题目前有哪些主流网络模型或者模型学派,比如问你两个模型的区别和优缺点,比如问你某个模型的机制原理,你有哪些想法去提高某些算法,等等花样百出,考的就是你的理论内功,你要相信你的面试官完全有能力把你的几斤几两给掂量出来。理论过后会了解你的DL coding能力,即所谓的框架实现模型的能力,你是否修改过源码并在GIT上做过PR,是否自己复现的模型等等,这个考的是你的框架外功,不排除面试时公司让你用你熟悉的框架写个什么model出来。最后一个就是工程coding的能力了,这个刷题吧,DL公司问的也就是那些东西,数据结构排序算法,反正我都基本遇到就直接放弃的,所以也没啥能够提供帮助的。然后为了考察的你的潜力和天赋,智力题数学题也经常会考的,比如让你算个什么奇奇怪怪现象的概率,比如给你一个场景用数学去建模然后解决,给你一个场景设计一个最优化问题并解最优化,各式各样。下面是我遇到的一些可以公布的题目吧,不说哪个公司了,而且应该也不会再问这些东西了吧:
智力题:
1、证明6个人里面一定能找出3个人互相认识或者互相都不认识
2、桌上有很多纸牌,其中有50张正面,现在蒙住你的眼睛,请把它们分成两堆,正面向上的数量一样
3、现在有很多学生的成绩信息,以及各大学校招生的条件,怎么设计目标函数和求解算法,得到一个最优的分配方案
4、投篮命中率为50,第一次出现连续进三次的所用次数的期望
编程题:
1、用递归算法把单向链表反向
2、动态申请二元数组内存,动态释放二元数组内存
深度学习题:
1、写出三个损失函数,并分析特点和使用场景
2、写出常见的正则化和防止过拟合的技术,平时调参的经验
3、深度学习是否是万能的,深度学习未来发展的方向,你的观点
4、VGGNet,GoogleNet,Resnet的特点和对比
5、分析梯度弥散和梯度爆炸的原因,及其解决手段
计算机视觉题:
1、伪代码实现直线检测
2、实现一种插样resize函数
3、代码实现图像旋转函数
4、列举出你知道的特征算子及其特点,例如SITF,LBF等
5、用EM理论推导GMM
总之说那么多,其实能够拿到什么水平的实习,说道理最终看的就是你的个人实力了,不同公司可能能够提供特性不一样的工作岗位,比如小的创业公司可以提供一些较前瞻性的research工作岗位,比如我这种一条腿的残渣,当然最起码你的model复现能力,Python处理数据的能力不要弱吧,大的如阿里腾讯可能更喜欢理论开发都不弱的全栈工程师
当初拿到实习在知乎上得到了很多学长的帮助,不过也无法报答他们,希望这个东西能够对别人有些帮助吧,也算是间接的回报了,公司对实习生是很欢迎也同时很宽容的,基础差一点就自律好一点,公司不会把太多压力放在实习生上,知名公司应该还不至于要让实习生挑大梁吧,所以无论基础好坏,都可以去尝试一下投一下简历。