2023届校招算法岗知识超全总结
又是一年「金三银四」,在此为今年校招的同学准备了一份笔面试经验大礼包。
去年我发过一篇 论机械狗如何硬卷算法岗,主要是机械转互联网的经验分享。
本文主要面向搜推广nlp岗位的同学。
总体而言,个人认为算法岗要找的好,除了本身的长期积累沉淀的硬实力之外(Paper,比赛,实习,项目),主要考核的就是两个方面的能力:基础扎实程度和前沿知识广度。
文章内容包括四个部分:基础能力(基础扎实程度)、搜推知识(前沿知识广度)、nlp知识(前沿知识广度)、总结。其中,基础部分变化不大,前沿知识部分相较于我当年校招时变化较大,在此做了更新,希望能够帮助到大家。
1. 基础能力
1.1 Coding基础
Leetcode刷200题+剑指offer(可在牛客网刷),尤其是链表、树、动规。做信息竞赛的可忽略。这部分其实在笔试阶段和一面阶段都会涉及,是考核基础能力的关键一环。尤其是一面的时候,如果没有做出来代码题,其实挺影响面试官给分的。题目难度视具体情况而变,大部分情况下"中等题"即可,当然实习和校招、不同公司都会有所差别。如果是博士,这个环节可能不会做硬性要求。
1.2 机器学习基础
机器学习基础变化不大。当年我主要看的李航老师的统计学习方法(LR,SVM,EM,最大熵,集成学习等)),值得反复看好几遍,每一遍都会加深理解;尤其是学习理论:贝叶斯决策理论/假设空间概念/经验风险, 结构风险/各类损失函数之间的区别与联系/极大似然估计, 最大后验估计, 贝叶斯估计的区别与联系。此外,还涉及一些通用的基础能力,例如:
- 树模型系列论文深入理解,gbdt,xgboost,lightgbm,catboost;
- 深度学习基础:过拟合问题、收敛性问题,dropout,bn,ln等;学习器,各种optimizer原理及对比;BP原理;各种激活函数等,最好用numpy手写一遍MLP,包括train+infer。
- 评估体系:Precision, RecallF1, AUC, ndcg,涉及如何选择、指标的内涵、指标和样本分布关系、离线验证等。
这个部分重点关注原理+推导。
关于面试重点:
- 树模型知识:很爱问的知识。推荐wepon大神的总结:GBDT算法原理与系统设计简介:http://wepon.me/files/gbdt.pdf,这份资料似乎链接打不开了。
- 贝叶斯决策理论个人觉得非常重要,是机器学习/深度学习等各类学科的基础。这里头最重要的MLE, MAP, 贝叶斯估计的区别与联系,参考李文哲老师的总结:机器学习中的MLE、MAP、贝叶斯估计
1.3 数学基础
数学题,比如贝叶斯公式算后验概率(求概率),优惠券收集问题(求期望),蓄水池问题(采样)等。还包括一些偏智力的题。这类问题主要难在理解题意,对数学中的概率/期望/微积分/极限等知识点会有些要求。之前看到的部分概率题总结,排版有点问题,凑合着看一些题型。有时间可以复习下概统、线代等课程,没时间可以看看别人的总结,比如:
互联网面试概率题总结:https://blog.csdn.net/BertDai/article/details/78070092
1.4 工程/大数据基础
如大数据处理或分布式系统原理等。对于大数据题,如:海量数据求中位数等,主要涉及到哈希,堆,bit等数据结构,外加map-reduce编程范式的灵活应用。这类题型的总结百度一下非常多。
2. 搜推广知识
找搜索推荐广告岗位的同学,这部分的学习要同时关注工业界和学术界,尽量从工业界的应用入手,来看看都用了哪些学术界的成果。这部分在面试过程也是必考核的点。
2.1 按照模型演进
- 传统的方法:LR+GBDT(facebook文章),FM,FFM,LambdaMART。
- 深度学习的方法:Youtube DNN,Wide & Deep,DeepFM,DIN等。
- 图模型在推荐上的应用:GE、GNN。
可参考我的万字推荐系统/排序学习和图模型调研(推荐阅读⭐)
- 推荐系统调研:http://xtf615.com/2018/05/03/recommender-system-survey/
- 排序学习调研:http://xtf615.com/2018/12/25/learning-to-rank/
- 万字长文 | 图表示学习中的Encoder-Decoder框架
2.2 按照系统漏斗
笔者近年来阅读过的经典文章,值得读一读,对面试很有帮助。
查询理解:搜索上重要模块
召回:主要涉及向量化召回、样本选取的艺术、双塔模型、多兴趣召回,还涉及模型索引联合建模等
- 样本构造:负样本为王:评Facebook的向量化召回算法,召回模型中的负样本构造
- 向量召回:KDD'21 | 揭秘Facebook升级版语义搜索技术,KDD'21 | 淘宝搜索中语义向量检索技术
- 多兴趣召回:推荐系统多兴趣召回最新进展
- 双塔召回:双塔召回模型的前世今生(上),双塔召回模型的前世今生(下)
- 模型索引联合建模:阿里深度树匹配召回体系演进,字节跳动Deep Retrieval召回模型笔记,TDM到二向箔:阿里妈妈展示广告Match底层技术架构演进
粗排:涉及全链路一致性、双塔粗排、对比学习、蒸馏等
精排
重排
可以关注一些公众号:推荐道、阿里妈妈技术、美团技术团队、RUC BOX、DataFunTalk、机器学习与推荐算法、图与推荐等,了解业界最新动向。
2.3 按照技术方向
特征工程
特征交互
多目标建模:ESMM、MMoE、ESSM,PLE等。
- 多目标学习在推荐系统的应用: https://zhuanlan.zhihu.com/p/291406172
- 【推荐系统多任务学习MTL】ESMM 论文精读笔记(含代码实现)
- 【推荐系统多任务学习MTL】MMoE论文精读笔记(含代码实现)
长短期序列建模:DIN、DIEN、SIM、MIMN等。
多兴趣建模:MIND、ComiRec等。
图模型
对比学习
冷启动
多模态
因果推断
其它的方向:模型蒸馏,纠偏、跨域推荐、元学习、多模态等。
关于技术方向,推荐公众号 ReadPapers。据我了解,能够非常及时的推送最新的搜推广新文,虽然只是信息的采集,没有深入的解读,但是对于想快速跟进前沿的同学来说很棒。
2.4 实战
深度CTR模型开源项目:
- DeepCTR: https://github.com/shenweichen/DeepCTR,可以深入了解各类state of the art的模型以及实现代码细节。
图模型开源项目:
- DGL:Aws开源更新的更频繁,支持多种深度学习框架,可能更值得关注;
- PyG:斯坦福开源的pytorch的框架;
- PGL:百度开源,PaddlePaddle写的;
- Euler:阿里开源的,可以细致观看各类Encoder实现 (如ShallowEncoder, SageEncoder等);node2vec实现;底层C++图引擎可以关注random walk和alias sampling的实现。仅作为学习。这个框架维护的不够及时,灵活性以及分布式实现上仍然存在很多不足。
各大Top赛事开源方案:
- KDD 2020 Debias推荐赛题冠军方案
- KDD 2021 图模型OGB-LSC开源方案:https://ogb.stanford.edu/kddcup2021/results/
可以关注一些竞赛大佬的公众号:比如”包包的算法笔记“、”kaggle竞赛宝典“。
3. nlp知识
这部分新工作也是层出不穷,个人可能也没有follow的很快,可能遗漏了一些,可以参考下。
- nlp常见的概念:词法、句法、语义等;困惑度等。
- 了解重要的四大类nlp任务:分类任务、序列标注任务、句子关系判断任务、生成式任务。
- 传统的模型:语言模型、HMM、CRF、LDA等;当年会问,现在可能不一定会问。
- 深度学习模型:RNN, Seq2Seq,Transformer。
- 预训练模型,涉及传统非上下文感知的word2vec系列 (如Glove和PPMI等)、上下文感知的BERT系列、Prompt Tuning、大模型、多模态等。
- 邱锡鹏老师的survey:PTMs| 2020最新NLP预训练模型综述
- 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史: https://zhuanlan.zhihu.com/p/49271699
- 放弃幻想,全面拥抱Transformer:自然语言处理三大特征抽取器比较: https://zhuanlan.zhihu.com/p/54743941
- Prompt Tuning:刘知远老师的分享,Model Knowledge Stimulation with Prompts for Pre-trained Language Models:http://114.215.64.60/~lzy/talks/2021_prompt_tuning_en.pdf
- 大模型:清华刘知远:大模型「十问」,寻找新范式下的研究方向
- 多模态预训练:从顶会论文看多模态预训练研究进展
- 预训练在工业界的应用:相关性模型、交互式BERT/双塔BERT、模型蒸馏、命名实体识别、查询理解等。
- 对比学习:丹琦女神新作:SimCSE
- 近年来的其它热点方向,知识图谱,问答QA统一建模,预训练在图像上的应用MAE;MLP/CNN/Transformers之争;
- 最后推荐一个从各个应用方向出发,follow最新SOTA的网站:http://nlpprogress.com/
可以关注一些nlp大佬的公众号或博客:苏剑林的博客、夕小遥的卖萌屋、李rumor、高能AI、NewBeeNLP等。
总结
最后总结下,个人认为算法岗要找的好,除了本身的长期积累沉淀的硬实力之外(Paper,比赛,实习,项目),4者至少取其二。
主要考核的就是两个方面的能力:
- 基础扎实程度 (编程coding基础;ML/DL算法的数学基础):基础扎实意味着围绕某个知识点,面试官不管怎么问,都难不倒。目标是应对笔面试过程中coding以及对知识深度的考察。
- 前沿知识广度 (follow时下科研趋势,如GNN,BERT,知识图谱,对比学习,因果推断等;以及了解工业界中推荐/搜索/nlp的整体应用和流程等)。以应对面试中的对知识广度、开放性问题的考察。
硬实力有的前提下,这三个方面扎实的话,我觉得拿offer是完全可以的。
当然,包括谈吐交流、找对内推人、运气都是技术本身之外非常重要的东西。
最近行业变化较大,希望大家都能顺利找到心仪的工作。
最后,需要帮看/改简历和帮内推的同学,欢迎公众号后台私聊我。
更多校招相关文章
- 超详细|算法岗学习路线大总结
- 收藏版|最全机器学习优化器Optimizer汇总
- 阿里一年级算法工程师的工作总结
- 微软校招面试经历
- 本硕机械,校招进入腾讯做算法是什么体验
- 非科班,进入美团做推荐算法是怎样的体验