节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。
针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。
总结链接如下:
喜欢记得点赞、收藏、关注。更多技术交流&面经学习,可以文末加入我们。
本文章主要记录了本小菜研找实习的坎坷历程,欢迎大佬们给建议!!!
应聘岗位:小米-NLP 算法工程师
1. 自我介绍
在自我介绍环节,我清晰地阐述了个人基本信息、教育背景、工作经历和技能特长,展示了自信和沟通能力。
2. 技术问题
2.5 RAG 相关面试题
-
聊一下RAG项目总体思路?
-
使用外挂知识库主要是为了解决什么问题?
-
如何评价RAG项目的效果好坏,即指标是什么?
-
在做RAG项目过程中遇到哪些问题?怎么解决的?
-
RAG项目里面有哪一些亮点?目前开源的RAG项目非常多,你的项目和他们有什么区别?
-
数据集怎么构建的,什么规模,评估指标是什么,这些指标存在哪些问题?
-
模型底座是什么,这些不同底座什么区别,什么规模?
-
使用哪一种训练方法,什么sft,这些方法有什么不同,有什么优缺点,原理上解释不不同方法的差别?
-
模型推理是怎么做的,有没有cot,tot等等,还是单轮?
-
大模型可控性如何实现,怎么保证可控性?
-
模型部署的平台,推理效率怎么样,如何提升推理效率?
-
项目最后上线了么,上线之后发现什么问题,如何解决?
-
给一个总的输入输出样例,每一步包含什么prompt,多轮推理每一步输出什么结果,模拟一下,数据集格式是否要调整成这样,数据形式是什么,怎么拆分成多轮形式?
2.6 Agent 相关面试题
-
了解 Ai Agent 么?
-
知道 Multi-Agent 么?
-
Multi-Agent 如何 实现多代理协作的?
-
Multi-Agent 如何 实现多代理竞争的?
-
你了解哪些 开源 Agent?有部署过么?效果怎么样?
2.1 self-attention的计算方式?
2.2 说一下 transformer的模型架构和细节?
2.3 说一下大模型高校参数微调方式 p-tuning v2?
P-Tuning V2在P-Tuning V1的基础上进行了下述改进:
-
在每一层都加入了Prompts tokens作为输入,而不是仅仅加在输入层,这与Prefix Tuning的做法相同。这样得到了更多可学习的参数,且更深层结构中的Prompt能给模型预测带来更直接的影响。
-
去掉了重参数化的编码器。在 P-tuning v2 中,作者发现重参数化的改进很小,尤其是对于较小的模型,同时还会影响模型的表现。
-
针对不同任务采用不同的提示长度。提示长度在提示优化方法的超参数搜索中起着核心作用。在实验中,我们发现不同的理解任务通常用不同的提示长度来实现其最佳性能,这与Prefix-Tuning中的发现一致,不同的文本生成任务可能有不同的最佳提示长度。
-
可选的多任务学习。先在多任务的Prompt上进行预训练,然后再适配下游任务。一方面,连续提示的随机惯性给优化带来了困难,这可以通过更多的训练数据或与任务相关的无监督预训练来缓解;另一方面,连续提示是跨任务和数据集的特定任务知识的完美载体。
2.4 在 大模型任务中,你用到 LoRA,讲一下 LoRA 实现原理?
LoRA 的思想很简单:
-
在原始 PLM (Pre-trained Language Model) 旁边增加一个旁路,做一个降维再升维的操作,来模拟所谓的intrinsic rank。
-
训练的时候固定 PLM 的参数,只训练降维矩阵 A 与升维矩阵 B 。而模型的输入输出维度不变,输出时将 BA 与 PLM 的参数叠加。
-
用随机高斯分布初始化 A ,用 0 矩阵初始化 B ,保证训练的开始此旁路矩阵依然是 0 矩阵。
3. Leetcode 题
具体题意记不清了,但是类似 【两数之和】
- 题目内容
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
输入:nums = [3,2,4], target = 6 输出:[1,2]
示例 3:
输入:nums = [3,3], target = 6 输出:[0,1]
提示:
2 <= nums.length <= 10**4
-109 <= nums[i] <= 109
-109 <= target <= 109
- 代码实现
def twoSum(nums, target):
hashmap={}
for ind,num in enumerate(nums):
hashmap[num] = ind
for i,num in enumerate(nums):
j = hashmap.get(target - num)
if j is not None and i!=j:
return [i,j]
技术交流&资料
技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。
成立了算法面试和技术交流群,相关资料、技术交流&答疑,均可加我们的交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。
方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2040,备注:来自CSDN + 技术交流