作者:CHEONG
本文涵盖了腾讯微信事业群模式识别中心,PCG和TEG事业群,阿里达摩院,蚂蚁金服,百度研究院,京东研究院,头条AI Lab,滴滴AI Lab,微软亚洲研究院,微软工程院以及联想研究院等等多个公司NLP算法岗面试内容,其实面试内容都大差不差,从大的来说就包含四块内容,下面我也就这四块做一个简要的说明:
1、简历中项目以及提到的相关算法
2、传统机器学习相关算法原理及使用细节
3、深度学习算法相关算法原理及使用细节
4、手动Coding,数据结构的考察
首先也是重重之中,就是要准备好一份漂亮的简历,简历的重要程度不用多说,我想大家首先给自己心理设下这样一个标准,我这份简历前后修改了有20个版本了没有。
简历投出去之后就是自我的准备工作,对于传统机器学习算法,我列举一些如:
K-近邻,K-Means,朴素贝叶斯,决策树(ID3, C4.5, CART, GBDT, Xgboost, Lightgbm, 随机森林等),逻辑回归,最大熵模型,支持向量机SVM,EM算法,隐马尔科夫模型,条件随机场等,这些传统机器学习算法在面试中经常会被问到原理,或者直接让你公式推导,推荐阅读的书籍如:李航-统计机器学习,周志华-西瓜书,刘铁岩-分布式机器学习等
除了传统机器学习就是深度学习算法的复习,深度学习模型的考察通常会结合实际的项目场景进行考察,那掌握模型的原理便是基础,常考查的深度学习模型如
1、CNN,RNN/GRU/LSTM,Transformer(NLP特征提取)
2、Word2Vec,Glove,FastText,Elmo,Bert,Flair(预训练词向量)
3、CNN,RNN,RCNN,DPCNN,FastText,HAN,Bert(NLP分类模型)
4、GNN,GCN,SGCN(图模型)
深度学习算法复习推荐书籍如:花书-深度学习,python神经网络编程等
最后一个便是面试都少不了的coding,如果现场面试基本都会准备一张纸一支笔然后手动Coding,像今年远程面试那就都是线上coding,像头条或部分公司就会使用牛客网在线编程环境,线上coding其实相对于手动coding还是有好处的,因此平时就是在线上写代码,但如果是手动coding大家需要注意一些问题,不要以为线上会coding,纸上也能完整的写下来,需要提前在纸上写一写,因为线上coding是有可自动补全的编程环境,会让你舒服很多。手动Coding的能力不是短时间可以练出来的,因此平时大家要多练习,这个大家倒不用买什么书籍,就可以在Leetcode网站,牛客网站上进行练习。
接下来就给大家奉上将近20家公司NLP算法岗的面经,供大家参考,我把面经分为了暑期实习面试篇和日常实习面试篇,其实暑期实习和日常实习面试的内容没有太大的区别,只是在流程上暑期实习面试的流程很长,在招聘上公司也会更加的谨慎。 当然只要大家对上面提到的四项内容全都掌握,那么面经倒也没有太大意义了,如果大家想沟通面试经验或者某些公司组别的相关情况可以关注公众号后获取我的联系方式,希望和大家一起交流学习。
(2) 对算数表达式求值,如给定字符串'1+((2+3)*4+(4+2))-5*(2+1)',求算数表达式结果
(3) Bert和Elmo在工程中存在的一些Trick
阿里面试体验:根据很多同学交流反馈的不完全统计,阿里面试一面难度最大,之后的面试好多都是只聊简历项目。阿里的HR权利很大,即使面到了最后一面HR面还是有很大可能会被挂掉,一句话夸张的概括一下阿里HR的存在吧,#阿里技术部的面试官是在给HR部门招人,而不是HR再给技术部招人#。而且阿里的流程走的是真的慢,很多同学都是在HR面后超过半个月才会收到offer意向书,所以面了阿里就得放平心态耐心等着吧。
(1) 不用Python自带的包实现INT转为STR
(2) 反转链表,剑指offer原题/Leetcode206
(3) 给定一段文本Text,对文本做各种数据统计
(1) 介绍过拟合的方法,L1和L2正则的区别,L1正则为什么产生稀疏解
(2) dropout方法如何防止过拟合,直接简化网络和dropout的区别
(3) 介绍深度模型中的优化函数以及优缺点,介绍实际工程中如何判定过拟合
(4) 给房屋面积/房间个数/是否有电梯/是否南北通透/楼层数以及房屋价格,描述解决思路
(2) 长度N的整数数组,只用乘法不用除法,求任意N-1个数乘积最大一组
(3) 二叉树中的所有和为Target路径,Leetcode113-路径总和2
(2) 分类文本中如果含有一些关键词扰乱分类结果如何处理,举例
(3) 分类文本中如果出现一些新词无法识别导致分类错误如何处理
(4) 分词多个分类模型的优缺点如CNN,RNN,FastText以及应用场景
(5) 开放题: 农夫山泉公司对水资源的开采是否会造成水资源的枯竭,如何看待
腾讯面试体验:暑期实习在流程上腾讯和阿里比也快不到哪里,但是腾讯有一个特别好且可以利用来加快面试速度的小方法,那就是基本每个人都可以直接接触到腾讯的HR,在面试进度被卡时,可以通过联系腾讯HR来直接推进面试进度,HR小姐姐一般都很乐意帮忙。还有就是腾讯HR面完之后基本就挺稳了,这点和阿里也差别很大。
3、算法题:字符串s只包含字母‘a’和‘b’,请问同时满足以下条件的字符串s’的最大长度(1)s’是s的连续子字符串,(2)s’里‘a’和 ‘b’数目相等 ,(3) o(n)的时间复杂度
(2) word2vec和FastText模型以及二者的区别,FastText算法N-gram作用
HR面试相对轻松,就是问了以前实习有没有什么收获以及之后的职业规划,还有HR介绍了一波头条的AI Lab
头条面试体验:头条给人的感觉就是严谨,无论从HR或者到面试官,首先头条的HR还是真的专业,在面试前都有HR先和你沟通面试时间,有什么问题都可以和HR沟通。谈到这点我就特想说,阿里的面试很多都是突然某个午休时铃声响起就这么突然地被面试了(基本都是用公用电话打,也不给你任何联系他们的机会,神秘的组织啊),至于HR嘛只有在HR面的时候你才能听到他的声音,但他还有决定你去留的强大权利。头条的面试官严谨怎么说呢,就是头条的每次面试基本都是一个小时左右,不少不多。但阿里和腾讯那就看面试官心情了。
(1)CNN
模型中池化层的作用,Max Pooling 是如何反向传递梯度的。
(2)机器学习中正则化做什么的?约束模型参数,防止过拟合。
(3)正则化有 L1 和 L2 正则化区别是什么
(4)Transformer
模型架构, Transformer 和 BERT 的位置编码有什么区别
(5)Dropout 有什么作用
3
、算法题:给定一个未排序的整数数组,找出最长连续序列的长度,o(n)时间复杂度,leetcode128原题
3
、算法题:寻找两个有序数组的中位数,o(log(n))时间复杂度,leetcode4原题
2
、算法题:array=[1, 3, 7, 9, 12, 15, 21], target=21, 找出数组中所有和(n个数,n=1,2,…)目标数的数集合,leetcode39、leetcode40组合总和问题
(1)
寻找二叉树中任意两个节点的公共父节点,无指向父节点的指针且不准添加
(2)
两个list1,list2保存了电话信息,电话都是字符串且都有数字组成长短不一,查询list2中电话在list1中出现的情况:如果完全匹配返回电话,如果只是前缀且仅是一个电话前缀返回电话,若是多个电话前缀则返回空,如果完全不匹配返回空
1
、聊简历项目,介绍BERT、Attention、Transformer原理
2
、场景题:对于分类问题中的多标签问题/或者多级字标签问题如何解决
3
、算法题1:二叉树的层次遍历,leetcode102,leetcode107原题
3
、写出交叉熵公式并解释为什么要使用交叉熵作为损失函数去评估误差
2
、介绍Bert、XLNet、Attention、CNN的原理,
3
、探讨了rule激活函数如果不加在卷积层之后而是加在最大池化层之后有什么影响
3
、算法题1:使用Tensorflow实现Softmax函数
4
、算法题2:给了一个文档集合,计算每篇文档中每个单词的TF-IDF值
5
、算法题3:二维平面有很多点,判断二维平面中是否存在平行线
2
、传统机器学习:L1/L2正则化及对损失函数造成影响的区别、逻辑回归、GBDT原理以及残差实现细节、GBDT和Xgboost对比、高斯过程原理、吉布斯采样原理
4
、算法题2:给定两个整数数组,对第一个数组进行排序,整数顺序由其在第二个数组中的位置决定,对于没有出现在第二个数组中的整数,应排在末尾,其之间顺序无限制。这里整数的取值范围是[0, 2^32-1],例如第一个数组为5 1 6 2 1 2 3, 第二个整数数组为2 1 3, 则排序结果为2 2 1 1 3 6 5或2 2 1 1 3 5 6
2
、word2vec原理、如何得到词向量,fasttext原理
3
、GDBT梯度决策提升树、xgboost、lightgbm原理及区别
4
、算法题:给定数组例如[A,B,C,D,E,F],给定目标数C, 得到数组[D,E,F,C,A,B]
2
、算法题:两数之和,从数组array中找出两数之和为target
3
、算法题:在一个坐标系中给定(0,0)、(a,b)点,从(0,0)点出发,每次只能向右走一步或者向左走一步,到达目标点(a,b)点一共需要走多少步
4
、GBDT和xgboost的原理,为什么常说xgboost可以并行的,GBDT和xgboost有什么区别
5
、L1正则化和L2正则化的区别,L1正则为什么产生大量稀疏解
3
、算法题:将多个排序好的链表合并成一个有序链表
4
、一对夫妻有两个孩子,第一个是女孩,问第二个是男孩的概率
5
、CNN,RNN,LSTM,BERT全称都是是什么
2
、介绍Bert、Transformer、Attention原理
4
、算法题:在二叉树中同层的节点之间添加左孩子到右孩子的指针
2
、算法题:树中任意两个节点的最近公共父节点,面试官让使用两种递归的方式实现,并且又要求使用迭代形式实现,迭代实现树的中序遍历
3
、深度学习相关知识:CNN架构理解,梯度消失和梯度爆炸,L1正则和L2正则,损失函数
2
、算法题:LCS迭代实现、递归实现、LCS序列打印、算法优化,LCS和最长公共子串区别
5
、许多开放性试题如:维护一个项目上线最主要的是什么,NLP领域都有哪些任务,词向量预训练发展整个过程等等
2
、介绍HAN模型原理,Attention机制原理
3
、算法题1:判断一个序列是否是二叉搜索树的后序遍历序列
4
、开放算法题2:在牛市实时数据,不断的有数字型数据流进入,如何在每次进入时得到当前所有数据的中位数
1
、求公选课人数的平均数(不知道每个公选课的选课人数)
2
、给出QA中的Question和Answer,你能做些什么
3
、word2vec中cbow\skip-gram滑动窗口设定大小有何影响
4
、有事笔记本电脑跑程序出现内存不够用,但是打开任务管理器发现还有空余内存为什么
3
、CNN和RNN中反向梯度传播过程,为什么会出现梯度消失或梯度爆炸
2
、算法题:设计一个游戏角色在地图中从起始位置到目标位置是否有可行路径,如果有记录下来
投稿或交流学习,备注:
昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:
机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。