【NLP算法面经】字节跳动算法岗四面详细面经(★附面题总结★)
🌟 嗨,你好,我是 青松 !
🌈 自小刺头深草里,而今渐觉出蓬蒿。
NLP Github 项目推荐:
-
【AI 藏经阁】:https://gitee.com/fasterai/ai-e-book
介绍:该仓库主要分享了数百本 AI 领域电子书
-
【AI 算法面经】:fasterai/nlp-interview-handbook#面经
介绍:该仓库一网打尽互联网大厂NLP算法面经,算法求职必备神器
-
【大模型(LLMs)面试笔记】:https://gitee.com/fasterai/nlp-interview-handbook
介绍:该仓库汇总了 NLP 算法工程师高频面题,适合大模型初学者和正在准备面试的小伙伴希望能帮助各位同学缩短面试准备时间,不错过金三银四涨薪窗口,迅速收获心仪的Offer 🎉🎉🎉
个人情况
上海交通大学研究生,本科毕业于中国科学技术大学,目前专业是电子与通信工程,主要研究方向是文本匹配(NLP)。面试中的自我介绍第一句 hhh:)
一面
7月8日被字节跳动HR的电话捞起来了,直接进入了秋招模式,在接下来的一个月里,基本没有投递提前批,就专注参加了字节跳动的几次面试。
- 前半段主要都是在讲项目,面试官追问了一些项目细节的东西,以及做项目的心路历程。
- 然后就问了一道算法题,就是著名的「小兔的棋盘」,我后来查了一下,是什么卡特兰数。然而面试的时候我没听说过这一道题,不过还是磕磕绊绊地用DFS解出来了,面试官说可以了,也没让我继续用DP来解。哎,算法还是有点菜的。
总结:一面大约持续40min,感觉一面主要还是在问项目,算法就问了一道题,发挥一般。面完之后一度以为挂了,不过还好在第二天就接到了二面的电话,HR说一面面试官评价很好???
二面
7月16日进行了二面,二面感觉比一面严格了很多。
-
一开始我讲了论文的一些东西,然后面试官追问了非常多,有一些可能答得不太好,感觉对自己的项目也好,论文也好,一定要有自己深入的理解,不然容易被问住。
-
二面也是问了一道算法题,是寻找迷宫中的最短路径,迷宫中1表示有墙,路不通,0表示可以走。我脑子不知道怎么抽了,直接想用DFS来解,给面试官讲了一下思路。面试官提醒我,DFS和BFS你是怎么考虑用哪个的。然后我就明白了,应该用BFS,讲了一下BFS和DFS适用的场景。然后用BFS比较顺利的写出了程序。
总结:二面大约持续40min,感觉主要缺点还是在于对项目和论文的应用场景以及模型优缺点总结的不是很到位。二面后大概过了三天,等来了三面的电话。这时候还是挺紧张的,毕竟走到了最后一面,挂了就太划不来了。
三面
7月23日进行了三面,三面问的非常多,持续了90min。不过感觉三面面试官很善于引导,所以总体还回答的不错。
-
一开始就问了一道算法题,「LeetCode 76. Minimum Window Substring. Hard」。当然,O(mn)复杂度的算法非常好想,我也是第一时间讲了这个思路。面试官提醒我能不能再优化,我优化到了O(nlog(m)),就不知道怎么再优化了,面试官说可以了。最后查了一下,这道题我做过,不过做的时候也是直接用的O(mn)的算法,O(n)对我来说,还是不太好想到的。
-
概率题:考虑五局三胜和三局两胜的情况,哪种更公平之类的。这道题本身比较简单,直接算概率就可以。不过我扯得挺多的,自己分析了2k-1局k胜的情况,以及无数局是什么情况,结合了一下中心极限定理之类的。不过最后整个框架讲的不是太好,没有完整的圆回来。总体感觉这道题答得还可以。
-
结合具体场景的题目:A文件有m个专有名词,B文件有n个query,统计每个专有名词出现的次数。回答这个问题,主要其实就是考虑复杂度和分布式的知识,以及如何在query中查找专有名词(本身比较简单,考虑复杂度就不简单了)。不过我对分布式了解的不多,就只是自己手动分布式了一下。
-
结合实际问题问:如何判断用户查询Query的意图是否是视频,以及如何搭建整套模型。Emmmm,这里主要涉及到机器学习模型的构建,重点在于如何构造训练数据,利用点击率还是提醒了一下才想到的。对具体场景还是不太熟悉。还有考虑如何排序召回之类的事情,主要就是准确性和时效性的权衡。
-
CNN,RNN,Tansformer分别如何编码文本,答得中规中矩吧。
-
python的动态数组是如何实现的,说实话我不太清楚。就扯了一下字典是怎么实现的,然后借鉴字典的实现方式,自己臆想了一下动态数组是怎么实现的,好像还大体是对的。编程语言基础这一块比较弱了。
-
这一面问的挺多的,剩下有些问题我都忘了。
总结:总体这一面重点感觉在于如何在具体场景中选用合适的机器学习模型,如何构造训练数据。跟具体场景结合的能力还是挺重要的。最后问了一下面试官我的表现如何,面试官说非常满意。感觉稳了,然而没想到。。。看第四面。
四面
本来三面结束后,在焦急的等待结果,没想到突然北京的HR通知四面,跟我说大家一般都是三面或者四面。
-
讲了项目,主要深入问了项目中如何构造例的情况,以及几种不同的构造方式构造出来的要区别对待吗?这个自己之前确实没有认真想过,不过对项目比较熟悉,基本还是顺畅的聊下去了。
-
讲了一下论文,也是深入问了一个细节,这里就不展开了。
-
实际问题:在用户搜索场景中,如何在用户搜索的时候根据用户输入的字推荐要搜索的query,以及如何把错别字也正确推荐。主要是考虑输入与候选集合的匹配,用户画像的构建,考虑用户的历史搜索信息。结合具体业务的问题感觉主要考察思维发散,回答的感觉还可以,结合了StarSpace等Embedding的方式。
-
算法题:一个正整数数组,寻找连续区间使得和等于target,简单的用两个指针做出来了,不过让我证明一下解法的正确性,纠结了一会儿也算是证明出来了。然后如果里面有负数怎么做,很顺利的讲出来了。
总结:四面大致持续了40min,感觉三面和四面主要还是和具体业务场景结合的比较深入。
大模型(LLMs)高频面题全面整理
介绍:本项目全面总结了【大模型面试】的高频面题和答案解析,答案尽量保证通俗易懂且有一定深度。
适合大模型初学者和正在准备面试的小伙伴。希望能帮助你快速完成面试准备,先人一步顺利拿到高薪 Offer 🎉🎉🎉
一、大模型进阶面
💯 DeepSeek篇
【大模型进阶面 之 DeepSeek篇】 你必须要会的高频面题 查看答案
- 一、概念篇
- 二、模型结构篇
- 三、预训练篇
- **四、有监督微调篇
- 五、强化学习篇
💯 大模型编辑篇
【大模型进阶面 之 模型魔改篇】 你必须要会的高频面题 查看答案
- 模型编辑(Model Editing)核心目标是什么?
- 对比重新预训练和微调,模型编辑的优势和适用场景是什么?
- 如何用模型编辑修正大语言模型中的知识错误?
- 如何量化评估模型编辑的五大性质?
- 模型编辑局部性如何避免“牵一发而动全身”的问题?
- 知识缓存法(如SERAC)的工作原理是什么?
- 附加参数法(如T-Patcher)如何在不改变原始模型架构的情况下实现编辑?
- 知识缓存法和附加参数法的优缺点有何优缺点?
- ROME方法如何通过因果跟踪实验定位知识存储位置?
- 元学习法(如MEND)如何实现“学习如何编辑”?
- 元学习法的双层优化框架如何设计?
- More …
💯 大模型压缩篇
【大模型进阶面 之 模型压缩篇】 你必须要会的高频面题 查看答案
- 💯 为什么需要对大模型进行压缩和加速?
- 💯 什么是低秩分解?
- 💯 什么是奇异值分解(SVD)?
- 💯 权值共享为什么有效?
- 💯 什么是模型量化?
- 💯 什么是混合精度分解?
- 💯 什么是基于反馈的知识蒸馏?
- 💯 什么是基于特征的知识蒸馏?
- 💯 模型蒸馏的损失函数是什么?
- 💯 描述一下剪枝的基本步骤?
- More …
💯 分布式训练篇
【大模型进阶面 之 分布式训练篇】 你必须要会的高频面题 查看答案
- PS架构和Ring-AllReduce架构有何不同?
- 什么是张量并行,如何使用集群计算超大矩阵?
- 讲一讲谷歌的GPipe算法?
- 讲一讲微软的PipeDream算法?
- ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?
- 用DeepSpeed进行训练时主要配置哪些参数?
- More …
二、大模型微调面
💯 有监督微调(SFT)篇
【大模型微调面 之 SFT篇】 你必须要会的高频面题 查看答案
- 💯 从零训练一个大模型有哪几个核心步骤?
- 💯 为什么要对LLM做有监督微调(SFT)?
- 💯 如何将一个基础模型训练成一个行业模型?
- 💯 如何准备SFT阶段的训练数据?
- 💯 如何自动生成指令构建SFT的训练数据?
- 💯 LM做有监督微调(SFT)变傻了怎么办?
- 💯 有监督微调(SFT)和人工偏好对齐(RLHF)有何区别?
- More …
💯 高效微调篇
【大模型微调面 之 PEFT篇】 你必须要会的高频面题 查看答案
- 💯 全量微调与参数高效微调的区别是什么?
- 💯 什么是轻度微调?轻度微调有哪些常用方法?
- 💯 什么是BitFit微调?
- 💯 分层微调如何设置学习率?
- 💯 什么是适配器微调?适配器微调有哪些优势?
- 💯 讲一讲IA3微调?
- 💯 提示学习(Prompting) 代表方法有哪些?
- 💯 指令微调(Instruct-tuning) 和 提示学习(Prompting)的区别是什么?
- 💯 详细说明LoRA的工作原理及其优势?
- 💯 LoRA存在低秩瓶颈问题,ReLoRA和AdaLoRA分别通过哪些方法改进?
- 💯 动态秩分配(如AdaLoRA)如何根据层的重要性调整秩?
- More …
💯 提示学习篇
【大模型微调面 之 提示学习篇】 你必须要会的高频面题 查看答案
- 💯 提示学习(Prompting) 代表方法有哪些?
- 💯 前缀微调(Prefix-tining)的核心思想?
- 💯 提示微调(Prompt-tuning)的核心思想?
- 💯 P-tuning 的动机是什么?
- 💯 P-tuning v2 进行了哪些改进?
- 💯 提示微调(Prompt-tuning)与 Prefix-tuning 区别是什么?
- 💯 提示微调(Prompt-tuning)与 fine-tuning 区别是什么?
- More …
💯 人类对齐训练(RLHF)篇
【大模型微调面 之 RLHF篇】 你必须要会的高频面题 查看答案
- 💯 RLHF有哪几个核心流程?
- 💯 RLHF与SFT的本质区别是什么?为什么不能只用SFT?
- 💯 什么是人类偏好对齐中的"对齐税"(Alignment Tax)?如何缓解?
- 💯 在强化学习中,基于值函数的和基于策略的的优化方法有何区别?
- 💯 什么是近端策略优化(PPO)?
- 💯 RLHF中的PPO主要分哪些步骤?
- 💯 PPO中的重要性采样(Importance Sampling)如何修正策略差异?
- 💯 DPO如何通过隐式奖励建模规避强化学习阶段?
- 💯 DPO vs PPO:训练效率与性能上限的对比分析?
- 💯 RLHF训练数据的格式是什么样的?
- 💯 如何选择人类偏好对齐训练算法?
- More …
💯 Prompt 工程篇
【大模型微调面 之 提示工程篇】 你必须要会的高频面题 查看答案
- 💯 Prompt工程与传统微调的区别是什么?
- 💯 如何规范编写Prompt?
- 💯 上下文学习三种形式(零样本、单样本、少样本)的区别?
- 💯 如何通过预训练数据分布和模型规模优化上下文学习效果?
- 💯 思维链(CoT)的核心思想是什么?
- 💯 按部就班(如 Zero-Shot CoT、Auto-CoT)、三思后行(如 ToT、GoT)、集思广益(如 Self-Consistency)三种 CoT 模式有何异同?
- More …
三、大模型(LLMs)基础面
💯 大模型(LLMs)架构篇
【大模型基础面 之 LLM架构篇】 你必须要会的高频面题 查看答案
- 💯 LLM架构对Transformer都有哪些优化?
- 💯 什么是正弦(Sinusoidal)位置编码?
- 💯 什么是旋转位置编码(RoPE)?
- 💯 RoPE相对正弦位置编码有哪些优势?
- 💯 RoPE如何进行外推?
- 💯 如何进行位置线性内插(Position Interpolation)?
- 💯 NTK-Aware Scaled RoPE 和位置线性内插的区别是什么?
- 💯 PreNorm和PostNorm有何不同?
- 💯 为什么PreNorm通常能提升训练稳定性?
- 💯 为何使用 RMSNorm 代替 LayerNorm?
- 💯 LLM使用SwiGLU相对于ReLU有什么好处?
- 💯 SwiGLU的参数量是否会显著增加?如何优化?
- More …
💯 注意力机制(Attention)篇
【大模型基础面 之 注意力机制篇】 你必须要会的高频面题 查看答案
- 💯 为什么要引入 Attention 机制?
- 💯 Soft Attention 是什么?
- 💯 Hard Attention 是什么?
- 💯 Self-Attention 是什么?
- 💯 多查询注意力(Multi-Query Attention)是什么?
- 💯 分组查询注意力(Grouped Query Attention)是什么?
- 💯 分页注意力(Paged Attention)是什么?
- 💯 闪存注意力(Flash Attention)是什么?
- More …
💯 Transformer 理论篇
【大模型基础面 之 提示工程Transformer篇】 你必须要会的高频面题 查看答案
- 💯 Transformer 整体结构是怎么样的?
- 💯 Transformer的输入中为什么要添加位置编码?
- 💯 Transformer的位置编码是如何计算的?
- 💯 Position encoding为什么选择相加而不是拼接呢?
- 💯 多头注意力相对于单头注意力有什么优势?
- 💯 Transformer中自注意力模块的计算过程?
- 💯 什么是缩放点积注意力,为什么要除以根号d_k?
- 💯 批归一化和层归一化的区别?
- 💯 Layer Normalization 有哪几个可训练参数?
- 💯 Transformer 中有几种 Mask?
- More …
四、NLP 任务实战面
💯 文本分类篇
【NLP 任务实战面 之 文本分类篇】 你必须要会的高频面题 查看答案
- 如何用检索的方式做文本分类?
- 如何用Prompt的方式做文本分类?
- 使用LLM做文本分类任务为何需要做标签词映射(Verbalizer)?
- 文本分类任务中有哪些难点?
- 如何解决样本不均衡的问题?
- 如果类别会变化如何设计文本分类架构?
- More …
💯 命名实体识别(NER)篇
【NLP 任务实战面 之 实体识别篇】 你必须要会的高频面题 查看答案
- 实体识别中有哪些难点?
- CRF为什么比Softmax更适合NER?
- 如何使用指针标注方式做NER任务?
- 如何使用多头标注方式做NER任务?
- 如何使用片段排列方式做NER任务?
- 实体识别有哪些常用的解码方式?
- 如何解决实体嵌套问题?
- 实体识别的数据是如何进行标注的?
- 如何解决超长实体识别问题?
- More …
💯 关系抽取篇
【NLP 任务实战面 之 关系抽取篇】 你必须要会的高频面题 查看答案
- 常见关系抽取流程的步骤是怎样的?
- 如何抽取重叠关系和复杂关系?
- 介绍下基于共享参数的联合抽取方法?
- 介绍下基于联合解码的联合抽取方法?
- 关系抽取的端到端方法和流水线方法各有什么优缺点?
- 在进行跨句子甚至跨段落的关系抽取时,会遇到哪些特有的挑战?
💯 检索增强生成(RAG)篇
【NLP 任务实战面 之 RAG篇】 你必须要会的高频面题 查看答案
- 用户问题总是召回不准确,在用户理解阶段可以做哪些优化?
- 文档问答中,如何构建索引,提升对用户问题的泛化能力?
- 如何合并多路检索的结果,对它们做排序?
- BM25检索器总是召回无关的知识,最可能的原因是什么?
- 如何构建重排序模型的微调数据?
- More …
五、NLP 基础面
💯 分词(Tokenizer)篇
【NLP 基础面 之 分词篇】 你必须要会的高频面题 查看答案
💯 词嵌入(Word2Vec)篇
【NLP 基础面 之 词嵌入篇】 你必须要会的高频面题 查看答案
- 基于计数的表示方法存在哪些问题?
- CBOW 和 Skip-gram 哪个模型的词嵌入更好?
- Word2Vec的词向量存在哪些问题?
- 为什么说Word2vec的词向量是静态的?
- Word2Vec如何优化从中间层到输出层的计算?
- 负采样方法的关键思想的关键思想是什么?
- More …
💯 卷积神经网络(CNN)篇
【NLP 基础面 之 CNN篇】 你必须要会的高频面题 查看答案
💯 循环神经网络(RNN)篇
【NLP 基础面 之 RNN篇】 你必须要会的高频面题 查看答案
💯 长短期记忆网络(LSTM)篇
【NLP 基础面 之 LSTM篇】 你必须要会的高频面题 查看答案
- LSTM 如何缓解 RNN 梯度消失的问题?
- LSTM中记忆单元的作用是什么?
- LSTM有几个门,分别起什么作用?
- LSTM的前向计算如何进行加速?
- LSTM中的tanh和sigmoid分别用在什么地方?为什么?
- More …
💯 BERT 模型篇
【NLP 基础面 之 BERT模型篇】 你必须要会的高频面题 查看答案
- 为什么说BERT是双向的编码语言模型?
- BERT 是如何区分一词多义的?
- BERT的输入包含哪几种嵌入?
- BERT的三个Embedding直接相加会对语义有影响吗?
- BERT模型输入长度超过512如何解决?
- 什么是 80-10-10 规则,它解决了什么问题?
- BERT 嵌入与 Word2Vec 嵌入有何不同?
- More …
💯 BERT 变体篇
【NLP 基础面 之 BERT变体篇】 你必须要会的高频面题 查看答案
- ALBERT 使用的参数缩减技术是什么?
- RoBERTa 与 BERT 有什么不同?
- 在 ELECTRA 中,什么是替换标记检测任务?
- 如何在 SpanBERT 中掩盖标记?
- Transformer-XL 是怎么实现对长文本建模的?
- More …
💯 BERT 实战篇
【NLP 基础面 之 BERT实战篇】 你必须要会的高频面题 查看答案
- BERT为什么不适用于自然语言生成任务(NLG)?
- 在问答任务中,如何计算答案的起始索引和结束索引?
- 如何将 BERT 应用于命名实体识别任务?
- 如何进行继续预训练?
- Bert 未登录词如何处理?
- BERT在输入层如何引入额外特征?
- More …
六、深度学习面
💯 激活函数篇
【深度学习面 之 激活函数篇】 你必须要会的高频面题 查看答案
- 💯 为什么激活函数需要非线性函数?
- 💯 sigmoid 函数有什么缺点?
- 💯 tanh 函数作为激活函数有什么缺点?
- 💯 为什么选 relu 函数作为激活函数?
- 💯 为什么tanh收敛速度比sigmoid快?
- 💯 LLM使用SwiGLU相对于ReLU有什么好处?
- 💯 SwiGLU的参数量是否会显著增加?如何优化?
- More …
💯 优化器篇
【深度学习面 之 优化器篇】 你必须要会的高频面题 查看答案
- 💯 SGD是如何实现的?
- 💯 Momentum 是什么?
- 💯 Adagrad 是什么?
- 💯 RMSProp是什么?
- 💯 Adam 是什么?
- 💯 批量梯度下降(BGD)、随机梯度下降(SGD)与小批量随机梯度下降(Mini-Batch GD)的区别?
- More …
💯 正则化篇
【深度学习面 之 正则化篇】 你必须要会的高频面题 查看答案
- 💯 权重衰减的目的?
- 💯 L1 与 L2 的异同?
- 💯 为什么 L1 正则化 可以产生稀疏值,而 L2 不会?
- 💯 为什么Dropout可以解决过拟合问题?
- 💯 Dropout 在训练和测试阶段的区别是什么?
- 💯 如何选择合适的 Dropout 率?
- 💯 Dropout 和其他正则化方法(如 L1、L2 正则化)有何不同?
- More …
💯 归一化篇
【深度学习面 之 归一化篇】 你必须要会的高频面题 查看答案
- 💯 为什么归一化能提高求最优解速度?
- 💯 Batch Normalization 是什么?
- 💯 Layer Normalization 是什么?
- 💯 批归一化和组归一化的比较?
- 💯 批归一化和权重归一化的比较?
- 💯 批归一化和层归一化的比较?
- More …
💯 参数初始化篇
【深度学习面 之 参数初始化篇】 你必须要会的高频面题 查看答案
💯 过拟合篇
【深度学习面 之 过拟合篇】 你必须要会的高频面题 查看答案
💯 集成学习篇
【深度学习面 之 集成学习篇】 你必须要会的高频面题 查看答案
- 集成学习与传统单一模型相比有哪些本质区别?
- GBDT与 XGBoost 的核心差异是什么?
- 为什么XGBoost要引入二阶泰勒展开?对模型性能有何影响?
- Bagging的并行训练机制如何提升模型稳定性?
- 对比Bagging与Dropout在神经网络中的异同?
- Stacking中为什么要用K折预测生成元特征?
- 如何避免Stacking中信息泄露问题?
- 对比Boosting/Bagging/Stacking三大范式的核心差异(目标、训练方式、基学习器关系)?
- More …
💯 模型评估篇
【深度学习面 之 模型评估篇】 你必须要会的高频面题 查看答案
- 💯 混淆矩阵有何作用?
- 💯 什么是 F1-Score?
- 💯 什么是 Macro F1?
- 💯 什么是 Micro F1?
- 💯 什么是 Weight F1?
- 💯 Macro 和 Micro 有什么区别?
- 💯 ROC 曲线主要有什么作用?
- 💯 P-R 曲线有何作用?
- More …