• 如何设计公式解析引擎以确保高效的字符串解析与逻辑计算?
    • 词法分析:将字符串转化为词元流
    • 语法分析:将一维序列,转化为多维数据结构
      • AST 抽象在哪:省略了源码中那些对于语法正确性必不可少,但对于理解程序结构却咯;冗余的元素。比如 ()。在 AST 中,树形结构本身,就体现了表达式的优先级。比如 (2 + 3) * 4 的 AST 会将 + 节点作为 * 节点的左子节点。从而表达先加后乘的状态
      • 如何设计 AST 节点:我们为每种 AST 节点添加一个共同的、具有字面量类型的属性(通常命名为 kindtype)。这个共同的属性就是“可辨识项” (discriminant),它允许 TypeScript 在编译时精确地推断出联合类型变量的具体类型,从而实现类型安全的访问和处理
  • TDD|TDD]在公式编辑器中的应用,具体带来了哪些好处?
    • Bug 提前捕获
      • 应用:TDD 的起点就是为最小功能单元编写测试。例如在开发解析器是,可以先为最简单的场景写测试,如 1 + 1
        • Red: 编写一个测试用例 test('should parse simple addition', () => { expect(parse('1+1')).toEqual({ type: 'BinaryExpression', operator: '+', left: 1, right: 1 }); });,此时该测试会失败。
        • Green: 编写最简单的解析代码让该测试通过。
        • Refactor: 优化代码结构。
      • 好处:这种方式迫使我们在编码前就思考清楚各种输入和预期的输出。对于公式解析中的各种边界条件(如负数、科学计数法、嵌套函数),都可以通过测试先行的测试用例来定义和验证,从而在开发阶段就提前捕获 bug,而不是等到集成测试甚至线上才发现。
    • 代码质量保证
      • 应用:TDD 鼓励小步前进和持续重构。由于每一小步的功能都有测试作为保障,开发者可以大单进行重构。比如将一个臃肿的解析函数,拆分为更多更小、指责更单一的函数。
      • 好处:这自然地促使代码向着高内聚、低耦合的良好结构演进。测试用例本身也成为了“活文档”,清晰地描述了每个模块的功能和使用方式,极大地保证了代码质量和可维护性。
    • 测试覆盖率提升
      • 应用:TDD 的本质决定了任何生产代码都是为了让测试通过而编写的。
      • 好处:高测试覆盖率意味着代码的每个分支和逻辑路径都经过了验证,当需求变更或添加新功能时,可以快速回归测试,确保没有破坏现有功能。
    • 重构安全性与稳定性
      • 应用:公式编辑器的性能优化(如优化解析算法)或功能拓展(如怎家新的数学函数)是持续性工作
      • 好处:有了 TDD 构造的安全网,我们可以放心对核心算法进行重构,因为一旦改动破坏了原有逻辑,相关的测试会立刻失败。这种安全性和快速反馈机制,确保了公式编辑器长期迭代中的稳定性
  • 实时函数信息提示功能是如何设计的?如何保证提示信息的准确性和性能? 核心答案关键词:
    • 异步数据加载
    • 缓存机制
    • 动态提示
    • 函数语法分析
    • 性能优化(debounce)
    • TypeScript 类型定义
  • 如何通过模块化封装提高组件复用性,具体在项目中采取了哪些技术措施? 核心答案关键词: 高阶组件(HOC)、函数式编程、组件解耦、通用库、props/slots 传递、单一职责原则
  • 在自动化发布流程中,如何设计 CI/CD 流程以保证快速且稳定的部署? 核心答案关键词: GitHub Actions、自动化部署、持续集成持续交付、版本控制、回滚机制
    • 难点一:CI 流水线执行时间过长,影响开发效率
      • Problem
        • 随着项目复杂度增加,npm install、运行全量测试和构建过程变得异常缓慢,一个 CI 流程可能需要 20-30 分钟。这导致开发者在提交 PR 后需要漫长等待,无法快速得到反馈。
      • Action
        • 引入缓存:在 Github Action 中使用 actions/cachenode_modules 目录进行缓存。只有当 package-lock.json 发生变化时,才重新执行完整的 npm install,否则直接从缓存恢复,将依赖安装时间从几分钟缩短到十几秒
        • 任务并行化:将 Lint、单元测试、E2E 测试等互不依赖的任务,配置为在 CI 流程中并行 (jobs) 执行,而不是串行
        • 优化测试策略:引入增量检测机制,例如,只对本次 PR 中修改过的文件及其依赖相关的测试用例进行测试,而不是每次都运行全量测试。
        • 升级构建工具:引入 nx,nx 的设计是,下层依赖内容不变化,则直接使用上次的构建缓存。
      • Result: 通过上述一系列优化,CI 的平均执行时间从 25 分钟缩短到了 6 分钟以内。开发者能够更快地获得代码反馈,修复问题的周期也大大缩短。团队的合并频率得到提升,真正实现了“快速集成”。
  • 如何处理公式输入的错误提示与校验,确保用户输入的准确性? 核心答案关键词: 表单验证、即时反馈、正则表达式校验、错误提示组件、用户体验优化、输入校验逻辑
    • 即时反馈:我们不应该等到用户提交整个表单后才告诉他”公式格式错误”

下面的只有部分有做过,不是很好写

  • 如何确保公式计算的正确性和精确度?如何解决大数据量计算问题? 核心答案关键词: 数学精度控制(BigDecimal)、异步计算、Web Worker 使用、缓存策略、性能瓶颈处理
  • 公式编辑器的性能优化方向有哪些?如何避免因公式计算导致的性能问题? 核心答案关键词: 计算延迟(debounce)、懒计算、Web Worker 分离计算、虚拟 DOM、计算缓存