字节跳动抖音算法岗实习面试(一面+二面)

写在前面:
这是我第一次参加实习面试,面试前也在网上查了一下算法岗面试的相关经验,受益颇大,因此自己面试完后也试着记录了一下,虽然没能通过最终面试,但也希望能给想面试相关岗位的人一些启发和帮助~

关于面试准备:
算法的技术面主要考察的是算法的灵活使用和现场编程能力,以及相关方向的模型(基本上就是统计机器学习、自然语言处理、计算机视觉这些),因此主要准备以下两个方面:

  1. 经典的算法题目(链表逆序之类的,不太复杂但是比较灵活的题目,推荐刷一下leetcode字节跳动的相关真题)
  2. 复习各种常用的模型,特别简历写的项目中使用到的(要弄清楚各种细节,因为面试官可能问到模型里很细的点)

一面:

  • 项目介绍和模型知识考察
  1. 对简历上的一个项目进行介绍?
    (接下来是根据我项目和我说话中提到的模型,开始深入地追问)
  2. SVM模型的介绍
  3. LR模型的loss函数是啥?为什么选择它作为loss函数而不用其他函数呢?
  4. 防止过拟合的方法?
  5. 正负样例数据分布不均怎么办呢?会有什么结果?怎么解决?
  6. 你项目里遇到过什么问题?怎么解决的?
  7. 这个项目你最后怎么评估结果?
  8. 你的项目是个二分类问题,而神经网络器输出层用的softmax,为什么不用sigmoid?它俩有区别吗?
  9. word2vec模型的介绍
  • 算法题
  1. 链表逆置(常规题)

二面(交叉面):

  • 项目介绍和模型知识考察
  1. 对简历上的一个项目进行介绍?
  2. 对SVM的理解?核函数的作用?软边距也可以做到对非线性数据的分类,为啥还要用核函数?SVM防止过拟合的方法是什么?
  3. 最近看了什么paper?知道什么经典模型讲讲自己的理解?
  4. 为什么word2vec的权值矩阵可以用来做word embedding?
  5. 知道AUC是什么吗?
  • 算法题
  1. 实现一个栈,它的push、pop、getmin、getmax操作的时间复杂度为O(1),空间复杂度不限。
    (我就是这题没写出来,刷题还是太少了,临场很难反应过来)
    问题本身其实不很难,这是我在网上找到的解答:https://zhuanlan.zhihu.com/p/87257507
  2. 已知一个大小为n的升序数组,要求找出是否存在出现次数超过n/2的数。
    (我一开始想错了,在面试官提醒下,先确定了如果存在必然是中间这个数,那么只要找到这个数序列的左边界就行了,因为找到后查看从左边界开始长度为n/2的位置是否是这个数即可判定。主要算法就是递归二分法)

注:一面和二面(交叉面)一般是连在一起的,每一场面试大概一小时,面试前要做好心理准备

总结:
这次的面试机会来的比较偶然,我也是抱着试一试的心理去的,因此准备时间不够长(大概一周左右),题目刷的不够多,临场表现不佳,算法编程那一关想来面试官给的分数是不太好的。另外就是模型知识那一块准备的不充分,SVM的核函数具体机制没弄清楚,被考官一点点揪着直到问到答不上来了[捂脸]。关于RNN、LSTM这些现在较流行的图像处理模型我当时还没学,所以回答也没有往这方向上走,加上我的项目主要都是语音处理这块的,考官可能觉得我对图像这块了解不多,不太对口。

总体而言,这次面试收获很多,对互联网公司的招聘流程有了更多的了解,也更清楚知道自己未来该往什么方向去奋斗。在本科阶段学到的知识其实只是冰山一角,需要学习的内容还有很多。想要真的成为一个算法工程师,未来我依然还有很长的一段路要走。愿此文能帮助到有需要的人,与诸君共勉 > <

你可能感兴趣的:(算法,面试,机器学习,字节跳动)