ASP.NET Core 生产实践试题 05:优雅关闭与后台任务终止
081 关于应用停止令牌,哪一项准确描述了应依赖的平台契约?
难度: 基础
- A. ApplicationStopping 保证所有回调无论耗时多久都执行完
- B. 关闭窗口有超时,不能把无限任务放进停止回调
- C. 只要观察到“发布时旧实例长时间无法退出”,就能把这次现象视为所有环境中的固定行为。
- D. IHostApplicationLifetime 提供停止相关令牌,组件可在关闭阶段停止接收工作并执行有限清理
查看答案与解析
正确答案D
正确项给出了应用停止令牌可直接依赖的规则:“IHostApplicationLifetime 提供停止相关令牌,组件可在关闭阶段停止接收工作并执行有限清理”。“关闭窗口有超时,不能把无限任务放进停止回调”是应用规则前必须确认的边界,不是规则本身;“ApplicationStopping 保证所有回调无论耗时多久都执行完”则把常见现象或实现细节扩大成了平台保证。场景“发布时旧实例长时间无法退出”只能作为排查线索,仍需结合目标框架、发布方式和运行时证据验证。
082 生产环境出现“发布时旧实例长时间无法退出”时,针对应用停止令牌应如何排查?
难度: 进阶
- A. 直接采用“ApplicationStopping 保证所有回调无论耗时多久都执行完”解释现象,不再收集目标进程和发布配置证据。
- B. 只增加机器资源或重启进程,以一次恢复结果代替对“关闭窗口有超时,不能把无限任务放进停止回调”的验证。
- C. 先验证“关闭窗口有超时,不能把无限任务放进停止回调”,再使用运行时指标、日志或最小复现检查“IHostApplicationLifetime 提供停止相关令牌,组件可在关闭阶段停止接收工作并执行有限清理”是否成立。
- D. 只检查代码是否能够编译,通过后便认定“IHostApplicationLifetime 提供停止相关令牌,组件可在关闭阶段停止接收工作并执行有限清理”在当前部署中必然成立。
查看答案与解析
正确答案C
“发布时旧实例长时间无法退出”可能由多条路径造成,不能直接证明根因。合理顺序是先确认边界“关闭窗口有超时,不能把无限任务放进停止回调”,再以“IHostApplicationLifetime 提供停止相关令牌,组件可在关闭阶段停止接收工作并执行有限清理”组织证据。采用误区“ApplicationStopping 保证所有回调无论耗时多久都执行完”、盲目扩容或只看编译结果,都跳过了运行配置与真实调用路径,无法形成可复核的诊断结论。
083 评审应用停止令牌相关实现时,以下哪项判断不成立?
难度: 实战
- A. ApplicationStopping 保证所有回调无论耗时多久都执行完
- B. IHostApplicationLifetime 提供停止相关令牌,组件可在关闭阶段停止接收工作并执行有限清理
- C. 关闭窗口有超时,不能把无限任务放进停止回调
- D. 遇到“发布时旧实例长时间无法退出”时,应把可观察证据与平台契约分开记录,再验证二者是否一致。
查看答案与解析
正确答案A
题目要求找出不成立的判断,“ApplicationStopping 保证所有回调无论耗时多久都执行完”正是应用停止令牌的典型误区。主规则“IHostApplicationLifetime 提供停止相关令牌,组件可在关闭阶段停止接收工作并执行有限清理”描述了实现应依赖的契约,边界“关闭窗口有超时,不能把无限任务放进停止回调”限制了结论的适用范围。生产场景还需要保留指标、日志、跟踪或转储等证据,不能因为一次成功或失败就反转稳定契约。
084 准备上线涉及应用停止令牌的改动时,哪项验收方案最完整?
难度: 实战
- A. 依据“ApplicationStopping 保证所有回调无论耗时多久都执行完”完成修改,只要本地运行一次成功就立即发布。
- B. 依据“IHostApplicationLifetime 提供停止相关令牌,组件可在关闭阶段停止接收工作并执行有限清理”实现,在“关闭窗口有超时,不能把无限任务放进停止回调”成立的环境中验证,并为“发布时旧实例长时间无法退出”保留可观测证据和回退条件。
- C. 按照“IHostApplicationLifetime 提供停止相关令牌,组件可在关闭阶段停止接收工作并执行有限清理”修改代码,但不核对“关闭窗口有超时,不能把无限任务放进停止回调”或目标发布模式。
- D. 只验证“关闭窗口有超时,不能把无限任务放进停止回调”,实现仍继续依赖“ApplicationStopping 保证所有回调无论耗时多久都执行完”这一未经证明的假设。
查看答案与解析
正确答案B
完整验收必须同时覆盖规则、边界和生产证据:实现遵守“IHostApplicationLifetime 提供停止相关令牌,组件可在关闭阶段停止接收工作并执行有限清理”,部署环境满足“关闭窗口有超时,不能把无限任务放进停止回调”,并能在“发布时旧实例长时间无法退出”出现时定位和回退。其余方案分别依赖错误假设、遗漏环境验证或只检查边界却保留错误实现,均不能证明改动在生产环境中安全。
085 关于StopAsync,哪一项准确描述了应依赖的平台契约?
难度: 基础
- A. BackgroundService.StopAsync 应响应取消并等待 ExecuteAsync 的受控结束
- B. 继承 BackgroundService 后循环会自动观察所有取消令牌
- C. 若循环忽略取消或阻塞,同步关闭仍可能超时并被外部终止
- D. 只要观察到“容器终止时任务处理中断”,就能把这次现象视为所有环境中的固定行为。
查看答案与解析
正确答案A
正确项给出了StopAsync可直接依赖的规则:“BackgroundService.StopAsync 应响应取消并等待 ExecuteAsync 的受控结束”。“若循环忽略取消或阻塞,同步关闭仍可能超时并被外部终止”是应用规则前必须确认的边界,不是规则本身;“继承 BackgroundService 后循环会自动观察所有取消令牌”则把常见现象或实现细节扩大成了平台保证。场景“容器终止时任务处理中断”只能作为排查线索,仍需结合目标框架、发布方式和运行时证据验证。
086 生产环境出现“容器终止时任务处理中断”时,针对StopAsync应如何排查?
难度: 进阶
- A. 直接采用“继承 BackgroundService 后循环会自动观察所有取消令牌”解释现象,不再收集目标进程和发布配置证据。
- B. 只增加机器资源或重启进程,以一次恢复结果代替对“若循环忽略取消或阻塞,同步关闭仍可能超时并被外部终止”的验证。
- C. 只检查代码是否能够编译,通过后便认定“BackgroundService.StopAsync 应响应取消并等待 ExecuteAsync 的受控结束”在当前部署中必然成立。
- D. 先验证“若循环忽略取消或阻塞,同步关闭仍可能超时并被外部终止”,再使用运行时指标、日志或最小复现检查“BackgroundService.StopAsync 应响应取消并等待 ExecuteAsync 的受控结束”是否成立。
查看答案与解析
正确答案D
“容器终止时任务处理中断”可能由多条路径造成,不能直接证明根因。合理顺序是先确认边界“若循环忽略取消或阻塞,同步关闭仍可能超时并被外部终止”,再以“BackgroundService.StopAsync 应响应取消并等待 ExecuteAsync 的受控结束”组织证据。采用误区“继承 BackgroundService 后循环会自动观察所有取消令牌”、盲目扩容或只看编译结果,都跳过了运行配置与真实调用路径,无法形成可复核的诊断结论。
087 评审StopAsync相关实现时,以下哪项判断不成立?
难度: 实战
- A. BackgroundService.StopAsync 应响应取消并等待 ExecuteAsync 的受控结束
- B. 若循环忽略取消或阻塞,同步关闭仍可能超时并被外部终止
- C. 继承 BackgroundService 后循环会自动观察所有取消令牌
- D. 遇到“容器终止时任务处理中断”时,应把可观察证据与平台契约分开记录,再验证二者是否一致。
查看答案与解析
正确答案C
题目要求找出不成立的判断,“继承 BackgroundService 后循环会自动观察所有取消令牌”正是StopAsync的典型误区。主规则“BackgroundService.StopAsync 应响应取消并等待 ExecuteAsync 的受控结束”描述了实现应依赖的契约,边界“若循环忽略取消或阻塞,同步关闭仍可能超时并被外部终止”限制了结论的适用范围。生产场景还需要保留指标、日志、跟踪或转储等证据,不能因为一次成功或失败就反转稳定契约。
088 准备上线涉及StopAsync的改动时,哪项验收方案最完整?
难度: 实战
- A. 依据“继承 BackgroundService 后循环会自动观察所有取消令牌”完成修改,只要本地运行一次成功就立即发布。
- B. 依据“BackgroundService.StopAsync 应响应取消并等待 ExecuteAsync 的受控结束”实现,在“若循环忽略取消或阻塞,同步关闭仍可能超时并被外部终止”成立的环境中验证,并为“容器终止时任务处理中断”保留可观测证据和回退条件。
- C. 按照“BackgroundService.StopAsync 应响应取消并等待 ExecuteAsync 的受控结束”修改代码,但不核对“若循环忽略取消或阻塞,同步关闭仍可能超时并被外部终止”或目标发布模式。
- D. 只验证“若循环忽略取消或阻塞,同步关闭仍可能超时并被外部终止”,实现仍继续依赖“继承 BackgroundService 后循环会自动观察所有取消令牌”这一未经证明的假设。
查看答案与解析
正确答案B
完整验收必须同时覆盖规则、边界和生产证据:实现遵守“BackgroundService.StopAsync 应响应取消并等待 ExecuteAsync 的受控结束”,部署环境满足“若循环忽略取消或阻塞,同步关闭仍可能超时并被外部终止”,并能在“容器终止时任务处理中断”出现时定位和回退。其余方案分别依赖错误假设、遗漏环境验证或只检查边界却保留错误实现,均不能证明改动在生产环境中安全。
089 关于请求排空,哪一项准确描述了应依赖的平台契约?
难度: 基础
- A. 收到 SIGTERM 后 Kestrel 会让所有外部负载均衡器同步停止转发
- B. 应用就绪状态、终止信号与代理摘流存在竞态,需要联合配置
- C. 负载均衡器应先停止向实例发送新请求,再给予存量请求有限时间完成
- D. 只要观察到“滚动发布期间出现请求重置”,就能把这次现象视为所有环境中的固定行为。
查看答案与解析
正确答案C
正确项给出了请求排空可直接依赖的规则:“负载均衡器应先停止向实例发送新请求,再给予存量请求有限时间完成”。“应用就绪状态、终止信号与代理摘流存在竞态,需要联合配置”是应用规则前必须确认的边界,不是规则本身;“收到 SIGTERM 后 Kestrel 会让所有外部负载均衡器同步停止转发”则把常见现象或实现细节扩大成了平台保证。场景“滚动发布期间出现请求重置”只能作为排查线索,仍需结合目标框架、发布方式和运行时证据验证。
090 生产环境出现“滚动发布期间出现请求重置”时,针对请求排空应如何排查?
难度: 进阶
- A. 先验证“应用就绪状态、终止信号与代理摘流存在竞态,需要联合配置”,再使用运行时指标、日志或最小复现检查“负载均衡器应先停止向实例发送新请求,再给予存量请求有限时间完成”是否成立。
- B. 直接采用“收到 SIGTERM 后 Kestrel 会让所有外部负载均衡器同步停止转发”解释现象,不再收集目标进程和发布配置证据。
- C. 只增加机器资源或重启进程,以一次恢复结果代替对“应用就绪状态、终止信号与代理摘流存在竞态,需要联合配置”的验证。
- D. 只检查代码是否能够编译,通过后便认定“负载均衡器应先停止向实例发送新请求,再给予存量请求有限时间完成”在当前部署中必然成立。
查看答案与解析
正确答案A
“滚动发布期间出现请求重置”可能由多条路径造成,不能直接证明根因。合理顺序是先确认边界“应用就绪状态、终止信号与代理摘流存在竞态,需要联合配置”,再以“负载均衡器应先停止向实例发送新请求,再给予存量请求有限时间完成”组织证据。采用误区“收到 SIGTERM 后 Kestrel 会让所有外部负载均衡器同步停止转发”、盲目扩容或只看编译结果,都跳过了运行配置与真实调用路径,无法形成可复核的诊断结论。
091 评审请求排空相关实现时,以下哪项判断不成立?
难度: 实战
- A. 负载均衡器应先停止向实例发送新请求,再给予存量请求有限时间完成
- B. 收到 SIGTERM 后 Kestrel 会让所有外部负载均衡器同步停止转发
- C. 应用就绪状态、终止信号与代理摘流存在竞态,需要联合配置
- D. 遇到“滚动发布期间出现请求重置”时,应把可观察证据与平台契约分开记录,再验证二者是否一致。
查看答案与解析
正确答案B
题目要求找出不成立的判断,“收到 SIGTERM 后 Kestrel 会让所有外部负载均衡器同步停止转发”正是请求排空的典型误区。主规则“负载均衡器应先停止向实例发送新请求,再给予存量请求有限时间完成”描述了实现应依赖的契约,边界“应用就绪状态、终止信号与代理摘流存在竞态,需要联合配置”限制了结论的适用范围。生产场景还需要保留指标、日志、跟踪或转储等证据,不能因为一次成功或失败就反转稳定契约。
092 准备上线涉及请求排空的改动时,哪项验收方案最完整?
难度: 实战
- A. 依据“收到 SIGTERM 后 Kestrel 会让所有外部负载均衡器同步停止转发”完成修改,只要本地运行一次成功就立即发布。
- B. 按照“负载均衡器应先停止向实例发送新请求,再给予存量请求有限时间完成”修改代码,但不核对“应用就绪状态、终止信号与代理摘流存在竞态,需要联合配置”或目标发布模式。
- C. 只验证“应用就绪状态、终止信号与代理摘流存在竞态,需要联合配置”,实现仍继续依赖“收到 SIGTERM 后 Kestrel 会让所有外部负载均衡器同步停止转发”这一未经证明的假设。
- D. 依据“负载均衡器应先停止向实例发送新请求,再给予存量请求有限时间完成”实现,在“应用就绪状态、终止信号与代理摘流存在竞态,需要联合配置”成立的环境中验证,并为“滚动发布期间出现请求重置”保留可观测证据和回退条件。
查看答案与解析
正确答案D
完整验收必须同时覆盖规则、边界和生产证据:实现遵守“负载均衡器应先停止向实例发送新请求,再给予存量请求有限时间完成”,部署环境满足“应用就绪状态、终止信号与代理摘流存在竞态,需要联合配置”,并能在“滚动发布期间出现请求重置”出现时定位和回退。其余方案分别依赖错误假设、遗漏环境验证或只检查边界却保留错误实现,均不能证明改动在生产环境中安全。
093 关于关键后台工作,哪一项准确描述了应依赖的平台契约?
难度: 基础
- A. 注册到 HostedService 的任务就具备持久化和至少一次保证
- B. 优雅关闭只能降低丢失概率,无法抵御崩溃或机器故障
- C. 只要观察到“进程崩溃后内存队列任务消失”,就能把这次现象视为所有环境中的固定行为。
- D. 不能丢失的后台任务需要持久化队列、幂等消费和恢复机制,不能只依赖进程内 Task
查看答案与解析
正确答案D
正确项给出了关键后台工作可直接依赖的规则:“不能丢失的后台任务需要持久化队列、幂等消费和恢复机制,不能只依赖进程内 Task”。“优雅关闭只能降低丢失概率,无法抵御崩溃或机器故障”是应用规则前必须确认的边界,不是规则本身;“注册到 HostedService 的任务就具备持久化和至少一次保证”则把常见现象或实现细节扩大成了平台保证。场景“进程崩溃后内存队列任务消失”只能作为排查线索,仍需结合目标框架、发布方式和运行时证据验证。
094 生产环境出现“进程崩溃后内存队列任务消失”时,针对关键后台工作应如何排查?
难度: 进阶
- A. 先验证“优雅关闭只能降低丢失概率,无法抵御崩溃或机器故障”,再使用运行时指标、日志或最小复现检查“不能丢失的后台任务需要持久化队列、幂等消费和恢复机制,不能只依赖进程内 Task”是否成立。
- B. 直接采用“注册到 HostedService 的任务就具备持久化和至少一次保证”解释现象,不再收集目标进程和发布配置证据。
- C. 只增加机器资源或重启进程,以一次恢复结果代替对“优雅关闭只能降低丢失概率,无法抵御崩溃或机器故障”的验证。
- D. 只检查代码是否能够编译,通过后便认定“不能丢失的后台任务需要持久化队列、幂等消费和恢复机制,不能只依赖进程内 Task”在当前部署中必然成立。
查看答案与解析
正确答案A
“进程崩溃后内存队列任务消失”可能由多条路径造成,不能直接证明根因。合理顺序是先确认边界“优雅关闭只能降低丢失概率,无法抵御崩溃或机器故障”,再以“不能丢失的后台任务需要持久化队列、幂等消费和恢复机制,不能只依赖进程内 Task”组织证据。采用误区“注册到 HostedService 的任务就具备持久化和至少一次保证”、盲目扩容或只看编译结果,都跳过了运行配置与真实调用路径,无法形成可复核的诊断结论。
095 评审关键后台工作相关实现时,以下哪项判断不成立?
难度: 实战
- A. 不能丢失的后台任务需要持久化队列、幂等消费和恢复机制,不能只依赖进程内 Task
- B. 优雅关闭只能降低丢失概率,无法抵御崩溃或机器故障
- C. 注册到 HostedService 的任务就具备持久化和至少一次保证
- D. 遇到“进程崩溃后内存队列任务消失”时,应把可观察证据与平台契约分开记录,再验证二者是否一致。
查看答案与解析
正确答案C
题目要求找出不成立的判断,“注册到 HostedService 的任务就具备持久化和至少一次保证”正是关键后台工作的典型误区。主规则“不能丢失的后台任务需要持久化队列、幂等消费和恢复机制,不能只依赖进程内 Task”描述了实现应依赖的契约,边界“优雅关闭只能降低丢失概率,无法抵御崩溃或机器故障”限制了结论的适用范围。生产场景还需要保留指标、日志、跟踪或转储等证据,不能因为一次成功或失败就反转稳定契约。
096 准备上线涉及关键后台工作的改动时,哪项验收方案最完整?
难度: 实战
- A. 依据“注册到 HostedService 的任务就具备持久化和至少一次保证”完成修改,只要本地运行一次成功就立即发布。
- B. 依据“不能丢失的后台任务需要持久化队列、幂等消费和恢复机制,不能只依赖进程内 Task”实现,在“优雅关闭只能降低丢失概率,无法抵御崩溃或机器故障”成立的环境中验证,并为“进程崩溃后内存队列任务消失”保留可观测证据和回退条件。
- C. 按照“不能丢失的后台任务需要持久化队列、幂等消费和恢复机制,不能只依赖进程内 Task”修改代码,但不核对“优雅关闭只能降低丢失概率,无法抵御崩溃或机器故障”或目标发布模式。
- D. 只验证“优雅关闭只能降低丢失概率,无法抵御崩溃或机器故障”,实现仍继续依赖“注册到 HostedService 的任务就具备持久化和至少一次保证”这一未经证明的假设。
查看答案与解析
正确答案B
完整验收必须同时覆盖规则、边界和生产证据:实现遵守“不能丢失的后台任务需要持久化队列、幂等消费和恢复机制,不能只依赖进程内 Task”,部署环境满足“优雅关闭只能降低丢失概率,无法抵御崩溃或机器故障”,并能在“进程崩溃后内存队列任务消失”出现时定位和回退。其余方案分别依赖错误假设、遗漏环境验证或只检查边界却保留错误实现,均不能证明改动在生产环境中安全。
097 关于关闭超时,哪一项准确描述了应依赖的平台契约?
难度: 基础
- A. HostOptions.ShutdownTimeout 为托管关闭提供时间预算,延长它只改变等待窗口
- B. 无限增大 ShutdownTimeout 能保证任何外部调用最终成功
- C. 平台级终止宽限期还必须不小于应用需要的窗口
- D. 只要观察到“Kubernetes 在应用清理完成前强制结束”,就能把这次现象视为所有环境中的固定行为。
查看答案与解析
正确答案A
正确项给出了关闭超时可直接依赖的规则:“HostOptions.ShutdownTimeout 为托管关闭提供时间预算,延长它只改变等待窗口”。“平台级终止宽限期还必须不小于应用需要的窗口”是应用规则前必须确认的边界,不是规则本身;“无限增大 ShutdownTimeout 能保证任何外部调用最终成功”则把常见现象或实现细节扩大成了平台保证。场景“Kubernetes 在应用清理完成前强制结束”只能作为排查线索,仍需结合目标框架、发布方式和运行时证据验证。
098 生产环境出现“Kubernetes 在应用清理完成前强制结束”时,针对关闭超时应如何排查?
难度: 进阶
- A. 直接采用“无限增大 ShutdownTimeout 能保证任何外部调用最终成功”解释现象,不再收集目标进程和发布配置证据。
- B. 只增加机器资源或重启进程,以一次恢复结果代替对“平台级终止宽限期还必须不小于应用需要的窗口”的验证。
- C. 先验证“平台级终止宽限期还必须不小于应用需要的窗口”,再使用运行时指标、日志或最小复现检查“HostOptions.ShutdownTimeout 为托管关闭提供时间预算,延长它只改变等待窗口”是否成立。
- D. 只检查代码是否能够编译,通过后便认定“HostOptions.ShutdownTimeout 为托管关闭提供时间预算,延长它只改变等待窗口”在当前部署中必然成立。
查看答案与解析
正确答案C
“Kubernetes 在应用清理完成前强制结束”可能由多条路径造成,不能直接证明根因。合理顺序是先确认边界“平台级终止宽限期还必须不小于应用需要的窗口”,再以“HostOptions.ShutdownTimeout 为托管关闭提供时间预算,延长它只改变等待窗口”组织证据。采用误区“无限增大 ShutdownTimeout 能保证任何外部调用最终成功”、盲目扩容或只看编译结果,都跳过了运行配置与真实调用路径,无法形成可复核的诊断结论。
099 评审关闭超时相关实现时,以下哪项判断不成立?
难度: 实战
- A. HostOptions.ShutdownTimeout 为托管关闭提供时间预算,延长它只改变等待窗口
- B. 无限增大 ShutdownTimeout 能保证任何外部调用最终成功
- C. 平台级终止宽限期还必须不小于应用需要的窗口
- D. 遇到“Kubernetes 在应用清理完成前强制结束”时,应把可观察证据与平台契约分开记录,再验证二者是否一致。
查看答案与解析
正确答案B
题目要求找出不成立的判断,“无限增大 ShutdownTimeout 能保证任何外部调用最终成功”正是关闭超时的典型误区。主规则“HostOptions.ShutdownTimeout 为托管关闭提供时间预算,延长它只改变等待窗口”描述了实现应依赖的契约,边界“平台级终止宽限期还必须不小于应用需要的窗口”限制了结论的适用范围。生产场景还需要保留指标、日志、跟踪或转储等证据,不能因为一次成功或失败就反转稳定契约。
100 准备上线涉及关闭超时的改动时,哪项验收方案最完整?
难度: 实战
- A. 依据“无限增大 ShutdownTimeout 能保证任何外部调用最终成功”完成修改,只要本地运行一次成功就立即发布。
- B. 按照“HostOptions.ShutdownTimeout 为托管关闭提供时间预算,延长它只改变等待窗口”修改代码,但不核对“平台级终止宽限期还必须不小于应用需要的窗口”或目标发布模式。
- C. 只验证“平台级终止宽限期还必须不小于应用需要的窗口”,实现仍继续依赖“无限增大 ShutdownTimeout 能保证任何外部调用最终成功”这一未经证明的假设。
- D. 依据“HostOptions.ShutdownTimeout 为托管关闭提供时间预算,延长它只改变等待窗口”实现,在“平台级终止宽限期还必须不小于应用需要的窗口”成立的环境中验证,并为“Kubernetes 在应用清理完成前强制结束”保留可观测证据和回退条件。
查看答案与解析
正确答案D
完整验收必须同时覆盖规则、边界和生产证据:实现遵守“HostOptions.ShutdownTimeout 为托管关闭提供时间预算,延长它只改变等待窗口”,部署环境满足“平台级终止宽限期还必须不小于应用需要的窗口”,并能在“Kubernetes 在应用清理完成前强制结束”出现时定位和回退。其余方案分别依赖错误假设、遗漏环境验证或只检查边界却保留错误实现,均不能证明改动在生产环境中安全。