← [ BACK_TO_NOTES ]

MemoFlow 项目面试题库

围绕 MemoFlow 多端架构、Mastra Runtime、HTTP/IPC、Server State、401、可观测性、Monorepo 与 exact-SHA 发布组织的项目题库。

#synthesis #growing #ai #memoflow #interview

[!info] related notes

MemoFlow 项目面试题库

使用规则

  • 先折叠题卡闭卷口述,再展开答案;
  • 题源 只描述问题如何进入题库,答案依据 单独描述技术正确性;
  • NC-H 代表近期公开面经主题交叉出现,不代表公司官方题库;
  • AI-D 明确表示 AI 衍生的高价值追问;
  • 完整知识只维护在相关长期笔记,本页保存面试表达;
  • 项目题必须在面试前回动态 evidence index 核验,不临场编数字。

题源定义见 面试题来源、置信度与答案依据;回答方法见 技术面试回答框架。

项目总览

[!question]- P0 MF-001 请介绍 MemoFlow。 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答 MemoFlow 是我长期维护的多端个人效能系统,覆盖目标、任务、知识、日程和 AI 协作。它既有 Web,也有 Electron Desktop。前端以 Vue3/TypeScript 为主,后端是 Express + Prisma/PostgreSQL,AI Runtime 收敛到 TypeScript/Mastra。项目真正难点不是功能数量,而是 Web/Desk­top 不分叉、Server State 不重复、AI 不能越权直接写业务、以及每次发布能确认所有端对应同一组代码和契约。所以我重点做了 host adapter、共享 contract、AI proposal/approval/execution 边界、并发 401 singleflight、跨服务 trace 和 exact-SHA release。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的代码和决策边界是什么?
  • 失败路径和真实限制是什么?
  • 哪一项证据能证明已经实现?

[!question]- P0 MF-002 为什么长期维护这个项目? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答 它对我来说更像长期工程实验场,而不是一次性作品集。随着 Web、Desktop、AI、同步和发布都进入系统,很多问题只有长期演进才会出现:同一业务在两个 host 漂移、接口语义不一致、token 刷新竞态、release 资产半发布等。这些比“再做一个 Todo 页面”更有学习价值。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的代码和决策边界是什么?
  • 失败路径和真实限制是什么?
  • 哪一项证据能证明已经实现?

Mastra Runtime / AI 执行边界

[!question]- P0 MF-003 为什么 MemoFlow 用 Mastra,而 BodySense 用 LangGraph? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:LangGraph · Interrupt / Resume 生命周期 · BodySense 项目 MOC · MemoFlow 项目 MOC

30 秒回答 两个项目的技术环境不同。BodySense 的 AI 核心本来就在 Python 生态,知识处理和 LangGraph/PydanticAI 更自然;MemoFlow 的主要应用层、共享 contracts 和 API 都是 TypeScript,多端产品希望减少跨语言边界,所以把 runtime 收敛到 TypeScript/Mastra 更容易共享类型、上下文和业务接口。选型标准不是哪个框架“更强”,而是 runtime 与现有产品边界的耦合成本。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的代码和决策边界是什么?
  • 失败路径和真实限制是什么?
  • 哪一项证据能证明已经实现?

[!question]- P0 MF-004 Agent Runtime 为什么运行在产品 API 内? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Agent · Agent Runtime · Agentic Workflow Patterns · RESTful API

30 秒回答 对 MemoFlow 来说,AI 最终操作的是 Goal/Task/Knowledge 等产品能力。如果 runtime 与产品 API 完全分离,会多一层身份、contract 和网络故障边界。收敛在 TypeScript/API 侧可以直接通过 application port 调业务能力,同时仍然保持“AI 负责理解和 proposal,领域服务负责真正写入”的边界。代价是 API 进程需要隔离长任务、timeout/cancel 和资源消耗。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 MF-005 AI 为什么不能直接写 Goal / Task? 题源:RESUME-H(当前简历 / 项目材料) + AI-D(连续追问补全) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:浏览器 JS Event Loop · 浏览器与 Node.js Event Loop

30 秒回答 模型输出只是意图和候选参数,不是授权。即使 JSON schema 合法,也可能语义错误、权限不符、重复执行或被 prompt injection 诱导。MemoFlow 把流程拆成 proposal → approval → execution:模型生成 proposal;需要时用户确认;最终调用正常产品接口,由业务层继续做鉴权、校验、幂等和持久化。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 MF-006 结构化输出已经有 Zod 了,为什么还需要业务校验? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答 Zod 只能证明“结构符合 schema”,例如 title 是 string、deadline 是 date;它不能证明用户有权限修改这个 Goal,也不能证明这个 Task 当前状态允许删除,更不能证明模型没有选错实体。所以要区分 syntax/schema validation、domain validation 和 authorization。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P1 MF-007 如何避免 proposal 被重复执行? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答

  • proposal 有稳定 id。
  • approval/execution 是状态机,只允许合法转移。
  • execution 使用 idempotency key 或数据库唯一约束。
  • 重复请求返回已有结果。

展开要点 / 原始迁移内容

  • 工具调用日志与业务写入事务边界清晰。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

Web / Desktop Host 抽象

[!question]- P0 MF-008 什么叫 AI Client Port? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答 业务组件依赖一个抽象接口,例如 runAgent() / cancelRun() / approveProposal(),而不是直接调用 fetch 或 Electron ipcRenderer。Web adapter 把这些操作映射到 HTTP/SSE,Desktop adapter 映射到 IPC。这样 proposal、错误码、取消和状态机是业务语义,transport 只是实现细节。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 MF-009 为什么不直接在组件里判断 if (isElectron)? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答 短期方便,长期会让 transport 逻辑散落在 UI:每个组件都重复处理错误、序列化、取消和返回结构,Web/Desktop 很快分叉。Adapter/port 把环境差异收敛到 composition root,业务组件只处理统一结果。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 MF-010 HTTP 与 IPC 最大的差异是什么?为什么还能统一? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答

  • HTTP 跨进程/网络,有状态码、headers、序列化、超时/断网。
  • IPC 通常本机进程间,transport failure 模型不同,也可能有 Electron security boundary。
  • 能统一的是业务 contract:请求 DTO、返回 Result、错误 code、取消语义。
  • 不能强行统一所有底层细节:连接状态、网络 retry 等应留在 adapter。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 MF-011 HTTP / IPC 契约一致性怎么测? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答 把 transport adapter 当两个实现,对同一组 contract cases 运行测试:合法输入得到同样业务结果;非法 DTO 都被拒绝;domain error 映射成同样稳定 code;取消和权限语义一致。这样不是测“HTTP 长得像 IPC”,而是测两个 host 对同一业务能力的可观察行为一致。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 MF-012 为什么 TypeScript 类型不能替代 Zod? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:TypeScript 高级类型 · 运行时输出校验

30 秒回答 TypeScript 类型在编译后消失,外部 HTTP body、IPC payload、数据库 JSON 都是运行时数据。Zod 在边界处做 runtime parse,防止“编译器相信了,但真实输入不符合”。共享 TS 类型可以从 schema 推导或与 schema 保持单一来源。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

Server State / PowerSync / 多端一致性

[!question]- P0 MF-013 Server State 和普通全局状态有什么区别? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:TanStack Query MOC · Server State vs Client State

30 秒回答 Server State 的权威在服务器/同步层,本地只是缓存,会有 stale、refetch、并发 mutation、失效和多客户端变化;UI state 则由当前客户端自己拥有,例如侧栏是否展开。把 Server State 复制进 Pinia/Zustand 再手工同步,通常会制造第二份真值。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 谁拥有这份状态的真值?
  • 并发 mutation 如何防旧响应覆盖新状态?
  • 失效范围过大或过小会怎样?

[!question]- P0 MF-014 MemoFlow 如何统一 Web / Desktop 的 Server State 语义? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:TanStack Query MOC · Server State vs Client State · MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答 尽量让两个 host 共用 query key、invalidation、mutation 生命周期和 domain DTO。底层数据来源可以不同,例如 Web 主要 HTTP、Desktop 可能结合 IPC/PowerSync,但业务 feature 不重新发明一套“任务是否 stale、修改成功后哪些列表失效”的规则。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 谁拥有这份状态的真值?
  • 并发 mutation 如何防旧响应覆盖新状态?
  • 失效范围过大或过小会怎样?

[!question]- P0 MF-015 query key 为什么重要? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:TanStack Query MOC · Server State vs Client State

30 秒回答 它定义缓存身份和失效边界。例如 ['tasks', {goalId, page}] 与 ['task', taskId] 表达不同资源。如果 key 设计过粗,一次 mutation 会让大量无关数据 refetch;过细且不一致,会出现更新后某些视图仍显示旧数据。Key 应与资源和筛选参数稳定对应。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 谁拥有这份状态的真值?
  • 并发 mutation 如何防旧响应覆盖新状态?
  • 失效范围过大或过小会怎样?

[!question]- P0 MF-016 乐观更新怎么做 rollback? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答

  1. mutation 前取消可能覆盖本地乐观值的 in-flight query。
  2. snapshot 旧 cache。
  3. 写入 optimistic value。
  4. mutation 失败恢复 snapshot 或执行补偿。

展开要点 / 原始迁移内容 5. settled 后根据服务端真值 invalidate/refetch。

并发 mutation 时需要为每个 mutation 保留独立 context/时间戳/id,避免后完成的旧请求覆盖新请求。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P1 MF-017 PowerSync 是什么位置? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答 把 PowerSync 视为多端本地数据同步/离线能力的一层,而不是替代业务 API 和权限模型。同步解决“数据如何到客户端并最终收敛”,业务 command 仍需要领域规则、授权和服务端真值。具体到当前实现要按真实代码说明哪些实体走 PowerSync,哪些仍走 API。

展开要点 / 原始迁移内容 这题不要超出真实仓库实现。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

并发 401 / Token Refresh

[!question]- P0 MF-018 多个请求同时 401 会发生什么? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Token 认证与刷新流程 · Promise · JWT · Token 认证流程

30 秒回答 如果每个 interceptor 都独立发 refresh,会形成 refresh storm。更糟的是 refresh token 旋转时,第一个 refresh 成功后旧 refresh token 失效,第二个 refresh 可能失败,把刚恢复的登录态又清掉。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 为什么会出现 refresh storm?
  • refresh 请求自己 401 怎么办?
  • 多 tab / 多窗口如何协调?

[!question]- P0 MF-019 singleflight / Promise lock 怎么解决? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Token 认证与刷新流程 · Promise · async / await

30 秒回答 共享 HTTP Client 保存一个 refreshPromise。第一个 401 创建 refresh 请求;后续 401 发现已有 promise,就 await 同一个结果,而不是再次 refresh。成功后更新 token,并让等待请求各自 replay;失败则统一进入登录失效路径。最后清理 lock。

展开要点 / 原始迁移内容 伪代码思路:

if (!refreshPromise) {
  refreshPromise = refreshToken().finally(() => {
    refreshPromise = null
  })
}
await refreshPromise
return retry(originalRequest)

真正实现还要防:refresh endpoint 自己进入 interceptor 无限循环、请求不可安全 replay、body stream 已消费等。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 为什么会出现 refresh storm?
  • refresh 请求自己 401 怎么办?
  • 多 tab / 多窗口如何协调?

[!question]- P0 MF-020 为什么这和“互斥锁”不完全一样? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Token 认证与刷新流程 · Promise

30 秒回答 目标不是让所有 401 串行各 refresh 一次,而是把同一时刻的相同工作合并成一次,其他调用共享结果,所以更接近 singleflight/request coalescing。锁只是实现手段之一。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 互斥、singleflight 和缓存分别控制什么?
  • refresh 失败时等待中的请求怎样统一结束?
  • 怎样证明整个刷新窗口只发出一次 refresh?

[!question]- P1 MF-021 多 Tab 怎么办? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Token 认证与刷新流程 · 浏览器多上下文状态

30 秒回答 单页面内 Promise lock 只能管一个 JS context。多 tab 可以结合 BroadcastChannel、SharedWorker 或服务端 refresh token rotation 设计减少竞态;最重要的是服务端必须正确处理 token family / replay,不能把安全完全寄托在前端锁上。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 单个 JS context 的 Promise 为什么管不到其他 tab?
  • BroadcastChannel 失效时服务端怎样兜底?
  • Refresh Token Rotation 如何识别 replay?

可观测性与失败语义

[!question]- P0 MF-022 requestId 和 traceId 有什么区别? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:多服务分布式追踪 · MemoFlow 多端 AI 应用架构

30 秒回答 requestId 常对应一次入口请求;traceId 用来关联一次跨服务/跨 span 的完整调用链。实际实现可以让入口 requestId 同时作为 trace seed,也可以分别维护。关键是 Web/Desktop → API → AI Runtime → 下游模型/DB 能把关联字段继续传下去。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 MF-023 为什么 SSE 结束也要记录状态? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:前端流式响应模式 · Agent Runtime

30 秒回答 SSE 不是“连接关了就等于成功”。连接可能因用户取消、代理断开、模型失败、服务器 crash 或正常 complete 结束。Run 必须有独立 lifecycle,并在 final event/持久化中明确 completed / failed / cancelled / interrupted,否则线上看到“流断了”无法知道业务结果。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 一次 reader.read 为什么不等于一个 event?
  • 断线后如何恢复且不重复渲染?
  • Run 的 durable state 与连接状态如何分开?

[!question]- P0 MF-024 为什么客户端只接收稳定错误码? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:稳定 API 错误模型 · MemoFlow 多端 AI 应用架构

30 秒回答 内部异常文本可能包含 SQL、路径、provider 信息,也会随实现变化。客户端真正需要的是稳定可分支的 domain/application code,例如 AUTH_EXPIRED、RUN_CANCELLED;内部日志保留 stack、cause、requestId。这样既避免泄露,也防 UI 绑定某个库的 error message。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P1 MF-025 logs、metrics、traces 怎么分工? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答

  • Logs:离散事件细节,适合查单次故障。
  • Metrics:聚合趋势,如 error rate、latency、queue depth。
  • Traces:跨组件调用链和耗时。
  • 三者通过 trace/request id 关联更有价值。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

Monorepo / Dependency Boundary

[!question]- P0 MF-026 为什么用 Nx / pnpm Monorepo? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查共享契约、依赖边界、任务图和 CI 收益是否真实。 相关知识:Nx + pnpm Monorepo · Monorepo 架构

30 秒回答 项目有 Web、Desktop、API、共享领域包和 contracts,同仓能让一次业务改动跨包原子提交,pnpm workspace 管依赖,Nx 用 task graph 统一 lint/typecheck/test/build 并根据依赖关系执行。价值是共享和验证,不是“Monorepo 看起来更工程化”。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 MF-027 Monorepo 最大风险? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查共享契约、依赖边界、任务图和 CI 收益是否真实。 相关知识:Nx + pnpm Monorepo · Monorepo 架构

30 秒回答

  • 依赖边界失控,任何 package 随便 import 任何东西。
  • CI 越来越慢。
  • 根配置耦合所有应用。
  • shared package 变成“垃圾桶”。

展开要点 / 原始迁移内容

应对:明确 domain/application/infra/host 层,lint/import boundary,affected tasks,稳定 contracts。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P1 MF-028 composition root 是什么? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查共享契约、依赖边界、任务图和 CI 收益是否真实。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答 真正把抽象接口与基础设施实现装配到一起的位置。例如 Web host 注入 HTTP adapter,Desktop host 注入 IPC adapter。业务 feature 只依赖 port,不应该自己 new PrismaClient、直接读 Electron API 或模型 SDK。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P1 MF-029 为什么要做 import/surface checks? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查共享契约、依赖边界、任务图和 CI 收益是否真实。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答 架构规则只写在文档里会慢慢失效。CI 可以检查业务包不能 import host/infra 包、公开 export surface 不能泄露内部实现,把“依赖方向”变成机器可验证的约束。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

Release / CI/CD

[!question]- P0 MF-030 什么是 exact-SHA release? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:CI/CD MOC

30 秒回答 Release 的源码 commit SHA 是唯一锚点。CI、tag、Desktop 安装包、Docker image、manifest 都必须能追溯到同一个 SHA。这样避免“PR 合并的是 A,打包时 main 又到了 B,Docker 用 latest C”的半发布状态。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 产物如何追溯到唯一 commit?
  • 数据库 migration 为什么限制自动回滚?
  • 健康检查通过是否就等于发布成功?

[!question]- P0 MF-031 为什么 Release PR 与真正发布分开? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:CI/CD MOC

30 秒回答 Release PR 负责版本/changelog 变更;合并后还必须验证 exact SHA 的 CI 通过,才能创建 tag/draft、构建资产并做 postflight。版本号准备成功不代表产物已经完整可发布。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 产物如何追溯到唯一 commit?
  • 数据库 migration 为什么限制自动回滚?
  • 健康检查通过是否就等于发布成功?

[!question]- P0 MF-032 Draft Release 有什么价值? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:CI/CD MOC

30 秒回答 多资产构建可能不同步。先 draft 可以上传 Desktop 安装包、manifest 等并校验完整性,只有全部 postflight 通过后再公开,避免用户看到只有一半资产的 Release。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 产物如何追溯到唯一 commit?
  • 数据库 migration 为什么限制自动回滚?
  • 健康检查通过是否就等于发布成功?

[!question]- P0 MF-033 Docker image tag 为什么不能只用 latest? 题源:RESUME-H(当前简历 / 项目材料) + AI-D(连续追问补全) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Docker

30 秒回答 latest 是可变指针,不能证明当前服务器跑的到底是哪次构建。应保留 commit SHA / digest 作为不可变标识,环境 tag 只能作为辅助别名。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 产物如何追溯到唯一 commit?
  • 数据库 migration 为什么限制自动回滚?
  • 健康检查通过是否就等于发布成功?

[!question]- P1 MF-034 如果 Desktop 构建成功但 Docker 构建失败怎么办? 题源:RESUME-H(当前简历 / 项目材料) + AI-D(连续追问补全) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:Docker · STAR 行为题结构

30 秒回答 不公开整个 release,保留 draft 和失败证据,修复后对明确 SHA 重新走完整门禁;不能因为一个平台成功就让版本处于半公开状态,除非产品明确支持独立版本线。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 产物如何追溯到唯一 commit?
  • 数据库 migration 为什么限制自动回滚?
  • 健康检查通过是否就等于发布成功?

Electron / Desktop

[!question]- P0 MF-035 Electron main / renderer / preload 分别是什么? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答

  • main:Node/Electron 主进程,窗口生命周期和系统能力。
  • renderer:网页渲染进程,UI。
  • preload:在隔离环境里通过 contextBridge 暴露最小安全 API。 安全原则:关闭不必要的 Node integration,开启 context isolation,IPC 做 channel 白名单和 payload validation。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 MF-036 为什么 renderer 不应该直接拥有全部 Node 权限? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答 Renderer 会处理远端/用户内容,一旦出现 XSS,Node 权限会把普通 Web 漏洞升级成本地任意文件/命令能力。Electron 安全的核心是最小权限边界,把系统能力限制在 preload/main 的明确接口。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P1 MF-037 Web 与 Desktop 共用 UI 时要避免什么? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答 不要让共享组件直接访问 window.electron。共享 feature 依赖抽象 service,host 在 composition root 注入。否则测试和 Web 构建都被 Desktop 环境污染。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

AI 工程化追问

[!question]- P0 MF-038 AI 工作流失败如何分类? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:STAR 行为题结构

30 秒回答 至少分:

展开要点 / 原始迁移内容

  1. transport/network;
  2. auth/permission;
  3. model provider timeout/rate limit;
  4. structured-output parse;
  5. tool execution;
  6. domain validation;
  7. cancellation;
  8. persistence/conflict。

不同类的 retry、用户提示和告警策略不同。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P0 MF-039 模型调用什么时候可以自动重试? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答 只对可判定为 transient 的失败,例如部分 timeout/429/5xx;并使用有限次数 + exponential backoff + jitter。执行有副作用的工具不能因为模型调用层重试就重复执行,必须有 idempotency。validation failure 更适合修正 prompt/schema 或让模型 repair,而不是无限 retry。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

[!question]- P1 MF-040 怎么做模型降级? 题源:RESUME-H(当前简历 / 项目材料) 答案依据:PROJECT-E2/E3(面试前以动态 evidence index 复核)+ KB 考察意图:检查能否把真实业务问题、个人职责、技术取舍和验证证据连成闭环。 相关知识:MemoFlow 项目 MOC · MemoFlow 多端 AI 应用架构

30 秒回答 先定义能力等级和业务 SLO,而不是“失败就换便宜模型”。可以按任务类型路由主模型/备用模型;fallback 要保留 trace、模型版本、原因,并保证结构化输出契约一致。对于高风险任务,宁可 fail closed,也不一定适合自动换弱模型。

回答边界 只陈述动态 evidence index 当前能证明的 E2/E3 内容;设计稿、待实施项或旧版本必须用将来时/条件句。

继续追问

  • 你个人负责的边界是什么?
  • 当前实现的失败路径和限制是什么?
  • 哪段代码、测试或 ADR 可以证明?

简历最高风险证据题

[!question]- P0 MF-S01 MemoFlow 中 Redis 和 PowerSync 当前各自做什么? 题源:RESUME-H(最高风险 Claim) 答案依据:PROJECT-E2/E3(必须面试前重新核验) 考察意图:检查列出的基础设施是否有真实职责与失败策略。 相关知识:MemoFlow 项目 MOC · Redis

30 秒回答 先以当前代码回答:PowerSync 如果承担离线/同步,要指出具体实体、同步规则和服务端权威;Redis 如果用于缓存、会话、队列或限流,要指出调用路径、key/TTL 和失效策略。任何未在主链路使用的依赖都不能用“未来可能”包装成已实现。

展开要点 同步层、业务 API 和 Agent Runtime state 是不同问题:PowerSync 不自动提供领域授权,Redis 也不应成为无法重建的业务真值。

继续追问

  • PowerSync 冲突如何收敛?
  • Redis 故障是否影响写入?
  • 哪些实体仍只走 API?

覆盖说明

本页由 11-project-memoflow.md 中的 40 道编号题全量迁移,并从近期观察层去重补充 1 道独立高价值题,共 41 道;每题包含题源、答案依据、考察意图、知识链接和追问。近期题目趋势另由 题源注册表 管理,避免再次维护一套重复答案。

创建于 2026/9/2 更新于 2026/9/2
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本