简历追问:低代码变量编辑器与数据总线
关联:全栈工程师简历 > 低代码工作流引擎、15分钟:低代码平台、15分钟:公式编辑器、Tiptap 原子化胶囊如何防止光标越界或被部分删除、公式智能提示层的光标位置跟随是如何实现的。
对应简历描述
基于 Tiptap/ProseMirror 自研了低代码动态变量编辑器,支持通过
/或${}快捷唤起全局/上游节点变量菜单;设计了自研的表达式引擎,在运行时精准解析节点间的依赖引用,实现复杂业务场景下的跨节点参数传递与上下文状态管理。
面试官真正想确认
你是否把“变量引用”做成结构化能力,而不是字符串拼接和 eval。
连续追问链
1. 编辑器模型
- 变量在 Tiptap 文档里存的是展示名,还是稳定 id?节点重命名后公式会不会坏?
- 原子化胶囊如何防止用户把变量删一半、复制一半或把光标插进去?
/菜单和${}菜单的触发条件、候选过滤、键盘交互怎么做?- 提示框在弹窗、滚动容器里如何跟随光标?
2. 变量作用域
- “全局变量”和“上游节点变量”如何区分?下游能否引用未执行分支?
- Condition 未命中的分支输出,在表达式里是 undefined、null、还是不可引用?
- 节点删除、复制、重命名后变量引用如何更新或报错?
3. 表达式引擎
- 表达式是如何从文本变成 AST 的?Lexer、Parser、Evaluator 分别做什么?
- 为什么不能用
eval或new Function?白名单函数和上下文如何注入? - 类型转换、空值、日期、数组、函数参数数量错误如何提前提示?
- 异步函数或跨表查询如果进入公式,执行器如何处理 Promise 和性能问题?
4. 数据总线
- 运行时
ExecutionContext如何按nodeId隔离节点输出? - 跨节点参数传递是 push 还是 pull?下游执行前何时解析占位符?
- 多个节点并行执行时,如何避免上下文串数据?
场景推演题
HTTP 节点 B 的 URL 里引用了 Form 节点 A 的
${A.customerId}。后来 A 被复制成 A2,且 A 的字段 displayName 改了。请说明编辑器存储、变量解析和运行时上下文如何保证引用不乱。
继续追:如果 B 引用了一个只在未命中分支里产生的变量,发布时还是运行时拦截?
准备证据
- ProseMirror document JSON 中变量节点的结构。
- 一个表达式 AST 示例。
- 变量解析器的错误类型。
- 跨节点上下文结构样例。
容易露馅的回答
- “变量就是字符串替换。”
- “用中文名拼到公式里,改名时一起替换。”
- “运行时直接 eval。”
- “上游下游关系靠用户自己不要配错。”