不愧是大厂!面了百度、腾讯 NLP 算法岗,收获很多!

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂同学、参加社招和校招面试的同学。

针对大模型技术发展趋势、大模型项目落地经验分享、新手如何入门算法岗、该如何备战面试、面试常考点等热门话题进行了深入的讨论。

今天我继续整理 NLP 方向的面试题分享给大家,希望对后续找工作的有所帮助。

360 NLP 算法岗

介绍

中文系转 NLP,985 应用语言学研三,微软 STCA 的swe暑期实习,在研究生阶段做过导师给的toB的NLP横向项目(命名实体识别),刷了200+题。

面试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,祝非毕业年级同学们学有所成~

腾讯 NLP 算法岗

找工作建议尽早准备,在社群,我收获了很多宝贵的面试经验、AI 项目落地实战案例、困惑答疑。

提前批投递时,可以自主选择部门,有些部门的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. 回答问题的思路以及速度都是考察项。

百度 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

  • 增量训练

  • 在线学习方法

(完)

附上技术清单

在这里,我们想要强调的是:成功求职并不是一件难事,关键在于你是否做好了充分的准备。通过学习和掌握AI技术的相关知识和技能,了解面试中可能出现的问题和技巧,你就能够在面试中展现出自己的专业素养和实力,赢得面试官的青睐和认可。因此,让我们一起努力,用知识和技能武装自己,迎接AI时代的挑战和机遇吧!
有需要的朋友可以扫描下方二维码,免费获取更多相关资料!

最后,祝愿所有转行、求职的同学都能够在AI产品面试中取得优异的成绩,找到心仪的工作!加油!

大模型基础面

在这里插入图片描述

大模型进阶面

在这里插入图片描述

大模型微调面

在这里插入图片描述

大模型langchain面

在这里插入图片描述

大模型推理面

在这里插入图片描述

更多面试题分享

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值