文章目录
- 技术交流群
- 1、360 NLP 算法岗
- 2、腾讯 NLP 算法岗
- 3、百度 NLP 算法岗
- 用通俗易懂方式讲解系列
节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂同学、参加社招和校招面试的同学,针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。
今天我整理 NLP 算法方向的面试题,分享给大家,希望对后续找工作的有所帮助。喜欢记得点赞、收藏、关注。更多技术交流&面经学习,可以加入我们。
技术交流群
前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~
我们建了算法岗技术与面试交流群, 想要进交流群、需要源码&资料、提升技术的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。
方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2060,备注:技术交流
1、360 NLP 算法岗
作者介绍
中文系转NLP,985应用语言学研三,微软STCA的swe暑期实习,在研究生阶段做过导师给的toB的NLP横向项目(命名实体识别),leetcode刷了600+题。面试360的时间是11月初,距离笔试也过了一个多月,简历被业务反复筛选最后还是约面了。这轮面试是过了,进入排序阶段。
问项目
我复述在研究生阶段做的导师的横向项目的过程,面试官讲到像我做的冷启动文本分类项目,有标注的数据很少,和他们的场景比较像。介绍了一遍他们的项目,主要是做toB和toG的文本分类。
-
Q:如果任务是识别包含某种医疗手段的违法广告,怎么实现?
A:可以用意图识别的方法,算目标语句的词向量和某个意图向量的相似度,超过某一阈值就算。
-
Q:自己实现深度学习项目的时候,用了几张卡,大约用时多久
A:用的数据并行,4w条数据,用了几个小时。顺便主动讲了一下数据并行的原理,和模型并行的区别。
-
Q:有没有部署过推理服务?
A:不知道。
-
Q:面试官:部署模型之后,请求量很大,要把它做成服务。有tf-serving、torch-serve如果训练模型时候发现显存只占用10%,该如何调整?
A:调大batchsize、增加文本长度、提升小数精度
-
Q:面试官说还有加深网络层数
-
Q:反过来如果爆显存了该如何调整?
A:半精度、调小batchsize、减少网络层数、dropout (忘记说梯度累加了)
-
Q:模型量化有了解吗?
A:不了解。但是实践中改小过模型精度。
听写 Linux 基础命令
-
Q:ls, pwd是什么指令?
-
Q:怎么看一个文件有多少行?(不会)
wc-l
-
Q:深度学习过程中要看显卡显存占用率?
nvidia-smi
-
Q:要把python挂到后台执行?
nohup python test.py &
-
Q:批量替换文件名中的某个单词(不会)
sed
-
Q:查询之前用过的命令(不会)
history | grep
问 NLP 基础知识
-
Q:Word2vec, FastText, BERT 三种模型的embedding是怎么产生的?它们的相同和不同点?
A:相同点:都基于分布式语义,一个词的含义由上下文决定。
不同点:前两者是静态词向量,一个词对应一个embedding。BERT因为有self-attention机制,得到的是语境词向量,上下文不同,目标词位置的向量也不同。
-
Q:Word2vec, FastText, BERT在词表上有什么不同?怎么处理不在词表中的词(OOV)?
A:Word2vec没法处理OOV。Fasttext和BERT都是能给OOV一个embedding的,方法是subword,也就是拆分了子词。但是BERT的词表是word-piece,用类似于BPE的方法,通过多轮迭代,无监督获得的;而Fasttext就是用n-gram切的。
-
Q:Word2Vec是如何实现在几万个向量中查询与query词向量最接近的向量的?
A:我一开始说gensim的w2v是有现成的api的
most_similar()
,但是内部实现方法不确定,肯定不是暴力法。可能是先排序,再类似于搜索树?面试官说可以往聚类的方面想。我就想到可以用聚类的逆操作。先随机生成k个点作为聚类中心,把几万个词向量分成k个类别,再用目标词向量和k个类别做相似度,找到最接近的类别。再对这个类别再分成k类,再分布做相似度计算,直到不能再分。面试官说差不多是这样,faiss、hnsw就是用来做这种事的。
做题:翻转链表和全排列
总结
面试官全程比较温柔,会给很多提示。最后说,现在hc比较少,但是前面的人可能会鸽。让我先进流程。
祝大家都能拿到满意的offer,祝非毕业年级同学们学有所成~
2、腾讯 NLP 算法岗
建议尽早准备呦
提前批投递时可以自主选择部门,有些部门的hc几乎全都留给实习生转正,建议无法实习的童鞋们,提前做好调研,避开这些部门。
部门选错了就直接凉了哦(手动微笑脸)
体验总结
a. 面试内容很全面,会涉及相关领域的前沿工作,并且会问的相当深入
b. 项目问的非常细节,我们的项目面试官基本都有了解,不会出现面试官不懂项目的情况
c. 不会问特别难的算法(比如线段树,公共祖先),感觉腾讯更注重基础
一面
-
自我介绍+项目
-
序列标注常见算法有什么
-
之前常见的序列标注问题的解决方案都是借助于HMM模型,最大熵模型,CRF模型
-
CRF HMM 区别
-
HMM是有向图,CRF是无向图
-
HMM是生成式模型(要加入对状态概率分布的先验知识)
-
CRF是判别式模型(完全数据驱动)
-
CRF解决了标注偏置问题,去除了HMM两个不合理的假设等等。
-
多分类序列标注怎么做
-
如何构建想要的词表
-
指针与引用的区别
-
TransformerXL是什么?为了什么而提出
-
XL是“extra-long”的意思,即Transformer-XL做了长度延伸的工作;
-
Transformer规定输入大小为512,原始的输入需要进行裁剪或填充,即将一个长的文本序列截断为几百个字符的固定长度片段,然后分别处理每个片段。
-
这存在着文章跨片段依赖不能学习到的问题,也限制了长距离依赖。为了解决这一问题,Transformer-XL被提出。
-
那么Transformer XL进行了什么改进呢?
-
使用分段RNN(segment-level recurrence mechanism)且存储上一次处理的片段信息;使用了相对位置编码方案(relative positional encoding scheme))
-
BERT ELMO XLNET 区别
-
模型结构
-
自回归和自编码语言模型在生成方面的问题
-
XLNet维持了表面看上去的自回归语言模型的从左向右的模式,这个Bert做不到。这个有明显的好处,就是对于生成类的任务,能够在维持表面从左向右的生成过程前提下,模型里隐含了上下文的信息。
-
一道编程题:全排列,一般难度
二面
-
自我介绍+项目
-
项目
-
项目现在再看可以怎么改进
-
项目的学习率怎么调的
-
发没发论文,毕业前是否有发论文的打算
-
根据项目引申了很多
三面
-
自我介绍+项目
-
BERT warm-up
-
BERT都有什么改进
-
ERNIE 怎么做的
-
把bert的单字mask改为词mask,直接对语义知识进行建模,增强了模型语义表示能力。
-
引入多源数据语料进行训练;
-
引入了论坛对话类数据,利用 DLM(Dialogue Language Model)建模 Query-Response 对话结构,将对话 Pair 对作为输入,引入 Dialogue Embedding 标识对话的角色,利用 Dialogue Response Loss 学习对话的隐式关系,进一步提升模型的语义表示能力;
-
通过在自然语言推断、语义相似度、命名实体识别、情感分析、问答匹配 5 个公开的中文数据集合上进行效果验证,ERNIE 模型相较 BERT 取得了更好的效果。
-
继1.0后,ERNIE英文任务方面取得全新突破,在共计16个中英文任务上超越了BERT和XLNet, 取得了SOTA效果。
-
ERNIE 2.0相对于1.0有什么改进
-
百度提出可持续学习语义理解框架 ERNIE 2.0。该框架支持增量引入词汇( lexical )、语法 ( syntactic ) 、语义( semantic )等3个层次的自定义预训练任务,能够全面捕捉训练语料中的词法、语法、语义等潜在信息。
-
算法题:
-
n分解成最少多少个平方数的和
-
n个串的最大公共前缀
-
树后序遍历非递归(要求空间时间复杂度,并不断改进)
提前批已经开始啦,三面技术面,没有HR面
(其中三面是经理面,技术人际各个方向都会涉及)
体验总结
a. 面试形式为电话面试,面试官小哥哥的声音也太好听了😍
b. 考察内容非常之全面,很注重基础;对于所有考察的内容,更注重理解。
c. 回答问题的思路以及速度都是考察项。
3、百度 NLP 算法岗
一面
-
自我介绍+项目
-
项目细节
-
batchsize大或小有什么问题
-
LR怎么设置
-
机器学习基础:
-
L1L2正则化
-
优化器
-
激活函数
-
python基础:
-
yeild是什么
-
与return的区别
-
线程进程
-
装饰器
-
python内部实现的多线程有什么问题
-
假的多线程
-
Linux基础:
-
AWK
-
nohup
-
用过最复杂的linux命令是什么
-
NLP基础 :
-
word2vec 两种训练方式哪种更好?
-
对生僻词谁更好?
-
CBOW模型中input是context(周围词)而output是中心词,训练过程中其实是在从output的loss学习周围词的信息也就是embedding,但是在中间层是average的,一共预测V(vocab size)次就够了。
-
skipgram是用中心词预测周围词,预测的时候是一对word pair,等于对每一个中心词都有K个词作为output,对于一个词的预测有K次,所以能够更有效的从context中学习信息,但是总共预测K*V词。
-
skipgram胜出✌️
-
编程题:
-
最长公共子序列
-
(老生常谈,不再赘述)
二面
-
自我介绍+项目
-
CRF作用
-
标注的时候样本不均衡怎么办
-
数据增强
-
损失函数有个weight参数也可以一定程度解决这个问题 (如果正例少,损失函数的w就提高,(会提高F1 ))
-
Transformer
-
self-attention 有什么作用(捕获依赖关系)
-
梯度消失爆炸(CEC机制)
-
螺旋爆炸编程题快问快答环节💥
-
问了很多编程题,要求列出公式以及完整思路,最后选一个写出代码
-
时间太久了 =_= 小媛只记住了这几个
-
最大上升子序列(dp[i] = dp[j]+1 (j < i && nums[j] < nums[i]))
-
旋转数组找K值
-
只有01生成器,如何生成 0-3等概率,如何生成 0-k等概率(模拟二进制)
-
各种python基础:
-
python2python3map的差别
-
装饰器
-
线程安全/读写锁/智能指针
-
大文件字典:比如{abc:‘aabc’,‘cba’,‘ccab’} mapreduce
-
Hadoop
-
流式抽样
-
对数据流的随机抽样
-
蓄水池抽样算法(Reservoir Sampling)
-
1/n的概率留下当前的,手中的k个每个的概率是1/n-1
-
跳台阶+有一次后退机会(dp[i][0/1])
三面
-
项目各种发散的不同的业务场景问题
-
人际需求问题
-
上线遇到用户反馈错误怎么解决
-
迅速学习编程语言的能力
-
能否接受算法之外的其他工作比如开发
-
百度内部是否还投了别的部门(因为提前批可以自主投递多个部门)
-
面试官说后续等消息,可能要很久
-
已经训好的模型,放到新的数据上怎么提高性能,模型不允许fintuing
-
增量训练
-
在线学习方法
用通俗易懂方式讲解系列
- 用通俗易懂的方式讲解:自然语言处理初学者指南(附1000页的PPT讲解)
- 用通俗易懂的方式讲解:1.6万字全面掌握 BERT
- 用通俗易懂的方式讲解:NLP 这样学习才是正确路线
- 用通俗易懂的方式讲解:28张图全解深度学习知识!
- 用通俗易懂的方式讲解:不用再找了,这就是 NLP 方向最全面试题库
- 用通俗易懂的方式讲解:实体关系抽取入门教程
- 用通俗易懂的方式讲解:灵魂 20 问帮你彻底搞定Transformer
- 用通俗易懂的方式讲解:图解 Transformer 架构
- 用通俗易懂的方式讲解:大模型算法面经指南(附答案)
- 用通俗易懂的方式讲解:十分钟部署清华 ChatGLM-6B,实测效果超预期
- 用通俗易懂的方式讲解:内容讲解+代码案例,轻松掌握大模型应用框架 LangChain
- 用通俗易懂的方式讲解:如何用大语言模型构建一个知识问答系统
- 用通俗易懂的方式讲解:最全的大模型 RAG 技术概览
- 用通俗易懂的方式讲解:利用 LangChain 和 Neo4j 向量索引,构建一个RAG应用程序
- 用通俗易懂的方式讲解:使用 Neo4j 和 LangChain 集成非结构化知识图增强 QA
- 用通俗易懂的方式讲解:面了 5 家知名企业的NLP算法岗(大模型方向),被考倒了。。。。。
- 用通俗易懂的方式讲解:NLP 算法实习岗,对我后续找工作太重要了!。
- 用通俗易懂的方式讲解:理想汽车大模型算法工程师面试,被问的瑟瑟发抖。。。。
- 用通俗易懂的方式讲解:基于 Langchain-Chatchat,我搭建了一个本地知识库问答系统
- 用通俗易懂的方式讲解:面试字节大模型算法岗(实习)
- 用通俗易懂的方式讲解:大模型算法岗(含实习)最走心的总结
- 用通俗易懂的方式讲解:大模型微调方法汇总