百度大模型算法工程师面试题
应聘岗位:百度大模型算法工程师
面试轮数:第二轮
整体面试感觉:偏简单
面试过程回顾
1. 自我介绍
在自我介绍环节,我清晰地阐述了个人基本信息、教育背景、工作经历和技能特长,展示了自信和沟通能力。
2. Leetcode 题
具体题意记不清了,但是类似 【208. 实现 Trie (前缀树)】
- 题目内容
Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。
-
请你实现 Trie 类:
-
- Trie() 初始化前缀树对象。
- void insert(String word) 向前缀树中插入字符串 word 。
- boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。
- boolean startsWith(String prefix) 如果之前已经插入的字符串 word 的前缀之一为 prefix ,返回 true ;否则,返回 false 。
-
示例:
输入
["Trie", "insert", "search", "search", "startsWith", "insert", "search"]
[[], ["apple"], ["apple"], ["app"], ["app"], ["app"], ["app"]]
输出
[null, null, true, false, true, null, true]
解释
Trie trie = new Trie();
trie.insert("apple");
trie.search("apple"); // 返回 True
trie.search("app"); // 返回 False
trie.startsWith("app"); // 返回 True
trie.insert("app");
trie.search("app"); // 返回 True
-
提示:
-
- 1 <= word.length, prefix.length <= 2000
- word 和 prefix 仅由小写英文字母组成
- insert、search 和 startsWith 调用次数 总计 不超过 3 * 104 次
-
题目解答
class Trie(object):
def __init__(self):
self.children = [None]*26
self.is_end = False
def insert(self, word):
"""
:type word: str
:rtype: None
"""
node = self
for c in word:
c = ord(c)-ord("a")
if not node.children[c]:
node.children[c] = Trie()
node = node.children[c]
node.is_end = True
def searchPrefix(self, prefix):
node = self
for c in prefix:
c = ord(c)-ord("a")
if not node.children[c]:
return None
node = node.children[c]
return node
def search(self, word):
"""
:type word: str
:rtype: bool
"""
node = self.searchPrefix(word)
return node is not None and node.is_end
def startsWith(self, prefix):
"""
:type prefix: str
:rtype: bool
"""
return self.searchPrefix(prefix) is not None
# Your Trie object will be instantiated and called as such:
# obj = Trie()
# obj.insert(word)
# param_2 = obj.search(word)
# param_3 = obj.startsWith(prefix)
3. 技术问题回答
3.1 结合 GNN 科研项目进行提问
- 样本构建的流程是怎样的,并且为什么 GCN 相较于其他方法在效果上更胜一筹?
- 节点特征指的是什么?
3.2 结合 基于 RAG 的医学问答项目进行提问
- 查询流程?
- 使用什么向量数据库?
- 介绍一下 RAG 原理?
- RAG 如何解决多实体提问问题?
用户提问:感冒和咳嗽需要吃什么药?
3.3 结合多模态科研项目进行提问
- Prompt是如何生成的,优化目标是什么,任务是什么?
- OCR 抽取效果不好,需要怎么排查问题?
3.4 技术问题
- 您是否使用过Pytorch提供的预训练模型,例如torchvision、transformers以及OpenAI开源的ClIP?对分布式训练有经验么?
回答:学过但是没用过
- RNN与GNN之间有哪些区别,以及它们各自适用于哪些场景?
回答:
RNN与GNN的区别:
1. 数据类型:
- RNN 设计用于处理序列数据,即数据点按时间顺序排列,如时间序列分析、语音识别和自然语言处理。
- GNN 专门用于处理图结构数据,图由节点和边组成,代表实体及其关系,如社交网络、交通网络和分子结构。
2. 结构和工作原理:
- RNN 的核心是循环单元,它能够在序列的每个时间步上保持信息的状态,但是长序列会导致梯度消失或梯度爆炸问题,影响学习长期依赖。
- GNN 通过节点和边的特征以及图结构本身的信息,利用特殊的邻居节点更新机制来学习图中的特征表示,更好地捕捉节点间的依赖关系。
3. 长期依赖问题:
- RNN 在处理长序列时存在长期依赖问题,虽然有LSTM(长短期记忆网络)等变体来缓解这一问题,但本质上是序列模型。
- GNN 通过图结构天然地能够捕捉节点间的依赖关系,因此在处理具有明确关系的数据时更为有效。
各自适用的场景:
- RNN 适用于处理时间序列数据、文本序列等,如股票价格预测、语音识别、机器翻译(序列到序列的任务)。
- GNN 适用于处理结构化数据,如社交网络分析、推荐系统、生物信息学(如蛋白质结构预测)、地理信息系统等,其中实体和关系是数据的核心组成部分。
总的来说,RNN适合处理时间或顺序上的数据,而GNN适合处理具有明确结构关系的数据。两者各有优势,选择哪种模型取决于具体问题和数据的特点。
- GPT和BERT在文本表征方面有哪些结构和工作原理上的差异?
回答:BERT是Transformer Encoder,属于自监督训练方式,然后两大预训练任务,主要用于下游任务抽特征,GPT是Decoder,自回归训练,主要是预测下一个词的分布,依赖大语料库,GPT-3可以表现出Few-shot/zero-shot learning
- 因为说了BERT好训练一些,问了为什么?
回答:说了GPT任务对简单、比较依赖语料库的大小,BERT的MLM比较直觉且个人能训练,GPT只有openai等公司有成品
- 说一说你对 Zero-shot和Few-shot的理解
回答:Few-shot先给定任务范式描述,Zero-shot就是直接做
- 怎么看待计算机网络和操作系统在DL中的作用
回答:谈了DL研究一些计算机网路的问题,比如网络拓扑、交换机拓扑等,分布式训练时会有通信,也会用到进程相关知识
- 你来调优一个BERT模型适应一个数据集或任务会怎么做
回答:固定BERT,训练分类头或者使用Adapter
- 训练完模型后准确率很低,怎么优化
回答:首先检查代码结构和分类器的网络结构和BERT量级是否匹配,学习率+余弦退火调整,改为Adapter,检查数据集质量,验证阶段代码是否有误
- 有一批文本数据,来源和质量不太一样,使用时如何处理
回答:反问文本来源不同是否混合或完全分开,结合多模态融合的技术,增加一个学习任务,对不同来源的文本表示进行线性变换投影到相同的特征空间中
个人本次面试总结
百度的面试篇项目面一点,整体效果还行,面试官给人感觉比较温和。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】
123?spm=1001.2014.3001.5501)这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

942

被折叠的 条评论
为什么被折叠?



