暑期实习基本结束了,校招即将开启。
不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。
最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解惑答疑,分享技术面试中的那些弯弯绕绕。
总结链接如下:
分享一位群友面拼多多NLP算法岗(大模型方向)的面经,这位同学是有两个 Offer 机会,一个是国企,一个是互联网企业。
考虑到互联网的 996 内卷和当下的就业环境,最后去了国企,放弃了这家企业
把面经进行了汇总:
- 自我介绍
- 简历项目深度交流
- 项目的背景是什么,主要解决了什么问题?
- 训练数据集是如何构造的,都有什么类型的数据,总量有多大?数据质量怎么评估?大模型怎么做数据评估?
- 有没有进行微调?
- 解释一下 Prompt Tuning、Adapter Tuning、LoRA 等微调方法的原理,分别适用于哪些场景?
- 如何评估模型微调效果的好坏呢?
- 微调用了多大的显卡,有关注内存占用情况吗?
- 是否了解常用的模型加速技巧?
- 微调如何避免出现灾难性遗忘和“复读机”问题?
- 微调和训练一个全新模型相比,有哪些优势?
- 大模型高质量微调数据筛选有哪些方法?
- 你认为大模型微调还面临哪些挑战?
- Tranformers 和 Bert 相关:
- 介绍 transformer 网络结构
- 谈谈位置编码 RoPE
- 谈一谈对transformer的QKV的理解
- Self-Attention 的表达式
- Bert中为什么要在开头加个[CLS]?
- attention中的mask有什么用?(BERT中)
- bert和mbert的区别
- bert预训练方法
- MLM 和 NSP都有什么缺点
- 介绍transformer以及multi attention,为什么用多头
- 了解什么attention的变种 ?
- flash attention解释一下?
- llama中用的attention是?
- llama和transformer的区别
代码题:
- 最长递增子序列
最长递增子序列(LIS)的算法可以通过动态规划实现。下面是一个Python代码示例:
def longest_increasing_subsequence(nums):
if not nums:
return 0
dp = [1] * len(nums)
for i in range(1, len(nums)):
for j in range(i):
if nums[i] > nums[j]:
dp[i] = max(dp[i], dp[j] + 1)
return max(dp)
# 示例
nums = [10, 9, 2, 5, 3, 7, 101, 18]
print(f"最长递增子序列的长度是: {longest_increasing_subsequence(nums)}")
该函数使用一个数组 dp
来存储到目前为止每个元素结尾的最长递增子序列的长度。通过两层循环比较每个元素和它之前的元素,如果当前元素大于之前的元素,就更新 dp
数组中的值。
这个算法的时间复杂度是 (O(n^2)),其中 (n) 是输入数组的长度。如果需要更高效的解决方案,可以使用二分查找,将时间复杂度降到 (O(n \log n))。
- 给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。
这是一个经典的电话号码字母组合问题,可以通过回溯算法来解决。以下是Python实现:
def letter_combinations(digits):
if not digits:
return []
phone_map = {
"2": "abc", "3": "def", "4": "ghi", "5": "jkl",
"6": "mno", "7": "pqrs", "8": "tuv", "9": "wxyz"
}
def backtrack(combination, next_digits):
if not next_digits:
result.append(combination)
else:
for letter in phone_map[next_digits[0]]:
backtrack(combination + letter, next_digits[1:])
result = []
backtrack("", digits)
return result
# 示例
digits = "23"
print(f"字母组合为: {letter_combinations(digits)}")
这个函数定义了一个映射表 phone_map
,将每个数字对应到它的字母上。通过递归和回溯来生成所有可能的字母组合。递归函数 backtrack
负责在每一步选择当前数字对应的一个字母,并继续处理剩下的数字,直到处理完所有数字。最终的结果存储在 result
列表中。
反问:
- 业务是做什么的?
技术交流&资料
技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。
成立了算法面试和技术交流群,相关资料、技术交流&答疑,均可加我们的交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。
方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2040,备注:来自CSDN + 技术交流
用通俗易懂方式讲解系列
- 用通俗易懂的方式讲解:自然语言处理初学者指南(附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,我搭建了一个本地知识库问答系统
- 用通俗易懂的方式讲解:面试字节大模型算法岗(实习)
- 用通俗易懂的方式讲解:大模型算法岗(含实习)最走心的总结
- 用通俗易懂的方式讲解:大模型微调方法汇总