22暑期算法实习面筋
终于结束磨人的考试周,趁回大陆隔离到入职之前仅有的几天休息时间,整理了一下自己找暑期实习的过程。
这篇回答记录一下,如果能对大家有帮助那就更好~
背景
BG:CS本+港三DS硕,硕士research的方向是NLP,目标是找任何方向的算法实习。
本科做开发为主没有算法经验,没有top比赛,没有过算法实习,投的时候简历里没写paper。
2月份下学期开始的某个时间点突然意识到将来走科研的前景问题(自身问题不是科研的问题OTZ),于是考虑找个暑期实习攒经历准备秋招。之前没怎么想过要找工作,没什么刷题和面试的经验。打算先刷一阵子题硬上暑期春招,投递一些中大厂试试看,找得到的话秋招争取冲一下,找不到可能秋招要换成数分或其他了hhhhh
最后在Loop:{心态崩溃; 爬起面试}中度过了整个四月,不过比较幸运拿到了一些offer(时间顺序,担心被定位有些就不写部门了):
- 美团:机器学习算法实习,风控 不了解
- 快手:算法实习,NLP+推荐 偏推荐
- 联想:NLP算法实习,纯NLP 偏科研
- 华为:AI工程师实习,ToC 偏推荐
- 百度:算法实习,NLP+KG
时间线以及面筋
- timeline
- 2-4月:刷题。
- 整个2月每天固定时间刷,写了100多道lc(剑指offer+经典lc题),整个3月在各种project,assignment和面试之间偶尔刷一刷做过的题保持手感。
- 3月中下:开始投递个公司的暑期。
- 4-6月:面试面试面试。
- 2-4月:刷题。
- 简略版面筋:通过的当中,选一些比较有代表性的问题吧(技术面)
- 美团
- 笔试:AC 3.4/4
- 一面:1h;二面:0.5h
- 一面手撕两数之和变式;二面可能之前题目写的不错没要手撕。
- 面试简略抠推荐系统项目:介绍Deep FM,Wide and Deep结构;细节抠NLU的项目。可能主考官比较了解项目的小方向,问xxx为什么要这么用,有没有其他的方法;其实还可以xxx做,哪种好,为什么。感觉项目中每一步处理或优化的可解释行都要有所准备。
- 基础知识考察了深度学习:Triplet loss介绍,BERT原理(输入,训练细节,BERT变种介绍,tokenizer介绍),Transformer(encoder和decoder的结构细节,输入输出,为什么要这么设计,self attention等);还考察了大数据计算:Spark术语比如task,stage等的解释;SQL的join;数据倾斜的解决等
- 快手
- 一面 1h;二面:1h
- 一面手撕求编辑距离,二面手撕一道二叉树的递归题,mid。
- 面试深挖NLU项目,按照迭代思路一个一个细节讨论,问题涉及特征工程中统计特征如何提取,Smooth Inverse Frequency,Siamese Network,BiLSTM,ESIM,Sentence BERT,最后结果等。
- 问推荐系统项目。协同过滤介绍,你们的方法如何将DL加入协同过滤,详细问几处细节为什么要这么做。如何衡量和case study。如何处理。优化方向。指出我们的方法其实不够sota,工业界有更好的方法。AE,VAE细节。介绍其他深度推荐系统的模型细节。
- 基础知识方面问了Spark:Spark Dataframe,Spark Stream,Spark SQL语法知识等。NLP方面,问了Word2Vec两种模型,两种优化策略,哪个更好;GloVe介绍,损失函数;Transformer的结构,encoder和decoder的输入,self attention,为什么比RNN好,encoder和decoder都能并行吗,decoder的mask是什么;介绍一下BERT,介绍一下两个训练任务,介绍一下如何fine-tune,BERT后接网络如何训练;XLNet介绍等。、
- 阿里
- 笔试:两道都没AC
- 一面:1h;二面:1h
- 一面因为笔试做的不好,在伯乐系统补了两道手撕,一道mid一道easy。二面一道dp的hard题。
- 面试内容以聊天为主,主要注重整个项目的迭代过程以及每一步我的思路。基础知识考察,优化方法,正则化,RNN,LSTM,Attention,CNN等。
- 联想
- 偏聊天为主,注重每个项目的future work,然后发散地讨论
- 百度
- ·笔试:忘记AC多少了,大概1.x/2吧
- 一面:1h;二面:1h;三面:0.5h
- 一面手撕一道dp,不难;二面手撕是NLP场景题,文本相似度相关(没做出剪枝最优解,后面讨论出来了);三面没有手撕
- 面试主要关注NLU项目,扣的细节。基础知识方面注重NLP经典模型方面基础知识考察(Word2Vec,ELMo,Transformer,BERT,GPT,t5等)。其他知识问了Docker,统计机器学习(LR,SVM,Bagging和Boosting),也问了QA的知识,IRQA,KBQA等等。
- 华为
- 机考
- 一面手撕回文串;二面没手撕
- 面试以聊项目为主,根据项目的点问一些基础知识;还问了大学到现在的技术栈变化,以后在技术上职业生涯的规划。
- 其余没过的
- 投完简历或做完笔试根本没有理我:网易,字节,滴滴,依图,微众。原因可能是投晚了。。
- 面试挂的:腾讯机器学习,京东NLP。原因是菜。
- 美团
- 经验
- 早投早投早投
- 刷题很重要,个人感觉题做不出来基本会凉。没思路的话可以适当和面试官交流下。
- 基础知识复习的优先级要低于项目和刷题,如果项目经历不水一般没时间问到除了项目相关以外的基础知识。
想说的话
- 留学生学制短,课程压力(proj,midterm,assignment,hw)已经很大,再准备简历,复习基础知识,刷题真的有些忙不过来。之前其他家的面试官面完说感觉你们一个学期过的好辛苦hhhh。
- 心态崩是最正常不过的事情。有时候面试失败不是你的问题,可能也只是没碰到欣赏自己的面试官。
- 准备实习都已经身心俱疲了,虽然上岸了算法实习,但还是不知道秋招会怎么样。经验不足要补的技术太多加上留学生自身的劣势,想必秋招压力会更大。不过也没办法,即然想走算法那么只能硬着头皮接着冲,给自己加油啦。
- 最后应该还是想在实习期间积累一下线上推荐的经验,纯NLP的实习就暂时放弃了。
- 希望自己以及看到这篇回答的大家秋招一切顺利