赞
踩
节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂同学、参加社招和校招面试的同学,针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。
今天我整理 NLP 算法方向的面试题,分享给大家,希望对后续找工作的有所帮助。喜欢记得点赞、收藏、关注。更多技术交流&面经学习,可以加入我们。
前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~
我们建了算法岗技术与面试交流群, 想要进交流群、需要源码&资料、提升技术的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司+CSDN,即可。然后就可以拉你进群了。
方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2060,备注:技术交流
作者介绍
中文系转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,祝非毕业年级同学们学有所成~
建议尽早准备呦
提前批投递时可以自主选择部门,有些部门的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. 面试形式为电话面试,面试官小哥哥的声音也太好听了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。