来源:编程网事

打开网易新闻 查看精彩图片

网址:oneoffer.vip

大家好,我就是那个在B站讲算法的「华南溜达虎」。

昨天群里有个兄弟,简直贡献了年度最惨职场段子。部门绩效差要降薪,领导问谁支持,他第一个举手。结果这月工资一发:全组就他一个人真被降了20%,其他按兵不动的人,工资一分没少。

他以为自己在展现格局,在领导眼里,他只是个好拿捏的软柿子。

职场里最贵的东西,其实是你的表态。很多公司搞自愿降薪、自愿加班,表面是征求意见,实则是在筛选冤大头。你第一个跳出来表忠心,不仅同事把你当傻子,领导也只会觉得你成本低、好欺负,以后脏活累活全是你的。

老实人最容易犯的错,就是以为真诚能换来真诚。

记住,职场不是学校,没人会为你的高觉悟加分。最聪明的做法永远是保持观望,跟着大部队走。沉默有时候不是不合群,而是最好的保护色。

言归正传,今天我们来分享一篇滴滴大模型算法岗位的面经。

题目已收录在网站 oneoffer.vip
打开网易新闻 查看精彩图片

1. batchNorm 和LayerNorm 是两种常见的归一化方法,它们如何处理数据?举个例子说明,并解释各自适用于哪些场景。

BatchNorm 和 LayerNorm 都是用于加速神经网络训练过程并提高模型性能的归一化技术,但它们作用于不同的维度。

Batch Normalization (BatchNorm) 主要应用于卷积神经网络(CNNs)中,它通过对每个小批量(mini-batch)的数据进行归一化来解决内部协变量偏移问题。具体来说,在每个激活层之后、非线性函数之前对输入数据执行标准化操作。这样可以使得每层的输入分布更加稳定,从而允许使用更大的学习率加快训练速度。

Layer Normalization (LayerNorm),则是在序列到序列任务如自然语言处理(NLP)领域内较为常见的一种归一化方式。与BatchNorm不同的是,LayerNorm是在特征维度上进行归一化的,这意味着它对整个批次中的所有样本都是一致地应用相同的标准差和均值计算。

  • BatchNorm 更适合于图像识别等CV任务,因为它能有效减少批间差异带来的影响。

  • LayerNorm 则更适合于文本处理等NLP任务或任何需要保持时间序列特性的场景,因为它不依赖于特定批次的统计信息。

2. MCP (Model Context Protocol)协议是什么

简单来说,MCP (Model Context Protocol) 是由 Anthropic 在 2024 年底推出的一种开放标准。你可以把它想象成 AI 界的“USB 接口”。

在 MCP 出现之前,如果你想让 AI 连接到你的 GitHub、Google Drive 或本地数据库,开发者必须为每个工具编写特定的集成代码。而 MCP 的核心目的就是标准化 AI 模型与外部数据源/工具之间的连接方式。

MCP 采用的是典型的客户端-服务器 (Client-Server) 架构:

MCP Hosts (客户端): 通常是 AI 应用程序(如 Claude Desktop、IDE 或 AI 代理)。它们负责发起请求并处理 AI 生成的内容。

MCP Servers (服务器): 轻量级程序,通过 MCP 协议公开特定服务。例如,一个读取本地文件的服务器,或者一个查询实时气象数据的服务器。

Local/Remote Resources (资源): 模型最终访问的数据(文件、API、数据库等)。

为什么它很重要?

  • 即插即用:一旦某个工具支持了 MCP 协议,任何支持 MCP 的 AI 客户端都能直接调用它,无需二次开发。

  • 安全性:你可以完全控制 AI 能访问哪些本地文件或数据,而不必将所有隐私数据上传到云端。

  • 降低门槛:开发者只需关注如何通过 MCP 暴露接口,而不用操心如何适配不同的 LLM 生态。

3.为什么需要构建RAG架构?将检索(Retrieval)与生成(Generation)分开的好处是什么?

RAG(Retrieval-Augmented Generation)架构通过结合信息检索技术和生成模型的力量,旨在克服传统生成模型存在的局限性,尤其是对于长尾查询或罕见事实的理解。

RAG的核心思想是利用一个检索组件从大规模知识库中获取相关信息,然后将这些信息作为上下文传递给生成模型,从而增强模型的回答质量。这种设计不仅提高了模型处理未知或少见情况的能力,还增强了其准确性和一致性。

  • 分离检索与生成的主要好处在于能够更灵活地更新知识库而不必重新训练整个生成模型,同时也便于引入外部专家知识。

4.LAMA-Factory框架的基本概念及其主要特点是什么?

LAMA-Factory是一个专为大模型预训练和微调而设计的高效、可扩展的开源框架,旨在简化大型语言模型的开发流程。

该框架支持多种预训练策略,包括但不限于自监督学习、多任务学习等,并提供了丰富的工具集来优化训练效率和模型性能。此外,LAMA-Factory还特别注重易用性和社区贡献,鼓励开发者共享最佳实践和定制化解决方案。

特点

描述

灵活性

支持多种预训练方法和下游任务

可扩展性

设计上充分考虑了分布式训练的需求

易用性

提供详细的文档和支持,降低入门门槛

5. 打家劫舍II

相比于基础版,环形排列意味着第一家和最后一家是相邻的,你不能同时抢它们。

解决办法很简单:化圆为线。我们将问题拆解为两个基础的线性 DP 问题,然后取最大值:

场景 A:抢第一家,但不抢最后一家。范围是 nums[0 : n-1]

场景 B:抢最后一家,但不抢第一家。范围是 nums[1 : n]

DP 状态转移

对于每一段线性区间,设 为抢到第 家时的最大收益:

  • 状态转移方程:

  • 如果不抢第 家,收益等于前一家的最大收益。

  • 如果抢第 家,收益等于前前一家的收益加上当前的钱。

Python 代码实现

def rob(nums):    if len(nums) == 1: return nums[0]    def solve_linear(rooms):        prev2, prev1 = 0, 0        for money in rooms:            # 滚动数组优化空间:cur = max(不抢当前, 抢当前+前前家)            prev2, prev1 = prev1, max(prev1, prev2 + money)        return prev1    # 拆分为两个线性问题,取最大值    return max(solve_linear(nums[:-1]), solve_linear(nums[1:]))

特别声明:以上内容仅代表作者本人的观点或立场,不代表新浪财经头条的观点或立场。如因作品内容、版权或其他问题需要与新浪财经头条联系的,请于上述内容发布后的30天内进行。