赞
踩
这次就整理下这次社招都做了哪些准备以及自己面试过的题目。
首先就是专业知识的准备,看了很多常用的机器学习算法,并对其算法做了推导。看了深度学习推荐系统这本书里面的模型,对自己简历中涉及到的模型重点掌握,比如DIN、DIEN、DSIN,还有对比学习技术。重点掌握了自己认为比较重要的深度学习模型,transformer,bert,这些都是必须要掌握的,包括每个模型里面涉及的细节,比如transformer里面的注意力分数为啥要除以sqrt(d_k),为啥用的是LayerNormalization,不用BatchNormalization。这些通过看我知乎里面的专栏都能看到。整理来说,传统的常用的机器学习算法一定要知道,比如xgb,gbdt,lgb这些,还有类似于roc的定义和它的计算以及代码实现这些都是应该去掌握的;另外就是基于自己的简历,简历项目里面提到的技术都要熟悉。还有就是我觉得要关注时事,作为一个算法工程师要时刻关注新动态,比如我还被问到了gpt. 下面这个链接是自己面试过程中整理的知识点,很多感觉都用上了。
然后就是刷题了,我刷题刷的很早了,差不多一年前就刷了,那个时候强度很低,每天可能就一道,周末就没刷了,等到临近找工作就疯狂刷题,一天可能刷几十道。自己感受下来,就是通常第一遍刷完能掌握的题是很少的,一定要多刷,但是每次刷的时候要带脑子,不能只注重数量,还有就是实在理解不了的解法我觉得可以先记住,次数多了真的就理解了。在这里推荐代码随想录,这个此次自己用的比较少。还推荐一个刷题网页codetop,这个里面大家都会贡献自己刷了哪些题,所以就能看到最高频考的是哪些题,这样就可以尽快针对性的练起来,CodeTop企业题库,我在这个上面把那些高频题刷了无数遍,每次需要面试大厂的时候,我可能都会去练一遍。另外还有自己看到的一个大佬整理的博客。链接是:算法刷题笔记_翻滚的小@强的博客-CSDN博客,大概是自己面试前1个月把,发现的这位大佬,我就把高频整理(精华篇)全部刷了一遍,后面又断断续续刷过几次。题目一定要多刷,刷的多了,真的能提高不少,我这次遇到了很多之前自己刷到的,有些是原题,有些是稍微的变体,但也不难,印象最深刻的是遇到了一个hard的变体,就觉得绝。
我面试下来,考的比较多的有二分查找、回溯、滑动窗口、动态规划、排序、栈和队列相关的、字符串相关的、DFS也有(岛屿数量那个)。还考过判断图是否存在环,其实就是考察拓扑排序,所以类似得算法也要准备。
记录下自己在leetcode上面目前的总的刷题数量,当然有些是很早之前刷的。
最后,记录下自己还记得的面试题(原来的电脑坏了,保存的东西都没了):
1.transformer,rnn,lstm的时间复杂度,参数数量
2.对比学习的损失函数infoNCE和crossentropy有啥区别
3.deepfm和wide&deep的区别
4.xgb和gbdt的区别,xgb为啥是泰勒二阶导.
这个二阶导数的解答:一方面是精度更高,可以用别的损失函数,只要该损失函数可以二阶导,这个应该是我们都知道的;还有一方面,就是优化速度更快,就是类似于速度和加速度,二阶导类似于加速度,我不仅告诉了你优化的方向还告诉了你怎么更快
5.xgb和lgb的区别
6.逻辑回归损失函数的推导
7.说一下FM
8.说一下transformer的结构,bert是啥样的,gpt是啥样的,bert和gpt有啥不同
9.什么是对比学习,温度系数
10.当评价指标是准确率的时候,那你这个问题又考虑召回率的问题吗,这个是具体项目中问到的。
11.当正负样本比非常悬殊的时候,应该用auc还是f1-score。
这个题目真的很有意思,当非常悬殊的时候应该用f1-score。虽然auc是看正样本排在负样本前面的概率,可以适用于样本不均衡的场景,但非常悬殊时auc还是会很高,难以衡量真实的情况;但f1-score是平衡准确率和召回率,在样本不均衡场景也同样适用。这个问题大家又不同见解可以讨论,我觉得这个题很不错。
12.说一下word2vec
13.bagging和boosting的区别,以及Bagging为啥能减小方差,这个是有个计算公式的。
其他的想不起来了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。