大家好,我是蘑菇先生。
为今年校招的同学准备了一份笔面试经验大礼包。主要结合本人当年校招时候的经验"2021届校招算法岗知识点总结"以及近两年工作学习过程中的感悟收获。主要面向搜推广nlp岗位的同学。
总体而言,个人认为算法岗要找的好,除了本身的长期积累沉淀的硬实力之外(Paper,比赛,实习,项目),主要考核的就是两个方面的能力:"基础扎实程度"和"前沿知识广度"。
文章内容包括四个部分:基础能力(基础扎实程度)、搜推知识(前沿知识广度)、nlp知识(前沿知识广度)、总结。其中,基础部分变化不大,前沿知识部分相较于我当年校招时变化较大,在此做了更新,希望能够帮助到大家。
Leetcode刷200题+剑指offer(可在牛客网刷),尤其是链表、树、动规。做信息竞赛的可忽略。这部分其实在笔试阶段和一面阶段都会涉及,是考核基础能力的关键一环。尤其是一面的时候,如果没有做出来代码题,其实挺影响面试官给分的。题目难度视具体情况而变,大部分情况下"中等题"即可,当然实习和校招、不同公司都会有所差别。如果是博士,这个环节可能不会做硬性要求。
机器学习基础变化不大。当年我主要看的李航老师的统计学习方法(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,这份资料似乎链接打不开了。故特意上传了,公众号后台回复”GBDT“即可获取。
贝叶斯决策理论个人觉得非常重要,是机器学习/深度学习等各类学科的基础。这里头最重要的MLE, MAP, 贝叶斯估计的区别与联系,参考李文哲老师的总结:机器学习中的MLE、MAP、贝叶斯估计
数学题,比如贝叶斯公式算后验概率(求概率),优惠券收集问题(求期望),蓄水池问题(采样)等。还包括一些偏智力的题。这类问题主要难在理解题意,对数学中的概率/期望/微积分/极限等知识点会有些要求。之前看到的部分概率题总结,排版有点问题,凑合着看一些题型。有时间可以复习下概统、线代等课程,没时间可以看看别人的总结,比如:
互联网面试概率题总结:https://blog.csdn.net/BertDai/article/details/78070092
如大数据处理或分布式系统原理等。对于大数据题,如:海量数据求中位数等,主要涉及到哈希,堆,bit等数据结构,外加map-reduce编程范式的灵活应用。这类题型的总结百度一下非常多。
找搜索推荐广告岗位的同学,这部分的学习要同时关注工业界和学术界,尽量从工业界的应用入手,来看看都用了哪些学术界的成果。这部分在面试过程也是必考核的点。
传统的方法: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框架
笔者近年来阅读过的经典文章,值得读一读,对面试很有帮助。
查询理解:搜索上重要模块
业界盘点|Query理解在搜索中的落地技巧
全面理解搜索query:https://zhuanlan.zhihu.com/p/112719984
召回:主要涉及向量化召回、样本选取的艺术、双塔模型、多兴趣召回,还涉及模型索引联合建模等
样本构造:负样本为王:评Facebook的向量化召回算法,召回模型中的负样本构造
向量召回:KDD'21 | 揭秘Facebook升级版语义搜索技术,KDD'21 | 淘宝搜索中语义向量检索技术
多兴趣召回:推荐系统多兴趣召回最新进展
双塔召回:双塔召回模型的前世今生(上),双塔召回模型的前世今生(下)
模型索引联合建模:阿里深度树匹配召回体系演进,字节跳动Deep Retrieval召回模型笔记,TDM到二向箔:阿里妈妈展示广告Match底层技术架构演进
粗排:涉及全链路一致性、双塔粗排、对比学习、蒸馏等
阿里广告技术新突破:面向最终目标的全链路一致性建模
久别重逢话双塔
张俊林:从对比学习视角,重新审视推荐系统的召回粗排模型
知识蒸馏在推荐系统中的应用
精排
阿里妈妈搜索广告预估模型2021思考与实践
万字长文梳理CTR点击预估模型发展过程与关系图谱
你真的懂CTR建模吗?
阿里妈妈搜索广告瘦身之路?
重排:
重排序调研
KDD'20 | Airbnb搜索多样化重排序
可以关注一些公众号:推荐道、阿里妈妈技术、美团技术团队、RUC BOX、DataFunTalk、机器学习与推荐算法、图与推荐等,了解业界最新动向。
特征工程:
谈推荐系统特征工程中的几个高级技巧
特征交互:
一文梳理基于Graph的特征交互在CTR预估中的应用,
特征交互新路线|阿里 Co-action Network论文解读
多目标建模:ESMM、MMoE、ESSM,PLE等。
多目标学习在推荐系统的应用:
https://zhuanlan.zhihu.com/p/291406172
长短期序列建模:DIN、DIEN、SIM、MIMN等。
浅谈行为序列建模
用户行为序列建模方法调研
Recsys'21 | 基于Transformers的行为序列建模
多兴趣建模:MIND、ComiRec等。推荐系统多兴趣召回最新进展
图模型:2W字长文:漫谈图神经网络推荐系统
对比学习:
谈推荐场景下的对比学习
张俊林:从对比学习视角,重新审视推荐系统的召回粗排模型
冷启动:
新用户冷启推荐技巧总结
冷启动系统优化与内容潜力预估实践
多模态:
十篇文章速览多模态推荐系统的最新进展
因果推断:
快手因果推断与实验设计
清华崔鹏 | 因果推断发展、思考和推荐系统应用
其它的方向:模型蒸馏,纠偏、跨域推荐、元学习、多模态等。
深度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竞赛宝典“。
这部分新工作也是层出不穷,个人可能也没有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是完全可以的。
当然,包括谈吐交流、找对内推人、运气都是技术本身之外非常重要的东西。
最近行业变化较大,希望大家都能顺利找到心仪的工作。
——The End——
喜欢的话点个赞或在看吧