写在前面:
这是我第一次参加实习面试,面试前也在网上查了一下算法岗面试的相关经验,受益颇大,因此自己面试完后也试着记录了一下,虽然没能通过最终面试,但也希望能给想面试相关岗位的人一些启发和帮助~
关于面试准备:
算法的技术面主要考察的是算法的灵活使用和现场编程能力,以及相关方向的模型(基本上就是统计机器学习、自然语言处理、计算机视觉这些),因此主要准备以下两个方面:
经典的算法题目;
复习各种常用的模型,特别简历写的项目中使用到的。
一面:
项目介绍和模型知识考察
对简历上的一个项目进行介绍?(接下来是根据我项目和我说话中提到的模型,开始深入地追问)
SVM模型的介绍
LR模型的loss函数是啥?为什么选择它作为loss函数而不用其他函数呢?
防止过拟合的方法?
正负样例数据分布不均怎么办呢?会有什么结果?怎么解决?
你项目里遇到过什么问题?怎么解决的?
这个项目你最后怎么评估结果?
你的项目是个二分类问题,而神经网络器输出层用的softmax,为什么不用sigmoid?它俩有区别吗?
word2vec模型的介绍
算法题
链表逆置(常规题)
二面(交叉面):
项目介绍和模型知识考察
对简历上的一个项目进行介绍
对SVM的理解?核函数的作用?软边距也可以做到对非线性数据的分类,为啥还要用核函数?SVM防止过拟合的方法是什么
最近看了什么paper,知道什么经典模型讲讲自己的理解。
为什么word2vec的权值矩阵可以用来做word embedding。
知道AUC是什么吗。
算法题
实现一个栈,它的push、pop、getmin、getmax操作的时间复杂度为O(1),空间复杂度不限。(我就是这题没写出来,刷题还是太少了,临场很难反应过来)
已知一个大小为n的升序数组,要求找出是否存在出现次数超过n/2的数。(我一开始想错了,在面试官提醒下,先确定了如果存在必然是中间这个数,那么只要找到这个数序列的左边界就行了,因为找到后查看从左边界开始长度为n/2的位置是否是这个数即可判定。主要算法就是递归二分法)
注:一面和二面(交叉面)一般是连在一起的,每一场面试大概一小时,面试前要做好心理准备
总结:
这次的面试机会来的比较偶然,我也是抱着试一试的心理去的,因此准备时间不够长(大概一周左右),题目刷的不够多,临场表现不佳,算法编程那一关想来面试官给的分数是不太好的。另外就是模型知识那一块准备的不充分,SVM的核函数具体机制没弄清楚,被考官一点点揪着直到问到答不上来了[捂脸]。关于RNN、LSTM这些现在较流行的图像处理模型我当时还没学,所以回答也没有往这方向上走,加上我的项目主要都是语音处理这块的,考官可能觉得我对图像这块了解不多,不太对口。
总体而言,这次面试收获很多,对互联网公司的招聘流程有了更多的了解,也更清楚知道自己未来该往什么方向去奋斗。在本科阶段学到的知识其实只是冰山一角,需要学习的内容还有很多。想要真的成为一个算法工程师,未来我依然还有很长的一段路要走。愿此文能帮助到有需要的人,与诸君共勉 > <
作者:cwj1412
原文链接:https://blog.csdn.net/cwj1412/article/details/107468139