大家好,我是对白。
为今年校招的同学准备了一份笔面试经验大礼包。主要结合本人当年校招时候的经验以及近两年工作学习过程中的感悟收获。主要面向搜推广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搜索多样化重排序
特征工程:
特征交互:
一文梳理基于Graph的特征交互在CTR预估中的应用,
特征交互新路线|阿里 Co-action Network论文解读
多目标建模:ESMM、MMoE、ESSM,PLE等。
多目标学习在推荐系统的应用:
https://zhuanlan.zhihu.com/p/291406172
长短期序列建模:DIN、DIEN、SIM、MIMN等。
浅谈行为序列建模
用户行为序列建模方法调研
Recsys’21 | 基于Transformers的行为序列建模
多兴趣建模:MIND、ComiRec等。推荐系统多兴趣召回最新进展
图模型:2****W字长文:漫谈图神经网络推荐系统
对比学习:
谈推荐场景下的对比学习
张俊林:从对比学习视角,重新审视推荐系统的召回粗排模型
冷启动:
新用户冷启推荐技巧总结
冷启动系统优化与内容潜力预估实践
多模态:
因果推断:
快手因果推断与实验设计
清华崔鹏 | 因果推断发展、思考和推荐系统应用
其它的方向:模型蒸馏,纠偏、跨域推荐、元学习、多模态等。
深度CTR模型开源项目:
图模型开源项目:
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/
这部分新工作也是层出不穷,个人可能也没有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/
最后总结下,个人认为算法岗要找的好,除了本身的长期积累沉淀的硬实力之外(Paper,比赛,实习,项目),4者至少取其二。
主要考核的就是两个方面的能力:
基础扎实程度 (编程coding基础;ML/DL算法的数学基础):基础扎实意味着围绕某个知识点,面试官不管怎么问,都难不倒。目标是应对笔面试过程中coding以及对知识深度的考察。
前沿知识广度 (follow时下科研趋势,如GNN,BERT,知识图谱,对比学习,因果推断等;以及了解工业界中推荐/搜索/nlp的整体应用和流程等)。以应对面试中的对知识广度、开放性问题的考察。
硬实力有的前提下,这三个方面扎实的话,我觉得拿offer是完全可以的。
当然,包括谈吐交流、找对内推人、运气都是技术本身之外非常重要的东西。
近期行业变化较大,希望大家都能顺利找到心仪的工作。
最近组建了一个从0到1带你进大厂算法岗100天的特训营,不收取任何费用,主要是想帮助更多的人进入大厂并拿到SP甚至SSP offer,想参与的小伙伴们可以私聊我哦~
你好,我是对白,清华计算机硕士毕业,现大厂算法工程师,拿过8家大厂算法岗SSP offer(含特殊计划),薪资40+W-80+W不等。
高中荣获全国数学和化学竞赛二等奖。
本科独立创业五年,两家公司创始人,拿过三百多万元融资(已到账),项目入选南京321高层次创业人才引进计划。创业做过无人机、机器人和互联网教育,保研清华后退居股东。
我每周至少更新三篇原创,分享人工智能前沿算法、创业心得和人生感悟。我正在努力实现人生中的第二个小目标,上方关注后可以加我微信交流。