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