NLP从业者拿到BAT50万offer的提升历程:分享近100道NLP面试题

这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战

1.个人介绍

信息工程管理硕士,9年工作经验,工作主要是做NLP以及一些数据挖掘的事情,同时也做一些工程的事情。其实我个人很早就关注july了,最早可以追溯到2012年左右的为学论坛,那个时候我刚毕业没多久找的是开发的工作,后来也一直看校长在csdn上面的博客,尤其是那篇SVM真的很好。

2017年开始我转型专注做推荐系统以及一些NLP的事情,但前几年NLP并没有像现在这样大幅度使用深度学习,我们当时的做法还是普通的机器学习和特征为主,后来感觉知识升级太快,而自己的经验已经不够用了,所以就开始在网上找一些课程零零散散地学习。最初一直在B站上看一些公开课,经典课程包括李宏毅、NG的课程,当然这些也都是理论为主,自己实际应用的时候还是有点困难,直到有一次偶然看到七月在线的视频,感觉内容很实用,有空就开始看了起来,后来才知道创始人就是july,所以就有了一种似曾相似的感觉。

从2017年左右我就一直学习七月在线的课程,学习过很多内容,包括:初级的机器学习、深度学习、推荐系统、[NLP高级小班 5期]。总之,无论理论还是实践对已经工作多年的我来说非常有用。我的知识体系重新进行了梳理。

2.关于简历

准备好一份简历,对你找工作来说已经成功了一半,如果不知道怎么写简历也可以找就业老师帮忙,其实模版都是固定的,只要按照模版来认真准备自己的简历问题都不是很大。

第一点: 针对简历项目内容

  • 如果之前是从事于NLP或者数据相关的话,把自己的工作内容梳理好,然后把工作项目结合培训课程,进行总结归纳整理就可以了,我个人最大的体会就是通过系统培训后,我原有的任务可以通过适配升级,而且在老师讲课的过程中我经常有一种醍醐灌顶的感觉,很多疑惑都得到了解答,当然这个也体现了自学的情况下很容易陷入误区

  • 如果大家之前没有AI相关的工作项目的话,那么假设就是一个Python数据基础了解或者之前从事Java等其它业务系统开发人员。这种情况属于转型的,针对NLP项目的话,可以考虑一些真实的项目进行练手,注意一定要自己动手,自己动手、自己动手。

总之,对简历项目部分还是多练习(自己工作项目、课程项目、比赛项目、github类似项目等拿来学习),再次提醒:一定要自己亲自手写代码哦( 哪怕自己抄呢,总之写出来才能有更深的理解)

第二点:简历真实性

我们在写简历的时候,不要过度包装,要尽可能地真实,因为最终你是需要在公司干活的,到时候万一简历很好看但在实际工作中却不知道如何下手,这样对自己的工作也会很不利。

关于面试公司,建议大家按照小公司-> 中型公司-> 大公司,这种顺序进行面试练手,而且每次面试完都需要自己多进行总结经验,不要每次在同一个地方跌倒。

总的来说一定要把自己简历里面的内容写地请清楚楚,别过度夸张,此外也要注意自己简历的整洁性,最好找老师要个好的模版。

3.前期准备

关于面试题目,从五个大的方面准备

  • 数据结构

  • 机器学习知识

  • NLP面试相关题目

  • 大数据相关的工具

  • 线上工程开发

3.1 数据结构

这个基本在大厂都会考,我当时是先刷的剑指offer,里面的题目基本都是经典题目很容易考到,其次也可以按照数据结构里面的不同数据结构进行刷题大致分为如下几块

  • 字符串相关(编辑距离、字符串转整数,找出数组k大,有序数组合并,公共子串等)

  • 数组类

  • 链表类型题目

  • 二叉树

  • 图搜索(深度优先、广度优先)

算法的话基本会考:

  • 动态规划(背包问题)

  • 贪心算法

总之,这一部分,一定要刷,保持手感,其实我个人感觉在实际项目中数据结构有时候也会起到一定的作用

3.2 机器学习知识

LR,GBDT,xgboost,CRF、SVM这些常考即可

上述涉及到的原理、公式推导、损失函数之类要掌握,面试的时候基本上就没什么大的问题。

建议: 如果大家有时间,最终可以把上述提到的算法通过代码方式实现一篇(可以找些比赛的数据,例如: kaggle,或者github等),这样可以加深印象。

3.3 NLP面试题目

大家本身就是NLP岗位工作,故这方面的内容相对比较多。

其实主要两个方面: 工作项目+理论知识

  • embedding 的一些知识(必须掌握,原理和区别)

Word2vec、glove、elmo、bert这些基本都会被问到,而且这几个算法之间也存在着先后的演变关系,所以一定要熟练掌握,而且在我面试的过程中基本都会问到bert的问题,预训练模型一定要好好地掌握 3.4 大数据相关的工具

这个涉及到自己工作日常需要用到的工具包括hive、spark、flink、kafka等,当然这个对于nlp工程师来说不是必须的,但是能够掌握还是更好的。

3.5 线上工程开发

这个涉及到模型的蒸馏、高并发的情况处理、以及对外提供接口等,当然对于NLP工程师来说也不是必须的。

4.面试常见问题总结

这里面总结了NLP机器学习相关的常见面试题,供大家参考学习。

  1. GBDT , XGBOOST, lightGBM 之间的异同。

  2. XGBoost 的参数调优有哪些经验(工程能力)

  3. XGBoost 的正则化是如何实现的(工程能力)

  4. XGBoost的并行化部分是如何实现的(工程能力

  5. Xgboost 优化点

  6. 决策树节点分裂时如何选择特征,写出Gini index 和Information Gain 的公式并举例

  7. 分类树和回归树的区别是什么?(理论基础)

  8. 与Random Forest 作比较,并以此介绍什么是模型的Bias 和Variance(理论基础)

  9. xgboost 是用同一个模型吗?

10.谈谈判别式模型和生成式模型?

11.各种聚类算法的优缺点划分:K-means 层次:AGNES 密度:DBSACN 模型:EM

12.Xgboost 优化点、LightGBM 与XGboost 的联系及区别,是都试过了么

13.如果选用一种其他的模型替代XGBoost,你会选用什么?

14 bagging、boosting、stacking 的异同。

  1. embedding 的作用是什么?

  2. embedding 物理意义?

  3. 神经网络中的梯度消失和梯度膨胀是什么,怎么解决?

  4. 激活函数的作用

  5. 如何检验过拟合,数据量很小怎么办?

  6. CRF 的算法的解释。

  7. 介绍momentum,RMSprop 和Adam 等优化方式

  8. word2vec 算法推导

  9. word2vec 的优化

24.glove 和word2vec 对比有什么区别?

  1. attention 的原理,计算公式。

  2. seq2seq 的缺点,如何改进?

  3. 循环神经网络RNN 怎么解决长期依赖问题?LSTM 的结构是怎样的?

29.怎么理解“长短时记忆单元”?RNN 中的隐状态ht 与LSTM 中的记忆状态Ct 有什么区别?

30.Transformer 原理。手撕

  1. Transformer Encoder 与Decoder 有哪些不同?

  2. Encoder-Decoder attention 与self-attention

  3. Multi-Head attention、多头的理解

  4. Position Embedding 位置编码

  5. Bert 训练的一些参数?

  6. bert 算是去年的工作了,有了解今年有哪些新的技术吗?简单讲讲。

  7. BERT 原理。

  8. BERT 适合哪些场景,不适合哪些场景。

  9. BERT 训练过程中用到涉及到的哪些任务,这些任务如何去实现完成的。

  10. 如何使用bert?Bert 调参数的心得。

  11. 在做NER 任务时,lstm 后面可以不用加CRF 吗?

  12. BERT 和GPT 的区别

  13. 如何使用bert?

44.TextRank 原理?

  1. 聚类方式。K-means,层次聚类,DBSCAN...

  2. 样本不平衡的解决方法?

  3. 介绍一下,一些基于BERT 的改进的模型。

  4. 写下bilstm+crf 的损失函数?损失函数中的max 有什么作用,为什么要减去这个max?具体的emission score 与transition score 是如何得到的?

49.推导LR 的损失函数与梯度下降更新参数(必须要手推一下,当时就没准备好)

  1. 如何理解过拟合,怎样解决过拟合现象(当时没说全,过拟合现象的原因没有讲清楚)

51.Transformer 在GPT 和Bert 等词向量预训练模型中具体是怎么应用的?有什么变化?

52.NLP 特征抽取机制有哪些?(基于DN), 各有哪些优缺点

53.为什么是缩放点积,而不是点积模型?

54.为什么是双线性点积模型(经过线性变换Q !=K)?

55.相较于加性模型,点积模型具备哪些优点?

56.用到了什么激活函数,怎么选择激活函数的使用。

57.讲一下高方差和高偏差。

58.下cnn,为什么cnn 中要padding,池化呢。

59.自然语言中如何选择使用cnn 和rnn。

60.因为项目中使用到了macro-f1,所以问了marco-f1,为什么不用Precision、recall?

61.了解python 的深浅拷贝吗?装饰器呢?

62.请简要介绍下SVM

63.请简要介绍下tensorflow 的计算图

64.欧氏距离、曼哈顿距离

65.tf-idf 怎么做的

  1. 手写一个tfidf

  2. 读取文件,计算TF-IDF

  3. 为什么tf-idf char 会对结果有提高?

  4. glove 和fasttext 怎么训练的?

70.词向量如何训练的?(word2vector)

71.word2vector 为啥语义相近的词的词向量相近?怎么达到效果的?

  1. softmax 和sigmod 区别?

当然更多还是要好好地看看七月在线里面的一些题目,可去julyedu.com ,然后选择面试题库即可

image.png