返回题库高级 .NET 刷题.NET 诊断与性能选择题 · 第 2 / 6 篇

.NET 诊断与性能试题 02:dotnet-counters 与运行时指标

021 关于一线健康检查,哪一项准确描述了应依赖的平台契约?

难度: 基础

  • A. 看到 CPU 高就能用 counters 精确指出哪一行代码有问题
  • B. 它主要给出聚合指标,通常不能直接定位到具体方法调用栈
  • C. dotnet-counters 适合实时观察运行时和应用计数器,快速判断 CPU、GC、线程池等方向
  • D. 只要观察到“线上延迟升高需要先判断资源方向”,就能把这次现象视为所有环境中的固定行为。
查看答案与解析

正确答案C

正确项给出了一线健康检查可直接依赖的规则:“dotnet-counters 适合实时观察运行时和应用计数器,快速判断 CPU、GC、线程池等方向”。“它主要给出聚合指标,通常不能直接定位到具体方法调用栈”是应用规则前必须确认的边界,不是规则本身;“看到 CPU 高就能用 counters 精确指出哪一行代码有问题”则把常见现象或实现细节扩大成了平台保证。场景“线上延迟升高需要先判断资源方向”只能作为排查线索,仍需结合目标框架、发布方式和运行时证据验证。

022 生产环境出现“线上延迟升高需要先判断资源方向”时,针对一线健康检查应如何排查?

难度: 进阶

  • A. 先验证“它主要给出聚合指标,通常不能直接定位到具体方法调用栈”,再使用运行时指标、日志或最小复现检查“dotnet-counters 适合实时观察运行时和应用计数器,快速判断 CPU、GC、线程池等方向”是否成立。
  • B. 直接采用“看到 CPU 高就能用 counters 精确指出哪一行代码有问题”解释现象,不再收集目标进程和发布配置证据。
  • C. 只增加机器资源或重启进程,以一次恢复结果代替对“它主要给出聚合指标,通常不能直接定位到具体方法调用栈”的验证。
  • D. 只检查代码是否能够编译,通过后便认定“dotnet-counters 适合实时观察运行时和应用计数器,快速判断 CPU、GC、线程池等方向”在当前部署中必然成立。
查看答案与解析

正确答案A

“线上延迟升高需要先判断资源方向”可能由多条路径造成,不能直接证明根因。合理顺序是先确认边界“它主要给出聚合指标,通常不能直接定位到具体方法调用栈”,再以“dotnet-counters 适合实时观察运行时和应用计数器,快速判断 CPU、GC、线程池等方向”组织证据。采用误区“看到 CPU 高就能用 counters 精确指出哪一行代码有问题”、盲目扩容或只看编译结果,都跳过了运行配置与真实调用路径,无法形成可复核的诊断结论。

023 评审一线健康检查相关实现时,以下哪项判断不成立?

难度: 实战

  • A. dotnet-counters 适合实时观察运行时和应用计数器,快速判断 CPU、GC、线程池等方向
  • B. 它主要给出聚合指标,通常不能直接定位到具体方法调用栈
  • C. 遇到“线上延迟升高需要先判断资源方向”时,应把可观察证据与平台契约分开记录,再验证二者是否一致。
  • D. 看到 CPU 高就能用 counters 精确指出哪一行代码有问题
查看答案与解析

正确答案D

题目要求找出不成立的判断,“看到 CPU 高就能用 counters 精确指出哪一行代码有问题”正是一线健康检查的典型误区。主规则“dotnet-counters 适合实时观察运行时和应用计数器,快速判断 CPU、GC、线程池等方向”描述了实现应依赖的契约,边界“它主要给出聚合指标,通常不能直接定位到具体方法调用栈”限制了结论的适用范围。生产场景还需要保留指标、日志、跟踪或转储等证据,不能因为一次成功或失败就反转稳定契约。

024 准备上线涉及一线健康检查的改动时,哪项验收方案最完整?

难度: 实战

  • A. 依据“看到 CPU 高就能用 counters 精确指出哪一行代码有问题”完成修改,只要本地运行一次成功就立即发布。
  • B. 依据“dotnet-counters 适合实时观察运行时和应用计数器,快速判断 CPU、GC、线程池等方向”实现,在“它主要给出聚合指标,通常不能直接定位到具体方法调用栈”成立的环境中验证,并为“线上延迟升高需要先判断资源方向”保留可观测证据和回退条件。
  • C. 按照“dotnet-counters 适合实时观察运行时和应用计数器,快速判断 CPU、GC、线程池等方向”修改代码,但不核对“它主要给出聚合指标,通常不能直接定位到具体方法调用栈”或目标发布模式。
  • D. 只验证“它主要给出聚合指标,通常不能直接定位到具体方法调用栈”,实现仍继续依赖“看到 CPU 高就能用 counters 精确指出哪一行代码有问题”这一未经证明的假设。
查看答案与解析

正确答案B

完整验收必须同时覆盖规则、边界和生产证据:实现遵守“dotnet-counters 适合实时观察运行时和应用计数器,快速判断 CPU、GC、线程池等方向”,部署环境满足“它主要给出聚合指标,通常不能直接定位到具体方法调用栈”,并能在“线上延迟升高需要先判断资源方向”出现时定位和回退。其余方案分别依赖错误假设、遗漏环境验证或只检查边界却保留错误实现,均不能证明改动在生产环境中安全。

025 关于分配率,哪一项准确描述了应依赖的平台契约?

难度: 基础

  • A. 堆大小稳定即可排除分配导致的性能问题
  • B. 短时间采样需结合请求量归一化,不能只比较绝对字节数
  • C. 只要观察到“内存稳定但 GC CPU 很高”,就能把这次现象视为所有环境中的固定行为。
  • D. 高分配率会增加 GC 工作量,即使托管堆当前大小没有持续增长也可能影响吞吐
查看答案与解析

正确答案D

正确项给出了分配率可直接依赖的规则:“高分配率会增加 GC 工作量,即使托管堆当前大小没有持续增长也可能影响吞吐”。“短时间采样需结合请求量归一化,不能只比较绝对字节数”是应用规则前必须确认的边界,不是规则本身;“堆大小稳定即可排除分配导致的性能问题”则把常见现象或实现细节扩大成了平台保证。场景“内存稳定但 GC CPU 很高”只能作为排查线索,仍需结合目标框架、发布方式和运行时证据验证。

026 生产环境出现“内存稳定但 GC CPU 很高”时,针对分配率应如何排查?

难度: 进阶

  • A. 直接采用“堆大小稳定即可排除分配导致的性能问题”解释现象,不再收集目标进程和发布配置证据。
  • B. 先验证“短时间采样需结合请求量归一化,不能只比较绝对字节数”,再使用运行时指标、日志或最小复现检查“高分配率会增加 GC 工作量,即使托管堆当前大小没有持续增长也可能影响吞吐”是否成立。
  • C. 只增加机器资源或重启进程,以一次恢复结果代替对“短时间采样需结合请求量归一化,不能只比较绝对字节数”的验证。
  • D. 只检查代码是否能够编译,通过后便认定“高分配率会增加 GC 工作量,即使托管堆当前大小没有持续增长也可能影响吞吐”在当前部署中必然成立。
查看答案与解析

正确答案B

“内存稳定但 GC CPU 很高”可能由多条路径造成,不能直接证明根因。合理顺序是先确认边界“短时间采样需结合请求量归一化,不能只比较绝对字节数”,再以“高分配率会增加 GC 工作量,即使托管堆当前大小没有持续增长也可能影响吞吐”组织证据。采用误区“堆大小稳定即可排除分配导致的性能问题”、盲目扩容或只看编译结果,都跳过了运行配置与真实调用路径,无法形成可复核的诊断结论。

027 评审分配率相关实现时,以下哪项判断不成立?

难度: 实战

  • A. 堆大小稳定即可排除分配导致的性能问题
  • B. 高分配率会增加 GC 工作量,即使托管堆当前大小没有持续增长也可能影响吞吐
  • C. 短时间采样需结合请求量归一化,不能只比较绝对字节数
  • D. 遇到“内存稳定但 GC CPU 很高”时,应把可观察证据与平台契约分开记录,再验证二者是否一致。
查看答案与解析

正确答案A

题目要求找出不成立的判断,“堆大小稳定即可排除分配导致的性能问题”正是分配率的典型误区。主规则“高分配率会增加 GC 工作量,即使托管堆当前大小没有持续增长也可能影响吞吐”描述了实现应依赖的契约,边界“短时间采样需结合请求量归一化,不能只比较绝对字节数”限制了结论的适用范围。生产场景还需要保留指标、日志、跟踪或转储等证据,不能因为一次成功或失败就反转稳定契约。

028 准备上线涉及分配率的改动时,哪项验收方案最完整?

难度: 实战

  • A. 依据“堆大小稳定即可排除分配导致的性能问题”完成修改,只要本地运行一次成功就立即发布。
  • B. 按照“高分配率会增加 GC 工作量,即使托管堆当前大小没有持续增长也可能影响吞吐”修改代码,但不核对“短时间采样需结合请求量归一化,不能只比较绝对字节数”或目标发布模式。
  • C. 依据“高分配率会增加 GC 工作量,即使托管堆当前大小没有持续增长也可能影响吞吐”实现,在“短时间采样需结合请求量归一化,不能只比较绝对字节数”成立的环境中验证,并为“内存稳定但 GC CPU 很高”保留可观测证据和回退条件。
  • D. 只验证“短时间采样需结合请求量归一化,不能只比较绝对字节数”,实现仍继续依赖“堆大小稳定即可排除分配导致的性能问题”这一未经证明的假设。
查看答案与解析

正确答案C

完整验收必须同时覆盖规则、边界和生产证据:实现遵守“高分配率会增加 GC 工作量,即使托管堆当前大小没有持续增长也可能影响吞吐”,部署环境满足“短时间采样需结合请求量归一化,不能只比较绝对字节数”,并能在“内存稳定但 GC CPU 很高”出现时定位和回退。其余方案分别依赖错误假设、遗漏环境验证或只检查边界却保留错误实现,均不能证明改动在生产环境中安全。

029 关于线程池队列,哪一项准确描述了应依赖的平台契约?

难度: 基础

  • A. 线程池队列长度与线程数、完成率和 CPU 组合可帮助识别阻塞或饥饿
  • B. 队列长度大于零就证明线程池发生故障
  • C. 短暂队列并不一定异常,需结合持续时间和尾延迟
  • D. 只要观察到“低 CPU 下队列持续增长”,就能把这次现象视为所有环境中的固定行为。
查看答案与解析

正确答案A

正确项给出了线程池队列可直接依赖的规则:“线程池队列长度与线程数、完成率和 CPU 组合可帮助识别阻塞或饥饿”。“短暂队列并不一定异常,需结合持续时间和尾延迟”是应用规则前必须确认的边界,不是规则本身;“队列长度大于零就证明线程池发生故障”则把常见现象或实现细节扩大成了平台保证。场景“低 CPU 下队列持续增长”只能作为排查线索,仍需结合目标框架、发布方式和运行时证据验证。

030 生产环境出现“低 CPU 下队列持续增长”时,针对线程池队列应如何排查?

难度: 进阶

  • A. 直接采用“队列长度大于零就证明线程池发生故障”解释现象,不再收集目标进程和发布配置证据。
  • B. 只增加机器资源或重启进程,以一次恢复结果代替对“短暂队列并不一定异常,需结合持续时间和尾延迟”的验证。
  • C. 先验证“短暂队列并不一定异常,需结合持续时间和尾延迟”,再使用运行时指标、日志或最小复现检查“线程池队列长度与线程数、完成率和 CPU 组合可帮助识别阻塞或饥饿”是否成立。
  • D. 只检查代码是否能够编译,通过后便认定“线程池队列长度与线程数、完成率和 CPU 组合可帮助识别阻塞或饥饿”在当前部署中必然成立。
查看答案与解析

正确答案C

“低 CPU 下队列持续增长”可能由多条路径造成,不能直接证明根因。合理顺序是先确认边界“短暂队列并不一定异常,需结合持续时间和尾延迟”,再以“线程池队列长度与线程数、完成率和 CPU 组合可帮助识别阻塞或饥饿”组织证据。采用误区“队列长度大于零就证明线程池发生故障”、盲目扩容或只看编译结果,都跳过了运行配置与真实调用路径,无法形成可复核的诊断结论。

031 评审线程池队列相关实现时,以下哪项判断不成立?

难度: 实战

  • A. 线程池队列长度与线程数、完成率和 CPU 组合可帮助识别阻塞或饥饿
  • B. 短暂队列并不一定异常,需结合持续时间和尾延迟
  • C. 遇到“低 CPU 下队列持续增长”时,应把可观察证据与平台契约分开记录,再验证二者是否一致。
  • D. 队列长度大于零就证明线程池发生故障
查看答案与解析

正确答案D

题目要求找出不成立的判断,“队列长度大于零就证明线程池发生故障”正是线程池队列的典型误区。主规则“线程池队列长度与线程数、完成率和 CPU 组合可帮助识别阻塞或饥饿”描述了实现应依赖的契约,边界“短暂队列并不一定异常,需结合持续时间和尾延迟”限制了结论的适用范围。生产场景还需要保留指标、日志、跟踪或转储等证据,不能因为一次成功或失败就反转稳定契约。

032 准备上线涉及线程池队列的改动时,哪项验收方案最完整?

难度: 实战

  • A. 依据“队列长度大于零就证明线程池发生故障”完成修改,只要本地运行一次成功就立即发布。
  • B. 依据“线程池队列长度与线程数、完成率和 CPU 组合可帮助识别阻塞或饥饿”实现,在“短暂队列并不一定异常,需结合持续时间和尾延迟”成立的环境中验证,并为“低 CPU 下队列持续增长”保留可观测证据和回退条件。
  • C. 按照“线程池队列长度与线程数、完成率和 CPU 组合可帮助识别阻塞或饥饿”修改代码,但不核对“短暂队列并不一定异常,需结合持续时间和尾延迟”或目标发布模式。
  • D. 只验证“短暂队列并不一定异常,需结合持续时间和尾延迟”,实现仍继续依赖“队列长度大于零就证明线程池发生故障”这一未经证明的假设。
查看答案与解析

正确答案B

完整验收必须同时覆盖规则、边界和生产证据:实现遵守“线程池队列长度与线程数、完成率和 CPU 组合可帮助识别阻塞或饥饿”,部署环境满足“短暂队列并不一定异常,需结合持续时间和尾延迟”,并能在“低 CPU 下队列持续增长”出现时定位和回退。其余方案分别依赖错误假设、遗漏环境验证或只检查边界却保留错误实现,均不能证明改动在生产环境中安全。

033 关于异常速率,哪一项准确描述了应依赖的平台契约?

难度: 基础

  • A. 接口返回成功就代表进程内部没有异常发生
  • B. 异常计数可发现被捕获后未进入错误日志的高频异常路径
  • C. 计数不区分业务严重程度,仍需 trace 或日志定位类型和栈
  • D. 只要观察到“吞吐下降但错误率面板正常”,就能把这次现象视为所有环境中的固定行为。
查看答案与解析

正确答案B

正确项给出了异常速率可直接依赖的规则:“异常计数可发现被捕获后未进入错误日志的高频异常路径”。“计数不区分业务严重程度,仍需 trace 或日志定位类型和栈”是应用规则前必须确认的边界,不是规则本身;“接口返回成功就代表进程内部没有异常发生”则把常见现象或实现细节扩大成了平台保证。场景“吞吐下降但错误率面板正常”只能作为排查线索,仍需结合目标框架、发布方式和运行时证据验证。

034 生产环境出现“吞吐下降但错误率面板正常”时,针对异常速率应如何排查?

难度: 进阶

  • A. 直接采用“接口返回成功就代表进程内部没有异常发生”解释现象,不再收集目标进程和发布配置证据。
  • B. 只增加机器资源或重启进程,以一次恢复结果代替对“计数不区分业务严重程度,仍需 trace 或日志定位类型和栈”的验证。
  • C. 只检查代码是否能够编译,通过后便认定“异常计数可发现被捕获后未进入错误日志的高频异常路径”在当前部署中必然成立。
  • D. 先验证“计数不区分业务严重程度,仍需 trace 或日志定位类型和栈”,再使用运行时指标、日志或最小复现检查“异常计数可发现被捕获后未进入错误日志的高频异常路径”是否成立。
查看答案与解析

正确答案D

“吞吐下降但错误率面板正常”可能由多条路径造成,不能直接证明根因。合理顺序是先确认边界“计数不区分业务严重程度,仍需 trace 或日志定位类型和栈”,再以“异常计数可发现被捕获后未进入错误日志的高频异常路径”组织证据。采用误区“接口返回成功就代表进程内部没有异常发生”、盲目扩容或只看编译结果,都跳过了运行配置与真实调用路径,无法形成可复核的诊断结论。

035 评审异常速率相关实现时,以下哪项判断不成立?

难度: 实战

  • A. 接口返回成功就代表进程内部没有异常发生
  • B. 异常计数可发现被捕获后未进入错误日志的高频异常路径
  • C. 计数不区分业务严重程度,仍需 trace 或日志定位类型和栈
  • D. 遇到“吞吐下降但错误率面板正常”时,应把可观察证据与平台契约分开记录,再验证二者是否一致。
查看答案与解析

正确答案A

题目要求找出不成立的判断,“接口返回成功就代表进程内部没有异常发生”正是异常速率的典型误区。主规则“异常计数可发现被捕获后未进入错误日志的高频异常路径”描述了实现应依赖的契约,边界“计数不区分业务严重程度,仍需 trace 或日志定位类型和栈”限制了结论的适用范围。生产场景还需要保留指标、日志、跟踪或转储等证据,不能因为一次成功或失败就反转稳定契约。

036 准备上线涉及异常速率的改动时,哪项验收方案最完整?

难度: 实战

  • A. 依据“接口返回成功就代表进程内部没有异常发生”完成修改,只要本地运行一次成功就立即发布。
  • B. 按照“异常计数可发现被捕获后未进入错误日志的高频异常路径”修改代码,但不核对“计数不区分业务严重程度,仍需 trace 或日志定位类型和栈”或目标发布模式。
  • C. 依据“异常计数可发现被捕获后未进入错误日志的高频异常路径”实现,在“计数不区分业务严重程度,仍需 trace 或日志定位类型和栈”成立的环境中验证,并为“吞吐下降但错误率面板正常”保留可观测证据和回退条件。
  • D. 只验证“计数不区分业务严重程度,仍需 trace 或日志定位类型和栈”,实现仍继续依赖“接口返回成功就代表进程内部没有异常发生”这一未经证明的假设。
查看答案与解析

正确答案C

完整验收必须同时覆盖规则、边界和生产证据:实现遵守“异常计数可发现被捕获后未进入错误日志的高频异常路径”,部署环境满足“计数不区分业务严重程度,仍需 trace 或日志定位类型和栈”,并能在“吞吐下降但错误率面板正常”出现时定位和回退。其余方案分别依赖错误假设、遗漏环境验证或只检查边界却保留错误实现,均不能证明改动在生产环境中安全。

037 关于EventCounter 与 Meter,哪一项准确描述了应依赖的平台契约?

难度: 基础

  • A. 给每个用户 ID 建标签不会带来任何存储或性能问题
  • B. 指标名称、单位、维度基数和聚合方式必须稳定设计
  • C. 现代 .NET 指标可通过 System.Diagnostics.Metrics 暴露,并由 OpenTelemetry 等监听导出
  • D. 只要观察到“监控后端因高基数标签膨胀”,就能把这次现象视为所有环境中的固定行为。
查看答案与解析

正确答案C

正确项给出了EventCounter 与 Meter可直接依赖的规则:“现代 .NET 指标可通过 System.Diagnostics.Metrics 暴露,并由 OpenTelemetry 等监听导出”。“指标名称、单位、维度基数和聚合方式必须稳定设计”是应用规则前必须确认的边界,不是规则本身;“给每个用户 ID 建标签不会带来任何存储或性能问题”则把常见现象或实现细节扩大成了平台保证。场景“监控后端因高基数标签膨胀”只能作为排查线索,仍需结合目标框架、发布方式和运行时证据验证。

038 生产环境出现“监控后端因高基数标签膨胀”时,针对EventCounter 与 Meter应如何排查?

难度: 进阶

  • A. 直接采用“给每个用户 ID 建标签不会带来任何存储或性能问题”解释现象,不再收集目标进程和发布配置证据。
  • B. 只增加机器资源或重启进程,以一次恢复结果代替对“指标名称、单位、维度基数和聚合方式必须稳定设计”的验证。
  • C. 只检查代码是否能够编译,通过后便认定“现代 .NET 指标可通过 System.Diagnostics.Metrics 暴露,并由 OpenTelemetry 等监听导出”在当前部署中必然成立。
  • D. 先验证“指标名称、单位、维度基数和聚合方式必须稳定设计”,再使用运行时指标、日志或最小复现检查“现代 .NET 指标可通过 System.Diagnostics.Metrics 暴露,并由 OpenTelemetry 等监听导出”是否成立。
查看答案与解析

正确答案D

“监控后端因高基数标签膨胀”可能由多条路径造成,不能直接证明根因。合理顺序是先确认边界“指标名称、单位、维度基数和聚合方式必须稳定设计”,再以“现代 .NET 指标可通过 System.Diagnostics.Metrics 暴露,并由 OpenTelemetry 等监听导出”组织证据。采用误区“给每个用户 ID 建标签不会带来任何存储或性能问题”、盲目扩容或只看编译结果,都跳过了运行配置与真实调用路径,无法形成可复核的诊断结论。

039 评审EventCounter 与 Meter相关实现时,以下哪项判断不成立?

难度: 实战

  • A. 现代 .NET 指标可通过 System.Diagnostics.Metrics 暴露,并由 OpenTelemetry 等监听导出
  • B. 给每个用户 ID 建标签不会带来任何存储或性能问题
  • C. 指标名称、单位、维度基数和聚合方式必须稳定设计
  • D. 遇到“监控后端因高基数标签膨胀”时,应把可观察证据与平台契约分开记录,再验证二者是否一致。
查看答案与解析

正确答案B

题目要求找出不成立的判断,“给每个用户 ID 建标签不会带来任何存储或性能问题”正是EventCounter 与 Meter的典型误区。主规则“现代 .NET 指标可通过 System.Diagnostics.Metrics 暴露,并由 OpenTelemetry 等监听导出”描述了实现应依赖的契约,边界“指标名称、单位、维度基数和聚合方式必须稳定设计”限制了结论的适用范围。生产场景还需要保留指标、日志、跟踪或转储等证据,不能因为一次成功或失败就反转稳定契约。

040 准备上线涉及EventCounter 与 Meter的改动时,哪项验收方案最完整?

难度: 实战

  • A. 依据“现代 .NET 指标可通过 System.Diagnostics.Metrics 暴露,并由 OpenTelemetry 等监听导出”实现,在“指标名称、单位、维度基数和聚合方式必须稳定设计”成立的环境中验证,并为“监控后端因高基数标签膨胀”保留可观测证据和回退条件。
  • B. 依据“给每个用户 ID 建标签不会带来任何存储或性能问题”完成修改,只要本地运行一次成功就立即发布。
  • C. 按照“现代 .NET 指标可通过 System.Diagnostics.Metrics 暴露,并由 OpenTelemetry 等监听导出”修改代码,但不核对“指标名称、单位、维度基数和聚合方式必须稳定设计”或目标发布模式。
  • D. 只验证“指标名称、单位、维度基数和聚合方式必须稳定设计”,实现仍继续依赖“给每个用户 ID 建标签不会带来任何存储或性能问题”这一未经证明的假设。
查看答案与解析

正确答案A

完整验收必须同时覆盖规则、边界和生产证据:实现遵守“现代 .NET 指标可通过 System.Diagnostics.Metrics 暴露,并由 OpenTelemetry 等监听导出”,部署环境满足“指标名称、单位、维度基数和聚合方式必须稳定设计”,并能在“监控后端因高基数标签膨胀”出现时定位和回退。其余方案分别依赖错误假设、遗漏环境验证或只检查边界却保留错误实现,均不能证明改动在生产环境中安全。

官方资料

当前分类

.NET 诊断与性能选择题

查看全部分类 →
  1. 01.NET 诊断与性能试题 01:BenchmarkDotNet 与基准测试陷阱20 题
  2. 02.NET 诊断与性能试题 02:dotnet-counters 与运行时指标20 题
  3. 03.NET 诊断与性能试题 03:dotnet-trace、EventPipe 与调用分析20 题
  4. 04.NET 诊断与性能试题 04:dotnet-dump 与崩溃转储分析20 题
  5. 05.NET 诊断与性能试题 05:dotnet-gcdump 与内存泄漏排查20 题
ESC

输入关键词开始搜索