Day11
Day11
面经回顾与训练
完成袋鼠云一面的基础回顾
上下文相关
一、 狭义上的上下文
狭义的上下文通常聚焦于直接的执行环境或近期的历史记录,具有较强的时效性和局部性:
-
在代码层面: 它指的是程序的执行环境。例如 JavaScript 中函数执行时的
this绑定,或者 React 中的 Context API(用于在特定的组件树范围内透传局部状态,避免 Props 逐层深钻)。 -
在 AI 对话层面: 它主要指代多轮对话中的“历史记录”(Chat History)。比如用户提问“那它的准确率是多少?”,AI 需要依赖前几轮对话的狭义上下文,才能识别出这里的“它”指的是某个具体的微调模型。
二、 广义上的上下文
广义的上下文则要宏大得多,它包含了整个交互发生时的全局环境、业务状态与所有前置知识:
-
全局业务环境: 用户的角色权限、全局偏好设置、设备环境,以及当前应用在运行期维持的完整状态树。
-
外部知识领域: 例如通过 RAG(检索增强生成)机制,从 TXT、PDF 等多源文档中解析、切片并向量化后检索出的专业知识。这些不属于对话历史,但构成了大模型回答问题所必须的“广义世界观”。
三、 业务项目中的“上下文”指代(像衍实习项目)
在构建具备页面感知能力的 AI Workspace 等实际业务中,我们所说的“上下文感知”,实际上是将前端业务状态流转与大模型 Prompt 注入进行了深度绑定。具体指的是以下三个维度的信息聚合:
-
路由与视窗背景: 捕获用户当前所处的精确位置。Agent 需要知道当前处于“数据集管理”还是“任务管理”模块,以及 URL 中关联的特定业务 ID。
-
实时业务实体(Entity): 用户当前正在操作的具体业务数据。例如在高级数据表格中被勾选的行数据(Selected Rows),或是面板中配置的模型超参数(如 Temperature),这些数据会被序列化并实时同步给 AI。
-
任务生命周期状态: 统一管理的异步任务流转数据。AI 需要实时感知底层的训练或检测任务究竟处于
Pending、Running还是Error状态,以便给出符合当前业务逻辑的反馈或操作建议。
手撕
最低票价(LeetCode 983)
最长公共前缀(LeetCode 14)
js方法
slice:提取字符串或数组的一部分,返回新内容,不修改原数据
// 语法:str.slice(startIndex, endIndex)
// endIndex 可选,不包含该位置的字符
const str = "hello world"
// 基本用法
str.slice(0, 5) // "hello" - 提取索引0到4
str.slice(6) // "world" - 从索引6到末尾
str.slice(0, -1) // "hello worl" - 去掉最后一个字符
str.slice(-5) // "world" - 从倒数第5个到末尾
str.slice(2, -2) // "llo wo" - 从索引2到倒数第3个
// 在代码中的应用
let prefix = "flower"
prefix.slice(0, -1) // "flowe" - 去掉最后一个字符'r'
prefix.slice(0, -2) // "flow" - 去掉最后两个字符'er'
startsWith():判断字符串是否以指定字符开头,返回布尔值(true/false)
// 语法:str.startsWith(searchString, position)
// position 可选,从哪个索引开始检查
const str = "hello world"
// 基本用法
str.startsWith("hello") // true
str.startsWith("world") // false
str.startsWith("he") // true
str.startsWith("") // true - 空字符串总是返回true
// 指定位置参数
str.startsWith("world", 6) // true - 从索引6开始检查
str.startsWith("lo", 3) // true - 从索引3开始是"lo world"
// 大小写敏感
str.startsWith("Hello") // false - 严格区分大小写