# 1. Mealy 机与 Moore 机的等价性与工程选择中输出挂在迁移上(Mealy)vs 挂在状态上(Moore)的时序差异、硬件综合中 Moore 更易流水化的原因、相互转换时状态数的变化 A Mealy 机的输出只依赖当前状态,因而无毛刺 B Moore 机转 Mealy 机时状态数一定增加 C Moore 机输出依赖输入,时序更不稳定 D Mealy 机输出是输入与状态的组合函数,变化快但可能产生组合毛刺 ✓ 正确答案
# 2. 状态机的驱动方式中事件驱动 vs 轮询,状态转移表与状态模式两种实现的选择? A 事件驱动比轮询更适合事件稀疏、异步的低功耗场景 ✓ 正确答案 B 表驱动适合状态行为差异大、需要多态扩展的场景 C 状态模式适合状态转移密集、逻辑简单的场景 D 轮询方式比事件驱动更省电
# 3. Myhill-Nerode 定理与 DFA 最小化中如何用不可区分等价类划分求最小 DFA,填表算法与 Hopcroft 算法的复杂度差异? A 填表算法复杂度为 O(n log n),优于 Hopcroft 算法 B 最小化前无需去除不可达状态 C Myhill-Nerode 定理说明最小 DFA 状态数等于不可区分等价类数目 ✓ 正确答案 D Hopcroft 算法复杂度为 O(n²)
# 4. XState/Statecharts 在 UI 状态管理中的实践中 invoke/spawn 管理异步副作用、parallel states 处理多区域 UI、与 Redux/Zustand 的协作边界 A invoke 用于静态声明常量,不参与异步生命周期 B 状态机负责流程控制,Redux/Zustand 负责数据共享,二者可协作 ✓ 正确答案 C parallel states 同一时刻只能有一个区域处于活动状态 D XState 应取代 Redux 管理所有数据,无需区分
# 5. 状态机在工程中的应用中工作流引擎、协议解析、游戏状态管理与测试用例生成? A 状态机把复杂条件分支转化为清晰的状态转移关系,提升可测试性 ✓ 正确答案 B 状态机只适用于游戏,不适用于协议解析 C 工作流引擎不应使用状态机 D 测试用例生成无法基于状态机
# 6. 状态机的 Mealy 与 Moore 模型差异中输出依赖输入还是状态,在协议解析中的应用? A Mealy 输出只依赖状态,与输入无关 B 协议解析中 Mealy 常见于输出依赖输入字节的场景 ✓ 正确答案 C Moore 输出依赖输入与状态,变化快 D Moore 输出随输入即时变化,易产生毛刺
# 7. 有限状态机与正则表达式中 DFA 最小化与 NFA 转 DFA 的基本思想? A NFA 与 DFA 能力不等价,DFA 更强 B 正则表达式无法转换为 NFA C DFA 最小化会增加状态数 D NFA 转 DFA 的子集构造法用状态集合作为 DFA 状态 ✓ 正确答案
# 8. 状态机在协议解析中的工程实现中 TCP 状态机与 JSON 解析器的状态驱动设计? A 状态驱动解析会引入更多 if-else 分支 B JSON 解析器无法用状态机实现 C TCP 状态机不涉及超时与重传 D TCP 状态机与 JSON 解析器都基于"状态+输入→下一状态+动作" ✓ 正确答案
# 9. 正则表达式引擎中的状态机中 Thompson NFA 与回溯型引擎(如 PCRE)的性能差异,为什么 DFA 能保证线性时间匹配? A 回溯型引擎匹配时间始终线性 B PCRE 比 DFA 更安全,不会发生 ReDoS C Thompson NFA 匹配会产生指数级回溯 D DFA 能保证线性匹配时间,因为每个字符只做一次确定状态转移 ✓ 正确答案
# 10. 状态模式(State Pattern)与状态表的取舍中状态行为差异大时用多态、状态转移密集时用表驱动,如何根据状态数量与动作复杂度选择? A 状态行为差异大时更适合状态表 B 状态转移密集且逻辑简单时更适合表驱动 ✓ 正确答案 C 状态模式状态数量少但类数量多,不利于扩展 D 状态表便于表达每条迁移上的复杂动作
# 11. 状态机与事件溯源(Event Sourcing)的关系中如何用事件序列重建状态机状态,审计与回放的工程价值? A 事件溯源直接保存当前状态快照,不保存事件 B 用事件序列重放可重建状态机当前状态,支持审计与回放 ✓ 正确答案 C 事件溯源不需要快照,事件日志不会增长 D 事件溯源无法支持调试与复现
# 12. Statecharts 的事件处理中事件如何沿嵌套状态向上传播(delegation),与平面 FSM 的事件优先级规则有何差异? A 事件先由最内层状态处理,未处理则沿父链上浮 ✓ 正确答案 B 事件优先由父状态处理,再向上传播 C 平面 FSM 也有父子层级与事件上浮 D Statecharts 中事件不会跨层级传播
# 13. 状态机 entry/exit 动作的执行顺序中状态切换时按 exit A → entry B 的顺序执行,自迁移(self-transition)为何也会执行 exit/entry? A 状态切换时先执行 entry B 再执行 exit A B 自迁移不执行 exit/entry,因为状态未变 C 自迁移同样执行 exit A 和 entry A,保证重入时重新初始化 ✓ 正确答案 D entry/exit 只关心状态内容,不涉及资源清理
# 14. 层次状态机(Harel Statecharts)中正交区域(orthogonal regions)、历史伪状态(shallow/deep history)、guard condition 与事件优先级,对比扁平 FSM 在复杂系统中的状态爆炸缓解 A 正交区域在同一时刻只能有一个区域活动 B 正交区域与嵌套结构可避免用笛卡尔积手工展开状态,缓解状态爆炸 ✓ 正确答案 C deep history 只记录直接子状态,不记录嵌套子状态 D guard condition 用于无条件执行动作
# 15. TCP 协议状态机中 CLOSED→LISTEN→SYN_SENT→ESTABLISHED→FIN_WAIT_1→TIME_WAIT 的完整迁移图,TIME_WAIT 的 2MSL 设计原因,half-open 连接的检测与清理 A TIME_WAIT 的 2MSL 是为了让旧报文在网络中消亡并保证最后 ACK 到达 B half-open 连接可通过 keepalive 探测与 RST 检测并清理 ✓ 正确答案 C TIME_WAIT 状态是无期限的,不随时间关闭 D 主动关闭方不会进入 FIN_WAIT_1 状态
# 16. 基于模型的测试(Model-Based Testing),从 FSM 规格自动生成测试用例、状态覆盖/迁移覆盖/路径覆盖准则、conformance testing(IUT vs spec)的 ioco 关系 A ioco 要求 IUT 在规格允许的输入下不产生规格未定义的输出 ✓ 正确答案 B 路径覆盖成本最低,最常用 C 状态覆盖比迁移覆盖要求更高 D MBT 依赖手工编写测试用例,无法自动生成
# 17. 有限状态机的建模中状态、事件、转移、动作(Mealy/Moore)如何用于协议与流程建模? A 状态机要素只有状态与转移,不含动作 B 用状态、事件、转移、动作可把协议与流程建模为可验证模型 ✓ 正确答案 C Mealy 模型把动作挂在状态上,Moore 挂在转移上 D 状态机建模无法支持协议解析
# 18. 状态机与正则表达式/自动机理论的关系中 DFA/NFA 的等价性与状态最小化? A 正则表达式、NFA、DFA 描述等价,DFA 可最小化 ✓ 正确答案 B DFA 能力严格强于 NFA C 最小化后的 DFA 不唯一 D 正则表达式无法转化为自动机
# 19. 状态机的可测试性中如何用状态覆盖/转换覆盖设计测试用例,状态爆炸如何避免? A 状态覆盖要求每条转换至少执行一次 B 转换覆盖只要求每个状态到达一次 C 状态机无法系统生成测试用例 D 用层次化与正交区域可避免用笛卡尔积展开状态,缓解状态爆炸 ✓ 正确答案
# 20. 状态机在嵌入式/游戏中的轻量实现中枚举 + 状态转移表 + 事件队列的方式如何避免内存分配并保证实时性? A 事件队列会引入不确定时延 B 该方式依赖运行时动态分配状态对象 C 枚举 + 状态转移表 + 事件队列可避免动态内存分配,保证实时性 ✓ 正确答案 D 状态转移表每步都需要 O(n) 查找
# 21. 状态机的并发与重入中事件在状态处理中再次触发时如何排队或延迟,状态机的重入安全如何保证? A 事件处理中再次触发事件可直接重入,无需处理 B 状态机天然是线程安全的,无需关心重入 C 用事件队列按序消费事件可避免状态机重入 ✓ 正确答案 D 重入安全与事件顺序无关