vivo机器学习算法工程师视频一、二面面经
第一次在牛客网发帖,攒攒经验。
一面:vivo一面的时间不长,没让手撕代码,主要问了下项目并针对项目提了些问题,然后就问了道算法题和一道机器学习问题,算法题之前没遇到过,没答出来,机器学习问题也答的不是很好,故来反思一波,把没答出来的问题的答案补上,希望对其他人有所帮助。
- 自我介绍
- 介绍觉得做的最好的的一个项目
-
算法题:如何判断单链表中是否有环?
是个很经典的面试题,可惜没有答出来,面完后同学说了思路:用快慢指针或者哈希表。对于快慢指针方法,如果单链表存在环,快、慢指针必定会在环中的某个结点相遇;对于哈希表方法,可以使用STL的map将链表结点指针映射成map下标,每访问过一个结点p,就将m[p]赋为1(m[p]初始为0),若在访问某个结点时其m[p[已经被设为1,说明已被访问过,即有环
参见:https://blog.csdn.net/cyuyanenen/article/details/51712420 - 机器学习中L1和L2范数各有什么特点以及相应的原因?
L1范数更容易产生稀疏的权重,L2范数更容易产生分散的权重,原因一般从公式角度或者几何空间角度去解释
从公式角度解释:深度学习花书7.1节(202页左右)。带L1正则化的最优参数w=sign(w星) max{|w星|- a/H , 0},其中w星代表未正则化的目标函数的最优参数,H代表海森矩阵,a是正则化系数,只要a足够大,w 星就会在更大区间范围内使w变为0,而带L2正则化的最优参数w=H/(H+a)▪w星,只要w星不为0,w也不为0.
从几何空间角度解释:绿色等高线代表未施加正则化的代价函数,菱形和圆形分别代表L1和L2正则化约束,L1-ball 与L2-ball的不同就在于L1在和每个坐标轴相交的地方都有“角”出现,而目标函数的"等高线"除非位置摆得非常好,大部分时候都会在角的地方相交。注意到在角的位置就会产生稀疏性。相比之下,L2-ball 就没有这样的性质,因为没有角,所以第一次相交的地方出现在具有稀疏性的位置的概率就变得非常小
ps:其实L1和L2范数的问题感觉解释的还不是很清楚,如果有朋友有更好的解释,欢迎留言交流~
二面:几天后意外收到hr面,感谢vivo给的机会,这里也简单记录一下
- 简单自我介绍
- 家是哪里的?
- 本科的成绩怎么样?
- 自己觉得一面的表现如何(我说表现一般,在介绍项目的时候答得还可以,但后面的算法题没答上来,机器学习的题目也解释的不是很好)
- 面试官说他之所以问这个是觉得我一面的实际表现与优秀简历不是很相称,问我原因是什么?(我回答说自己非计算机专业出身,算法和编程能力并不是很强,而且研究生阶段导师无法给予实际的指导。ps:其实我想说遇到了一个比较坑的研究生导师,非但不能给予实际的指导,有时还会乱指导)
- 对vivo的了解是怎样的?(吹了一波vivo的手机和企业文化)
- 期望的工作地是哪儿?
- 最后有什么问题想问?(就简单问了下结果什么时候出来,面试官说20多号左右)
总结:vivo算是楼主第二家走完面试流程的公司(第一家是华为的优招),无论结果怎样,还是很感谢vivo给的机会。从vivo的一面中也暴露出自己在数据结构和算法方面还不够熟练(判断链表是否有环的那道题在剑指offer上有,不过是在附加题里面,可惜我面试的时候还没有做到,剑指offer还是要继续刷完),秋招之路还得继续奋战,fighting!