基于你提供的《JS 面试高频问题(2026重新分析面经版)》题单重新整理。
目标不是把答案压缩成关键词,而是按“为什么 → 是什么 → 怎么运行 → 代码示例 → 面试怎么说 → 常见误区/追问”的方式,把每道题整理成可以系统学习、也可以直接用于面试表达的教程。
说明:少数面试资料里常见的“栈存基本类型、堆存引用类型”“渲染就是宏任务”等说法属于简化模型。本文会保留面试所需的直观理解,同时标注更准确的边界,避免背出明显不严谨的结论。
前端面试高频题型:并发控制 + 重试 + 失败中止。
一、题目:限制并发数的 Promise.allSettled(带重试)
给定一批异步任务(每个任务是一个返回 Promise 的函数),要求:
- 并发最多
limit个——同一时刻运行的任务数不超过limit。 - 每个任务失败自动重试最多
retries次。 - 可选:任意一个任务失败且重试耗尽后,立刻中止整个并发池并 reject。
- 结果顺序和任务顺序保持一致。
- 不失败中止的情况下:单个任务失败时,结果用
{ error: err }记录,其他任务继续跑完。
Hooks
1. Hooks 的整体执行入口是什么?
renderWithHooks,然后可以说第二个问题的内容。
2. renderWithHooks 做了什么?
分为三个阶段:
阶段一:在调用函数前准备环境,把当前正在渲染的 fiber 赋予给全局变量 currentlyRenderingFiber = workInProgress,让后续 hook 知道自己属于哪个组件,读取 current 树上已有的 hook 链表头;判断当前是 mount 还是 update(首次渲染还是更新渲染)来切换 dispatcher。
为什么要用虚拟列表
当列表数据量很大时(比如 1 万条、10 万条),如果直接把所有数据都渲染成 DOM 节点,会出现明显的性能问题:
- DOM 节点过多:浏览器需要创建和维护海量节点,内存占用高。
- 渲染卡顿:首次渲染时间长,滚动时掉帧。
- 滚动不流畅:大量节点参与重排重绘,FPS 下降。
但实际上,用户在同一时刻能看到的列表项只有几十条(可视区域大小)。虚拟列表的核心思想就是:只渲染可视区域内的那几十条,其余的用空白占位撑开滚动条。
提交:67c59a6 029:执行记录
对比基准:5406e74 028:检索失败兜底
本文不是功能清单,而是一次从数据库到页面的完整代码走读。读者只需要知道 React 组件、async/await 和基本 TypeScript;Prisma、tRPC、React Query、Next.js Server Component、nuqs、Inngest 会在第一次出现时解释。
路径中原项目使用了
excutions、excution.tsx这两个拼写,本文按提交中的真实文件名引用。正确英文应为executions、execution.tsx。阅读时不要把它误以为框架约定。
作者:skymecode
一、改造背景
之前的编辑器右侧边栏是用"检查器"的方式工作的:点击节点后会弹出一个对话框来配置。但这种方式有几个问题:
- 操作不直观:用户需要先点击节点,再在弹出的对话框中配置,然后关闭对话框,步骤太多
- 上下文切换:对话框会遮挡画布,用户无法同时看到节点和配置
- 功能受限:对话框空间有限,无法展示复杂的配置项
涵盖 024 / 025 / 026 / 028 四个提交。
本文复盘以下四个提交:
| 编号 | Commit | 主题 | 在 RAG 链路中的作用 |
|---|---|---|---|
| 024 | 6f8ddf0 |
RAG 节点和知识库 | 从文件上传、解析、切片、Embedding、检索到生成,完成第一版端到端闭环 |
| 025 | 5d5da82 |
节点输出显示 | 用 Inngest Realtime 展示节点输入、输出和错误,补齐 RAG 调试与可观测性 |
| 026 | 0ce7d1d |
多路召回策略和不同切片策略 | 从单一递归切片、向量召回升级为按文件类型切片和五种检索模式 |
| 028 | 5406e74 |
检索失败兜底 | 增加弱召回判断、拒答与可选 LLM 通识兜底,控制幻觉、成本和可用性 |
提交:8c80e7a 022:ai节点
对比基准:3cb8965 021:tally表单触发webhook
本文写于 2026-07-05。这个提交的目标是把 AI 能力作为一种 workflow 执行节点接入画布,让用户可以在 React Flow 里配置 Provider、模型、凭证和 Prompt,并把 AI 结果写回 workflow context,供后续节点继续使用。
这个提交解决的问题
021 提交已经支持 Tally webhook 触发 workflow,也支持 HTTP Request 节点消费上下文变量。但 workflow 还缺少一个核心执行能力:
提交:4594f3d 023:逻辑分支节点
对比基准:8c80e7a 022:ai节点
本文写于 2026-07-05。这个提交把 workflow 从“按拓扑排序线性执行节点”升级为“节点可以根据执行结果选择不同输出分支”,并新增了 Condition、Switch、Loop、Transform、Error Handler 五类节点。
这个提交解决的问题
022 的执行模型是:
topologicalSort(nodes, edges)
-> for node of sortedNodes
-> executor(context)
-> context = result
提交:3cb8965 021:tally表单触发webhook
对比基准:aa6b003 020:实时状态显示
本文写于 2026-07-04。这个提交的核心是把 Tally 表单接入 workflow,让一次外部表单提交可以自动触发一次工作流执行。
本文重点从前端角度解释:
- 用户在画布里如何添加 Tally 表单触发器
- 前端如何展示 webhook 配置入口
- Tally 提交的数据如何变成 workflow context
- HTTP Request 节点如何消费 Tally 字段
- 为什么要改 HTTP Request 的 URL 校验
