牛客面经整理:AI Agent 二面(字节)(LLM / 事件循环 / SSE / MCP)(二十二)
收录日期:2026-04-27
关键词:AI、Agent、Transformer、Attention、浏览器、Node、事件循环、SSE、WebSocket、Vue、TypeScript、MCP
1. 介绍一下 Agent 是什么?
参考答案
- Agent = “LLM + 工具(Tools)+ 规划/反思(Plan/Reflection)+ 记忆(Memory)+ 执行器(Executor)” 的闭环。
- 关键区别:它不仅生成文本,还能基于目标做任务拆解、调用工具、根据结果迭代。
- 追问可展开:单 Agent vs 多 Agent、工具编排(workflow)vs 自主决策(agentic)。
2. (手撕)给定数字集合与 k,能组成多少种三角形?
参考答案
- 三角形判定:对三边排序
a <= b <= c,满足a + b > c。 - 典型做法:排序 + 双指针(固定最大边
c,在[0..i-1]内用双指针统计满足条件的对数),时间复杂度O(n^2)。 - 如果题目还有
k限制(例如只能从某个范围/选 k 个):先澄清约束,再在排序后按条件筛选或用组合计数。
3. Transformer 的结构是怎样的?
参考答案
- 编码器/解码器(或仅解码器)堆叠:多层 Attention + FFN + 残差 + LayerNorm。
- 输入:token → embedding + positional encoding(或 RoPE/ALiBi 等)。
- 输出:解码器自回归生成,训练常用 teacher forcing。
4. Attention 机制是什么?
参考答案
- 核心:用 Query 与 Key 的相似度得到权重,对 Value 做加权求和,实现“按需从上下文取信息”。
- 公式直觉:
softmax(QK^T / sqrt(d)) V。 - 优点:能直接建立任意位置之间的依赖,替代 RNN 的串行传递。
5. 为什么大模型这么“重”(参数多/算力大)?
参考答案
- 表达能力:参数规模提升通常带来更强的拟合与泛化(在足够数据与训练策略下)。
- 推理成本:注意力
O(n^2)、大矩阵乘法与 KV cache 占用共同导致显存与时延压力。 - 工程优化:量化、蒸馏、KV cache、分段/滑窗注意力、MoE、并行(TP/PP)等。
6. 不加 Attention 会怎样?为什么难捕捉长距离依赖?
参考答案
- 无 Attention 的序列模型(如纯 MLP/有限感受野的卷积)很难在长序列里“动态选择”远处信息。
- 长距离依赖的难点:信息需要跨很多层/步传播,容易衰减或被噪声淹没;Attention 允许直接“跳连式”访问。
7. 浏览器事件循环:宏任务/微任务怎么执行?
参考答案
- 主线:执行一个宏任务 → 清空微任务队列 → 必要时渲染 → 进入下一轮宏任务。
- 常见宏任务:
setTimeout、setInterval、I/O 回调、UI 事件。 - 常见微任务:
Promise.then、queueMicrotask、MutationObserver。
8. Node 事件循环与浏览器有什么不同?
参考答案
- Node 事件循环分阶段(常见说法:timers → poll → check …),
setTimeout与setImmediate所在阶段不同。 - Node 还有
process.nextTick,优先级高于 microtask,使用不当可能饿死 I/O。 - 浏览器更强调“宏任务-微任务-渲染”节奏与帧率影响。
9. SSE 和 WebSocket 的区别?怎么选?
参考答案
- SSE:基于 HTTP(单向:服务端 → 客户端),天然支持断线重连(
Last-Event-ID),适合“服务端推送流式消息/日志/LLM 流式输出”。 - WebSocket:双向全双工,更适合高频双向交互(IM、协作编辑、游戏)。
- 选择:需求是否双向、代理/网关支持、长连接数量、消息频率与可靠性策略。
10. Vue2 和 Vue3 的主要区别
参考答案
- 响应式:Vue2 基于
Object.defineProperty,Vue3 基于 Proxy(更完整、性能更好、支持 Map/Set 等)。 - 运行时与编译:Vue3 更强的编译优化、Fragment/Teleport/Suspense 等能力。
- 组合式 API:更利于逻辑复用与类型推断(搭配 TS)。
11. TS 类型推断 vs 显式标注:怎么取舍?
参考答案
- 推断优先:局部变量/函数返回能推断时减少噪声,提升可读性。
- 显式标注:公共 API 边界(导出函数/组件 props/事件)、复杂泛型约束、避免类型漂移时应显式声明。
- 经验:对外“收口”,对内“让 TS 推断”。
12. 了解 MCP 吗?与传统 API 有什么不同?
参考答案
- MCP(Model Context Protocol)要点:把“工具/资源”以统一协议暴露给模型或 Agent,使其可发现、可调用、可组合。
- 与传统 API 的差别:
- 传统 API 面向人/服务调用;MCP 更强调“可被模型理解的工具描述、参数 schema、可发现性与上下文注入”。
- 工具调用通常需要配合权限、审计、速率限制与结果校验,降低幻觉与误操作风险。