Agent研发一面面经合集
完整信息
本篇目录
写在前面
【WeThinkIn出品】栏目专注于分享Rocky的认知思考与经验感悟,范围涵盖但不限于AI行业。
干货AIGC、AI Agent、LLM算法工程师/开发工程师面试面经秘籍分享(持续更新):<a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fgithub.com%2FWeThinkIn%2FAIGC-Interview-Book" rel="nofollow noopener noreferrer" target="_blank">WeThinkIn/AIGC-Interview-Book</a>欢迎大家Star~
大家好,我是Rocky。
一面
1. 常规分类任务,为何选择推理式建模而非原生分类方案?
回答:
先给结论:如果标签空间固定、数据充分、时延要求高,原生分类器通常仍是更好的基线;只有当分类标准复杂、经常变化、依赖外部知识或需要处理长尾样本时,推理式建模才真正有价值。不能因为大模型流行,就把一个本可用 Softmax 解决的问题强行改写成生成任务。
原生分类方案直接学习条件概率 p_\theta(y\mid x),典型实现是编码器加分类头。它的优点是目标函数与最终指标一致、梯度密集、输出空间受约束、推理快且容易校准。在标签定义稳定、类别互斥、训练样本覆盖充分的场景里,它往往比生成式模型更便宜、更稳定。
推理式建模则把决策过程拆成中间分析 r 和最终标签 y:
p_\theta(y,r\mid x)=p_\theta(r\mid x)\,p_\theta(y\mid x,r)
它的优势主要来自四点。第一,业务规则可以直接以自然语言注入,新增任务不一定需要重训分类头。第二,模型能组合多条证据,适合标签边界依赖上下文、规则和外部知识的任务。第三,一个模型可以通过任务指令、标签定义和少样本示例承载多个分类标准。第四,中间依据便于错误分析和人工复核,尤其适合风控、审核、客服路由等需要解释“为什么”的场景。
但要注意,“生成一段思维链”不等于决策一定更可靠。显式理由可能只是事后解释,也会增加时延、成本、格式漂移和提示注入风险。工程上更稳的方式是:让模型输出受约束的标签、关键证据和置信度,而不是暴露冗长自由文本;对高置信简单样本走轻量分类器,对低置信或规则冲突样本再路由到推理模型。
面试时可以用一句话收束:推理式分类的价值不在于“模型会多说几步”,而在于把动态规则、外部证据和长尾判断纳入同一个条件决策过程;如果这些条件不存在,原生分类仍应是首选。
2. 多业务标准不统一,单模型如何承载多任务、规避任务冲突问题?
回答:
这个问题的本质不是“一个模型能不能做很多任务”,而是不同业务是否共享可迁移表示,以及它们的标签语义、数据分布和优化梯度是否互相冲突。
首先要把任务条件显式化。输入中应包含稳定的 task_id、业务规则、标签定义、输出 schema 和少量边界样例,避免模型靠数据表面特征猜当前任务。标签名相同但业务含义不同的场景,不能强行合并成一个全局标签;应建立上层统一语义体系,同时保留任务私有标签空间和映射层。
架构上可以采用“共享底座 + 任务私有能力”。共享 Transformer 学通用语言和领域表示;任务差异较小时使用独立分类头,差异较大时使用 Adapter、LoRA、软提示或 MoE 专家,由路由器选择对应能力。这样既复用底座,又避免所有业务把同一组参数往不同方向拉。
训练目标通常写成多任务加权和:
<div class="math math-display">\mathcal{L}=\sum_{t=1}^{T}\alpha_t\mathcal{L}_t
真正难点在权重 \alpha_t 和采样分布。大业务数据量大,若按自然分布采样,会淹没小业务;若简单均匀采样,又可能过拟合小任务。可采用温度采样、分阶段课程学习、基于不确定性的动态权重或 GradNorm。若两个任务梯度满足 g_i^\top g_j<0,说明更新方向冲突,可使用 PCGrad/CAGrad 等梯度手术,或直接增加任务私有参数,减少硬共享。
线上还需要做任务级评估和路由。不能只看一个总分,而要分别观察每个业务的 Accuracy/F1、校准误差、长尾召回和回归 case;同时监控加入新任务后旧任务是否退化。如果冲突持续存在,拆成多个专家模型通常比维持“一个万能模型”的形式更合理。
因此,单模型多任务的正确做法不是把数据混在一起训练,而是把“共享什么、隔离什么、如何路由、如何监控负迁移”设计清楚。
3. 单正例搭配多负例的DPO训练,模型能否学习负样本之间优劣排序?
回答:
不能可靠学到。标准 DPO 是成对偏好学习:给定同一个输入 x、优选回答 y_w 和劣选回答 y_l,它只约束 y_w 相对 y_l 更优。其典型损失为:
\mathcal{L}_{\mathrm{DPO}}=-\log\sigma\left(\beta\left[ \log\frac{\pi_\theta(y_w\mid x)}{\pi_{\mathrm{ref}}(y_w\mid x)}- \log\frac{\pi_\theta(y_l\mid x)}{\pi_{\mathrm{ref}}(y_l\mid x)} \right]\right)
如果一个正例 y^+ 分别与多个负例 y^-_1,y^-_2,\ldots,y^-_m 配对,训练得到的约束只是:
y^+ \succ y^-_1,\quad y^+ \succ y^-_2,\quad \ldots,\quad y^+ \succ y^-_m
这些约束没有告诉模型 y^-_1 与 y^-_2 谁更差。因此,即使训练后它们的概率发生了不同幅度的变化,也只是模型参数共享、样本频次和初始分布带来的隐式结果,不是数据能够识别出的确定排序。换句话说,DPO 可以学会“都不如正例”,却不能凭空学会“负例 A 比负例 B 更好”。
如果业务需要负例内部排序,应显式提供额外信息。常见方案包括:构造负例之间的成对偏好;给负例附上分级质量分或错误严重度,用 margin/weight 调整损失;使用 ListMLE、Plackett-Luce 等 listwise 排序目标;或者先训练连续奖励模型,再用奖励差指导策略优化。
还要注意数据权重问题。把同一个正例重复配对十个负例,会让该正例在总损失中的权重被放大。工程上应按输入或正例做归一化,控制 hard negative 与 easy negative 的比例,并避免大量几乎相同的负例制造虚假的样本量。
面试总结:偏好数据决定可学习的偏序关系。数据里没有负例间的比较边,标准 DPO 就没有足够信息恢复负例之间的全序。
4. DPO训练造成模型分布尖锐后,是否可以接续开展GRPO训练?
回答:
可以接续,但先要修正一个前提:DPO 并不必然让分布尖锐。分布是否低熵,取决于偏好数据一致性、训练步数、参考模型、KL 约束强度、实现中的 \beta 约定以及采样温度。若同一类偏好被反复强化、训练过度或有效约束过弱,模型确实可能把概率集中到少数模式上。
DPO 后接 GRPO 在算法上没有障碍。DPO 提供较好的偏好初始化,GRPO 再让当前策略在线采样多个候选,并按组内相对奖励构造优势:
<div class="math math-display">A_i=\frac{r_i-\operatorname{mean}(r_1,\ldots,r_G)} {\operatorname{std}(r_1,\ldots,r_G)+\epsilon}
问题在于,如果 DPO 后策略过于尖锐,同一输入采出的 G 个结果几乎相同,组内奖励方差接近零,GRPO 就失去有效学习信号;模型也难以探索 DPO 未覆盖的更优轨迹。
因此接续训练时要恢复“可控探索”。可以提高 rollout 温度或 top-p,设置熵奖励或最低熵约束,降低学习率,并持续监控输出多样性与组内奖励方差。KL 参考模型的选择也很关键:若参考 DPO 检查点,GRPO 主要在 DPO 策略附近局部改进;若参考原 SFT 模型,约束会把策略往更宽的基础分布拉回,但优化张力也更大。
还应混入 SFT/DPO 回放样本,防止格式能力、通用能力和安全边界在 RL 阶段漂移;奖励需要同时覆盖任务正确性、格式、过程合法性和安全性,否则 GRPO 可能通过投机行为拿高分。训练前最好先在离线样本上检查奖励是否能正确区分好坏轨迹。
结论是:SFT -> DPO -> GRPO 是合理链路,但 DPO 负责把策略推到一个较好区域,GRPO 需要足够的采样多样性才能继续搜索。若策略已经塌缩,直接接 GRPO 往往只是在原模式附近自我强化。
5. 分类场景下DPO效果优于GRPO的核心原因是什么,二者能否串行训练?
回答:
分类场景中 DPO 可能优于 GRPO,核心原因是任务结构更接近“静态成对判别”,而不是“需要在线探索的序贯决策”。不过要先强调:对标签明确的常规分类,交叉熵监督学习通常仍是必须比较的强基线,不能默认 DPO 一定最优。
DPO 直接使用正负偏好对,每个样本都提供方向明确的密集梯度,不需要在线生成多个候选,也不需要单独估计价值函数。分类输出空间小、正确标签清楚时,这种直接优化与评估目标更一致,训练方差小、样本利用率高。
GRPO 则要让当前策略对同一输入采样一组结果,再依据组内相对奖励更新。如果分类只有少数标签,模型很快会让整组样本输出相同标签;此时组内奖励方差很小,优势接近零。即使强行提高温度,采样出来的多数变化也可能只是格式噪声,而不是有价值的决策探索。GRPO 的在线采样和奖励计算成本,在单步分类里往往得不到回报。
GRPO 更适合以下情况:模型需要生成多步推理后再分类;最终指标不可微;存在多条可行推理路径;需要根据执行结果、规则校验器或环境反馈改进策略。此时结果奖励能够提供 DPO 数据中没有的新信息。
二者可以串行训练,常见顺序是先用 SFT/DPO 建立稳定决策边界,再用 GRPO 优化复杂推理、规则一致性或最终业务指标。但必须控制 KL、采样熵和奖励质量;如果 GRPO 的奖励只是复述 DPO 标签,串行训练通常不会带来新能力,只会增加成本和不稳定性。
一句话总结:DPO 擅长利用已有偏好,GRPO 擅长从在线结果中继续搜索。分类任务若没有值得搜索的轨迹空间,DPO 更占优势;若只需要预测标签,甚至应优先回到交叉熵基线。
6. 单次LLM打分评判算不算Agent?和多轮工具调用Agent核心区别在哪?
回答:
通常不算。单次 LLM 打分是一个模型推理组件:输入一次、输出一次,系统没有持续状态,也没有根据环境反馈自主决定下一步。把 LLM 放进流程,并不会自动把流程变成 Agent。
更严格地说,Agent 至少包含一个闭环:感知当前状态,围绕目标做决策,执行动作,读取环境观察,再更新状态并决定继续、重试、改计划还是停止。可以写成:
<div class="math math-display">s_t \rightarrow a_t \rightarrow o_{t+1} \rightarrow s_{t+1}
单次打分只有 x\rightarrow score;多轮工具调用 Agent 则需要维护任务状态、选择工具、生成参数、消费工具返回、处理失败,并在预算或完成条件下终止。它面对的是动态环境,不只是静态文本映射。
但“调用很多次工具”也不是 Agent 的充分条件。如果工具顺序完全由固定代码写死,它更接近 Workflow。Agent 的关键是模型对分支和动作有一定决策权,并且这种决策受到权限、状态机、预算、重试策略和人工审批约束。
工程风险也不同。一次打分主要关注准确率、校准、时延和一致性;Agent 还要评估任务完成率、工具选择正确率、参数正确率、无效步骤数、失败恢复率、越权率和总成本。轨迹越长,单步错误越容易累积。
因此更本质的边界是:LLM Scorer 是“认知函数”,Agent 是“带状态的目标驱动控制系统”。模型是不是用了 ReAct、有没有显式输出思维链,都不是决定性标准。
7. Agent体系中Skill、Memory、RAG三大组件分别解决什么核心问题?
回答:
三者分别回答 Agent 系统中的三个不同问题:Skill 解决“怎么做”,Memory 解决“过去发生过什么、哪些经验值得复用”,RAG 解决“当前需要哪些外部知识”。它们可以共享检索基础设施,但语义和生命周期不同。
| 组件 | 核心对象 | 典型内容 | 更新方式 |
|---|---|---|---|
| Skill | 可复用的程序性能力 | 指令、Workflow、工具 schema、脚本、验收规则 | 版本化发布、测试后升级 |
| Memory | 与主体和历史交互有关的状态或经验 | 用户偏好、任务进度、历史决策、成功/失败经验 | 经过写入门控后增量更新、合并或遗忘 |
| RAG | 任务所需的外部知识 | 文档、商品信息、制度、代码、数据库记录 | 随知识源更新并重建或增量维护索引 |
Skill 不是一段泛化 Prompt,而是能够被稳定调用、具有输入输出契约和验收标准的能力包。例如“生成商品上架材料”这一 Skill 可以封装字段检查、文案生成、风险校验和发布工具。
Memory 的关键不是把聊天记录永久保存,而是选择性地写入可复用状态。短期记忆服务于当前任务,长期记忆保存跨会话仍有价值的偏好、事实和经验。它必须带时间、来源、置信度、权限和可删除机制,否则错误会被长期放大。
RAG 是检索增强生成范式:根据当前查询从外部知识库召回证据,再经过过滤、重排和上下文组装提供给模型。它主要解决参数知识不新鲜、企业私有知识不可见和回答不可追溯问题。
三者会发生组合:Memory 的读取可以用向量检索实现,但检索到的是主体历史;Skill 内部也可以调用 RAG,但检索的是任务知识。区分它们时不要按“是否用了向量库”分类,而要看信息表达的是程序、经历还是外部事实。
8. Agent记忆模块如何迭代更新,新旧经验冲突时该怎样取舍留存?
回答:
Agent Memory 应被设计成有治理的状态系统,而不是一张不断追加聊天记录的表。成熟链路通常是:候选提取、写入判断、结构化、去重与冲突检测、版本化保存、检索使用、反馈更新和过期清理。
写入前先判断长期价值。一次性的寒暄、低置信推测和敏感信息默认不进入长期记忆;明确偏好、稳定身份事实、未完成任务状态、反复出现的问题和经过验证的成功经验才是候选。每条记录至少包含 subject、predicate、value、scope、source、timestamp、confidence、valid_from/to 和权限标签。
新旧记忆冲突时不能简单遵循“新数据覆盖旧数据”。应按以下维度决策:
- 权威性:用户明确更正、业务主库或工具执行结果,高于模型推断和历史摘要。
- 时效性:对地址、职位、偏好等可变化事实,较新的高置信记录优先,但旧版本保留审计链。
- 适用范围:工作场景与生活场景的偏好可能同时成立,应该按 scope 并存,而不是互相覆盖。
- 证据强度:多次独立观测可以提升置信度;单次异常不应立即改写长期事实。
- 风险等级:影响付款、权限、医疗或合规的记忆不能只靠自动合并,应重新确认或人工复核。
对于真正矛盾且无法自动裁决的记录,系统应保留两个版本并标记 conflicted,在相关任务出现时主动澄清。对成功/失败经验,还要区分“相关性”和“因果性”:一次成功轨迹不等于其中每一步都值得固化为 Skill。
遗忘同样重要。可以使用 TTL、时间衰减、低命中淘汰、用户删除和版本压缩;但法律要求、授权状态和审计记录应按制度管理,不能被通用衰减策略误删。
本质判断是:记忆系统的质量不取决于存得多,而取决于能否把正确、适用、可追溯的信息在正确时机取出来,并避免旧错误变成长期先验。
9. Agent强化学习仅依靠最终结果设计奖励是否够用,多步工具轨迹如何做信用分配?
回答:
仅用最终结果奖励在理论上可以训练,因为完整轨迹的回报能够传回前面的决策;但在长链 Agent 中通常不够。轨迹越长,终局奖励越稀疏,方差越大,模型越难判断究竟是哪一次工具选择、哪个参数或哪一步恢复策略导致成功与失败。
最基础的信用分配是回报和优势估计。对第 t 步,折扣回报为:
G_t=\sum_{k=t}^{T}\gamma^{k-t}r_k
再用价值函数或 GAE 构造优势,判断当前动作相对状态基线带来了多少增益。纯终局奖励相当于中间 r_k 大多为零,所有步骤共享一个结果信号,学习效率很低。
工程上通常采用“结果奖励为主、过程信号辅助”。结果层评估任务是否真正完成;过程层可以检查工具是否选对、参数是否合法、观察是否被正确使用、是否重复调用、是否越权、失败后是否恢复,以及步骤数和成本是否合理。对可验证任务,应尽量使用编译器、单元测试、数据库状态、API 返回或业务规则等确定性验证器,而不是完全依赖另一个 LLM 打分。
多步轨迹还可以使用几类方法:训练过程奖励模型给关键步骤打分;对轨迹做分段里程碑奖励;用树搜索或多条 rollout 比较同一状态下的不同动作;通过删除或替换某一步的反事实实验估计该动作的边际贡献;将成功轨迹与失败轨迹做成 step-level 或 trajectory-level 偏好数据。
奖励塑形要防止改变原任务。理论上,形如 F(s,a,s 的 potential-based shaping 更容易保持最优策略不变。若简单奖励“调用了某工具”或“步骤更长”,模型可能学会刷工具次数;若只惩罚长度,又可能跳过必要验证。
所以最终答案是:终局奖励定义“做成没有”,过程奖励帮助回答“哪一步做对了”。二者要结合,而且过程信号必须服务于真实任务成功,不能成为更容易被投机的新目标。
10. 字符择优连续区间问题,如何转化为最大子数组和问题,Kadane算法复杂度优化逻辑是什么?
回答:
先把字符偏好转成数值权重。假设希望找到一段连续区间,使“优选字符”尽量多、“非优选字符”尽量少,可以把优选字符映射为 +1,非优选字符映射为 -1;若不同字符价值不同,则映射为对应收益或代价。这样问题就转化为:在数值数组中寻找和最大的连续子数组。
Kadane 算法的状态定义是:current 表示“必须以当前位置结尾”的最大子数组和,best 表示遍历到当前位置时的全局最大和。转移只有两个选择:把当前元素接到前一段后面,或者从当前元素重新开始。
current_i=\max(a_i,\ current_{i-1}+a_i)
best_i=\max(best_{i-1},\ current_i)
Python 实现如下,同时返回最优区间:
def best_interval(text: str, preferred: set[str]) -> tuple[int, int, int]:
if not text:
return 0, -1, 0
scores = [1 if ch in preferred else -1 for ch in text]
current = best = scores[0]
current_left = best_left = best_right = 0
for right in range(1, len(scores)):
if current + scores[right] < scores[right]:
current = scores[right]
current_left = right
else:
current += scores[right]
if current > best:
best = current
best_left = current_left
best_right = right
return best_left, best_right, best
暴力枚举所有区间需要 O(n^2) 个区间;使用前缀和只能把单个区间求和降到 O(1),总枚举量仍是 O(n^2)。Kadane 的优化来自最优子结构:如果前缀累计和已经小于零,它只会拖累后续任何区间,因此可以直接丢弃。每个位置只更新常数个状态,时间复杂度降为 O(n),空间复杂度为 O(1)。
边界条件要说明:数组全为负数时,上述实现返回最大的单个元素;若业务允许选择空区间,则可把最优值初始化为零,并在所有分数为负时返回空区间。
11. 技术研发为何从判别式任务,逐步转向生成式对话与自主Agent研发?
回答:
这不是“判别式技术过时了”,而是业务接口从识别一个标签,逐步扩展到生成内容、理解意图并执行任务。技术重心变化的根因,是基础模型把大量任务统一到了自然语言条件建模之下。
判别式模型解决的是固定输入到固定标签的映射,优势是边界清楚、成本低、可校准,适合广告点击率、风控分类、意图识别、排序等高吞吐任务。但它通常要求每个任务单独定义标签、构造数据和训练模型,面对开放问题和长尾需求时扩展成本较高。
生成式对话把自然语言变成统一接口。一个模型可以通过指令完成问答、摘要、信息抽取、代码生成和多轮澄清,业务不必为每个新需求都设计独立分类头。进一步发展到 Agent,是因为用户真正需要的往往不是“一段答案”,而是查询系统、调用工具、修改文件、提交订单或完成分析。Agent 把生成能力接入环境,形成“理解 -> 规划 -> 行动 -> 反馈 -> 修正”的闭环。
这条路线也改变了研发难点。判别式系统主要优化 Accuracy、AUC、F1 和校准;生成式系统还要控制事实性、格式、风格和安全;Agent 则必须进一步处理工具权限、状态持久化、长轨迹错误累积、失败恢复、成本和审计。能力范围扩大了,系统工程要求也随之提高。
成熟架构不会把判别式模型全部替换掉。高频稳定环节继续使用规则、小模型和排序模型;LLM 负责复杂理解与长尾生成;Workflow 固化确定性流程;Agent 只在确实需要动态决策时介入。这样才能同时获得智能上限与生产稳定性。
如果这是在问个人技术选择,可以落到一句话:我从判别任务转向 Agent,不是追逐模型名词,而是希望从“预测一个结果”走向“对完整任务结果负责”;同时仍会保留判别式建模的效率、评估和工程纪律。
12. 在线on-policy蒸馏和强化学习有什么区别,哪种更容易突破教师模型性能上限?
回答:
两者的核心区别在监督信号来源。在线 on-policy 蒸馏让学生策略访问自己当前会遇到的状态,再由教师为这些状态提供动作分布、答案或纠正信号,学生通常优化 KL 或交叉熵:
<div class="math math-display">\mathcal{L}_{\mathrm{KD}}= \mathbb{E}_{s\sim d_{\pi_S}} \left[\mathrm{KL}\left(\pi_T(\cdot\mid s)\,\|\,\pi_S(\cdot\mid s)\right)\right]
这里的 on-policy 指状态分布来自当前学生,而不是固定离线数据。它能缓解经典离线蒸馏的分布偏移:学生犯错后会进入教师数据没有覆盖的状态,在线教师仍能给出指导。但优化目标依然主要是模仿教师。
强化学习则让策略与环境交互,并直接优化外部奖励:
<div class="math math-display">J(\theta)=\mathbb{E}_{\tau\sim\pi_\theta}[R(\tau)]
教师可以用于初始化、生成候选或提供先验,但不是最终真值。只要奖励或验证器包含教师行为之外的有效信息,学生就可能通过探索找到教师没发现的更优策略。
因此,在严格的“单教师行为蒸馏”设定下,蒸馏更擅长保留能力、降低模型规模和提升采样效率,并没有一个原则性的信号推动学生稳定超过教师。学生偶尔在某项指标上超过教师,可能来自正则化、数据聚合、模型归纳偏置、教师集成或搜索,这不等于纯模仿目标天然突破了教师上限。
RL 更有机会突破教师,但前提很强:奖励必须与真实目标一致、环境可探索、模型容量足够、训练稳定。如果奖励本身由同一个教师打分,教师偏差仍可能成为新的上限;如果奖励可被利用,模型甚至会“分数更高、真实能力更差”。
实践中更稳的链路是先用 on-policy 蒸馏把学生带到高质量策略附近,再逐步降低蒸馏/KL 权重,用可验证奖励做 RL 改进;高风险任务继续保留教师或规则作为安全约束。结论可以概括为:蒸馏负责高效继承,RL 负责面向目标探索;更容易突破教师上限的是拥有独立可靠奖励的 RL,而不是只模仿教师分布的蒸馏。
<a href="https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fwww.nowcoder.com%2Fusers%2F648015371" target="_blank"></a>
本篇目录
当前问题0115
- 01
### 1. 常规分类任务,为何选择推理式建模而非原生分类方案?
- 02
### 2. 多业务标准不统一,单模型如何承载多任务、规避任务冲突问题?
- 03
### 3. 单正例搭配多负例的DPO训练,模型能否学习负样本之间优劣排序?
- 04
### 4. DPO训练造成模型分布尖锐后,是否可以接续开展GRPO训练?
- 05
### 5. 分类场景下DPO效果优于GRPO的核心原因是什么,二者能否串行训练?
- 06
### 5. 分类场景下DPO效果优于GRPO的核心原因是什么,二者能否串行训练?
- 07
### 6. 单次LLM打分评判算不算Agent?和多轮工具调用Agent核心区别在哪?
- 08
### 7. Agent体系中Skill、Memory、RAG三大组件分别解决什么核心问题?
- 09
### 7. Agent体系中Skill、Memory、RAG三大组件分别解决什么核心问题?
- 10
### 8. Agent记忆模块如何迭代更新,新旧经验冲突时该怎样取舍留存?
- 11
### 8. Agent记忆模块如何迭代更新,新旧经验冲突时该怎样取舍留存?
- 12
### 9. Agent强化学习仅依靠最终结果设计奖励是否够用,多步工具轨迹如何做信用分配?
- 13
### 10. 字符择优连续区间问题,如何转化为最大子数组和问题,Kadane算法复杂度优化逻辑是什么?
- 14
### 11. 技术研发为何从判别式任务,逐步转向生成式对话与自主Agent研发?
- 15
### 12. 在线on-policy蒸馏和强化学习有什么区别,哪种更容易突破教师模型性能上限?
