23届暑期实习面经大放送,各大厂算法岗面经
LZ是23届,主攻算法岗,搜广推方向, 经历了去年炼狱级别的暑期和秋招,目前工作已签,时间也过了一年,可以把去年的经验分享一下了
字节-抖音推荐算法一面
- 自我介绍
- 问一问你想聊哪个项目,然后聊了一下实验室项目,你的这个项目是做啥,需求出发点是啥?怎么评估效果?你觉得你这个项目创新点是啥。
- 简历里有一个推荐的比赛,开始聊推荐。你做了哪些特征?这些特征你觉得哪些比较重要?如果给你重新比赛的话,你会做什么特征?曝光特征 序列特征(面试官把这些曝光特征称为后验特征)match特征。
- 比赛的时候,模型效果怎么评估?用uAUC。那么uAUC和AUC有啥区别,AUC的含义是什么?
- 怎么构造训练样本?面试官比较关心标签怎么构造,但是他没太搞懂我的比赛,因为我的比赛里标签是给定的。
- 聊一聊模型,介绍一下deepFM,重点问FM怎么实现的。感觉答得还行
- FM的复杂度是多少,我说kn,那么k是啥,n是啥。
- 为什么FM复杂度是线性的,emmmm,我有点懵,因为K是常数,所以是线性的呗?但是感觉面试官不太满意。
- 做题,********-509 斐波那契数 很简单,秒过。然后问我性能还能再优化吗?我觉得DP已经是最优解法了啊,不过面试官说还可以用矩阵快速幂和通项公式,我大e了啊。
- ********-64 最小路径和 也是用DP秒解,问我复杂度是多少?我写的是最原始的版本,我想了一下,觉得空间还能优化,然后他挺高兴,问我大概是多少。我又想了一下,最后应该是O(N)
字节-抖音推荐算法二面
- 介绍项目
- uAUC介绍一下。跟普通的AUC有啥区别,解决了什么问题。AUC的含义是啥?
- Word2Vec能介绍一下嘛。有什么方法。Skip-gram负采样怎么实现的。Skip-gram损失函数是啥。推导一下?
- 推导一下LR,包括计算过程,损失函数,优化方法,磕磕绊绊地,省略了一下求导,不过他也没在意。
- 为什么二分类使用交叉熵作为损失函数,交叉熵这个损失函数怎么数学推导出来的。
- 开始问我计算机八股……问我vector怎么实现的,哈希表怎么实现的,线程与进程是什么。进程之间如何通信的。555,不会。不过看了一下我的简历,我本科不是计算机的,行吧,不懂也正常。那就问问hash表的作用是啥吧,寻址时间复杂度是多少。
- 开始做题,无序数组中的第k大的数,要求使用快排思路。写出来了,问我时间复杂度是多少。为什么是nlogn,你能数学推导一下吗。除了快排思路,还有啥方法。那个时间复杂度是多少。
字节——tiktok直播推荐一面
- 一开始先做题,先从简单的做起,在一个有序数组里找到重复的元素。然后换了一道题,找到一个有序数组中的缺失元素。再提升难度,在一个无序数组里找到缺失的数字,******** 268,提示使用异或,我现场想出了非进阶的解法,然后面试官让我再优化一下空间,这个我没想出来,他说我离正确答案已经很近了。最后给了答案,不知道这算不算能过吧,哎
- 聊一聊机器学习的基础,问我知道什么评价指标,我举了例子,准确率,召回率,F1,AUC。面试官让我讲讲AUC什么意思,然后给我一个场景题,在推荐时考虑用户观看时间,让我想一想这个AUC应该怎么设计。我想说用完播率来排,不过他说这样有问题,因为对于长视频来说,完播率本身就比短视频要低,所以在设计AUC时,应该把观看时长长的排在前面,不过面试官说我的这个思路也挺有深度的。
- 问我了解什么优化方法,我把解析法,SGD,ADAM,拟牛顿法都讲了一遍,然后优缺点也说了。
- 问我了解什么损失函数,我说知道MSE和交叉熵,然后问我比较了解那个,我说交叉熵,然后把交叉熵从最大似然函数推导出来。
- 最后就项目聊一聊,问了一下我项目里使用的graph embedding,然后问我还了解什么graph embedding的方法。然后问我知不知道GraphSAGE,我也说了一下,但是好像说错了。
- 问了一下推荐算法的比赛,问我们怎么考虑构造特征的,怎么解决冷启动的问题。然后给了我一个场景题,如果是冷启动用户,应该怎么解决。我说可以根据年龄性别等用户画像信息,如果不给这些信息呢,我从业务方面给了一个解决方法,比如让用户自己选感兴趣的领域等。
- 如果现在只给了用户的观看序列,怎么做推荐。我说可以先做word2vec,然后再参考DIN。
美团——推荐算法实习生一面
- 聊聊实习,聊聊项目,穿插着问一些问题。
- 实习的时候,为什么要使用DBSCAN来进行数据的去噪,DBSCAN是应用于密度型数据的,你们怎么知道数据的分布情况的?聚类以后,你们是怎么评价聚类的效果的?
- 你的项目用到了transformer,能讲一讲transformer跟传统的LSTM相比,有什么优势吗?transformer中的位置编码作用是啥,为什么不使用1 ,2,3等ID做embedding叠加起来呢?答:transformer使用了self attention的机制,可以挖掘出序列中比较重要的点,每次计算时,每个点与目标点的计算是一视同仁的。可以避免RNN中遗忘早期的数据的问题。同时计算是并行的,速度很快。
- AUC的含义是什么(梅开三度)
- 能解释一下强化学习中的policy based方法和value based的方法,他们有什么异同,有什么使用场景。
- 为什么你项目中使用了transformer,这是为了什么考虑的。
- deepFM AutoInt LightGBM 三种模型各有什么优劣性,你为什么考虑将他们融合在一起。
- deepFM这种模型怎么处理连续性变量?工业界,一般采用分桶,转为标签类型。
- 题目:求平方根
OPPO——一面和二面
纯聊项目和八股,没有做题。
京东——一面
1. 简历被做无人车的组捞走了,主要关心实验室的项目,就着实验室的项目跟面试官聊了很久,没有八股。
2. 两道题:最大栈,合并区间。合并区间有个边界条件没写对,然后数据没有排序,面试官没说,没说我就装作不知道,就按排好序的写,哈哈。
京东——二面
只有八股和做题
1. 你们项目里用的attention是点乘还是加法,是点乘,请问为什么用点乘
2. Transformer里计算得分时为什么要除以根号dk
3. 优化器了解吗?说一下SGD和ADAM有什么区别
4. SGD和ADAM使用的是多少阶的导数
5. 数据分布问题,好像是说缺失的数据跟数据的分布之间的一个概率关系,不太懂。答案好像是3sigma准则
6. 强化学习相关:问了一下蒙特卡洛和动态规划之间的区别
7. 蒙特卡洛和动态规划哪个是model-based的
8. C++八股:map怎么实现的,查询时间复杂度是多少
9. 虚函数是什么
10. 什么是平衡二叉树
11. 指针常量和常量指针有什么区别。
12. 三道算法题:******** 34.在排序数组中查找元素的第一个和最后一个位置 ******** 76. 最小覆盖子串,还有一道原创题
#我的失利项目复盘#