# 1. eBPF(extended BPF)的 verifier 与 JIT 编译 A verifier 只编译字节码 B verifier 静态校验程序安全,JIT 把字节码编译为原生指令 ✓ 正确答案 C JIT 负责安全检查 D eBPF 无需校验即可运行
# 2. TLS offload(kTLS)的"加密零拷贝" A kTLS 与性能无关 B kTLS 在用户态完成加密 C kTLS 增加拷贝次数 D kTLS 把 TLS 记录处理下沉到内核,利用零拷贝路径减少拷贝 ✓ 正确答案
# 3. eBPF map 的类型,包括 hash、array、lru、lpm_trie、ringbuf 与 bpf_map_type A lpm_trie 适合最长前缀匹配,ringbuf 适合按序事件流 ✓ 正确答案 B hash 只适合数组访问 C lru 用于无容量限制场景 D bpf_map_type 是单一类型
# 4. eBPF 的 helper 函数与"受限 C"子集 A helper 函数无白名单 B eBPF 可调用任意内核函数 C eBPF 允许无界循环 D eBPF 只能调用受限 helper 函数,且使用受限 C 子集保证可验证 ✓ 正确答案
# 5. eBPF 在 Cilium 中的应用,即 service mesh 数据平面 A Cilium 依赖 iptables 用户态代理 B Cilium 用 eBPF 实现内核数据平面,处理策略与负载均衡 ✓ 正确答案 C eBPF 数据平面拖慢网络 D Cilium 不使用 eBPF
# 6. eBPF 在 Katran 中的应用,即 L4 负载均衡 A Katran 不使用 eBPF B Katran 经完整网络栈处理 C Katran 无负载均衡能力 D Katran 用 XDP/eBPF 在驱动层实现高性能 L4 负载均衡 ✓ 正确答案
# 7. eBPF 的安全性,包括 bounded loops 与 pointer 校验 A eBPF 只允许有界循环,并对指针做严格校验保证安全 ✓ 正确答案 B eBPF 允许无限循环 C eBPF 允许任意指针运算 D verifier 不检查指针
# 8. AF_XDP(XDP socket)的零拷贝网络接收 A AF_XDP 让用户态直接访问接收帧,实现零拷贝收包 ✓ 正确答案 B AF_XDP 需拷贝到内核网络栈 C AF_XDP 与 XDP 无关 D AF_XDP 增加拷贝开销
# 9. XDP 的 native、offloaded、generic 三种模式 A native 模式在网卡驱动层处理,offloaded 卸载到网卡硬件,generic 用软件回退 ✓ 正确答案 B generic 模式性能最高 C offloaded 需要软件模拟 D 三种模式性能相同
# 10. XDP_DROP、XDP_PASS、XDP_TX、XDP_REDIRECT、XDP_ABORTED 的动作 A XDP_DROP 丢弃报文,XDP_PASS 放行进入内核栈,XDP_REDIRECT 重定向 ✓ 正确答案 B XDP_PASS 丢弃报文 C XDP_TX 重定向到其他网卡 D XDP_REDIRECT 丢弃报文
# 11. XDP(eXpress Data Path)的网卡驱动层钩子 A XDP 在协议栈处理之后执行 B XDP 钩子在网卡驱动收包早期、skb 分配前执行 ✓ 正确答案 C XDP 需要先分配 skb D XDP 钩子位于应用层
# 12. eBPF 程序类型,包括 XDP、tc、socket、kprobe、tracepoint、perf_event A kprobe 挂载网卡驱动 B XDP/tc 挂载网络路径,kprobe/tracepoint 用于内核追踪 ✓ 正确答案 C XDP 用于用户态追踪 D perf_event 用于网络转发
# 13. tc(traffic control)的 ingress/egress qdisc 与 clsact A clsact 无法挂载 eBPF B tc 只能处理出站流量 C clsact 是轻量分类器,可同时挂载 ingress/egress 的 eBPF 程序 ✓ 正确答案 D tc eBPF 在 skb 分配前执行
# 14. BPF skeleton 与 libbpf 的高级封装 A skeleton 需手动写加载代码 B BPF skeleton 自动封装加载与初始化流程,简化 eBPF 开发 ✓ 正确答案 C libbpf 不管理 map D skeleton 与 CO-RE 无关
# 15. XDP 与 AF_XDP 的吞吐边界 A AF_XDP 增加拷贝 B XDP 总是达到线速 C XDP 与 AF_XDP 结合可接近线速,但受硬件、核数与处理能力限制 ✓ 正确答案 D 吞吐与 CPU 无关
# 16. XDP 在驱动层、skb 分配之前处理报文,TC 在 skb 已构建后处理,两者在网卡加速路径上的位置与性能差异是什么? A XDP 能访问全部网络栈信息 B TC 在 skb 分配前处理 C XDP 在 skb 分配前处理,更快;TC 在 skb 构建后处理,更通用 ✓ 正确答案 D 两者性能相同
# 17. BCC 工具目录 bcc/tools 下的 biolatency、biosnoop、tcpconnect、execsnoop 等工具 A biolatency 统计块 I/O 延迟,tcpconnect 追踪 TCP 连接 ✓ 正确答案 B biolatency 追踪进程执行 C execsnoop 统计磁盘延迟 D BCC 工具无法用于诊断
# 18. eBPF 程序的"受限 C"编译,即 BCC(BPF Compiler Collection)的 LLVM IR 编译 A BCC 不用编译直接运行 B BCC 用 LLVM 把受限 C 编译为 eBPF 字节码 ✓ 正确答案 C LLVM 与 eBPF 无关 D BCC 只能写汇编
# 19. BCC 在故障诊断(off-CPU 分析)的应用 A offcputime 无法聚合栈 B off-CPU 分析只关注 CPU 占用 C offcputime 追踪线程不在 CPU 上的时间与栈,定位阻塞原因 ✓ 正确答案 D off-CPU 分析与锁无关
# 20. bpftrace 的"One-Liner"工具,如 biolatency、tcplife、naptime A biolatency 追踪 TCP 连接 B One-Liner 需编写完整脚本 C bpftrace One-Liner 用单行命令即可完成 eBPF 追踪 ✓ 正确答案 D One-Liner 无法快速诊断
# 21. bpftrace 的"单行命令"模式,如 bpftrace -e 'kprobe:tcp_connect { @start[tid] = nsecs; }' A 单行模式必须创建脚本文件 B bpftrace -e 单行模式用"探针 { 动作 }"语法执行追踪 ✓ 正确答案 C @start 是内置变量 D nsecs 是固定值
# 22. bpftrace 的内置变量,包括 pid、tid、cpu、comm、nsecs、kstack、ustack A pid 是进程 ID,tid 是线程 ID,kstack 是内核栈 ✓ 正确答案 B comm 是时间戳 C nsecs 是进程名 D ustack 是 CPU 编号
# 23. bpftrace 的聚合操作,包括 @count、@hist、@lquantize、@stats、@join A @join 计算平均值 B @count 输出直方图 C @lquantize 计数 D @hist 输出对数直方图,@stats 输出统计值与分布 ✓ 正确答案
# 24. bpftrace 在性能诊断(off-CPU、syscall latency)的实战 A bpftrace 用 kprobe 追踪 syscall 延迟并能聚合 off-CPU 时间 ✓ 正确答案 B bpftrace 无法追踪系统调用 C off-CPU 分析定位 CPU 热点 D bpftrace 只能统计 CPU 占用
# 25. perf lock 的锁争用分析 A perf lock 与锁无关 B perf lock 只统计 CPU 占用 C perf lock 无法追踪锁 D perf lock 统计锁争用次数与等待时间,定位高争用锁 ✓ 正确答案
# 26. perf mem 的内存访问采样与 TLB miss A perf mem 采样内存访问层级并分析 TLB miss ✓ 正确答案 B perf mem 只测 CPU 频率 C perf mem 无法分析缓存 D perf mem 与 TLB 无关
# 27. perf report 的符号解析(symbol resolution)与 --symfs 边界 A strip 不影响符号解析 B perf report 总能解析符号 C 符号解析与调试信息无关 D perf report 需符号表或调试信息解析符号,strip 后可用 --symfs 指定符号目录 ✓ 正确答案
# 28. perf script 的原始事件流输出与 Python 脚本扩展 A perf script 不支持脚本 B perf script 只能输出聚合报告 C perf script 输出原始事件流,并支持 Python 脚本扩展 ✓ 正确答案 D perf script 输出与 Python 无关
# 29. perf(Linux profiling tools)的 record、report、stat、script、top、lock、kmem 等子命令 A perf record 只输出报告 B perf record 采样,report 分析结果,stat 统计计数事件 ✓ 正确答案 C perf lock 分析 CPU 热点 D perf top 是静态报告
# 30. perf c2c 的 cache-to-cache(false sharing)分析 A perf c2c 检测 cache-to-cache 传输,定位 false sharing ✓ 正确答案 B perf c2c 只测 CPU 频率 C perf c2c 无法检测伪共享 D perf c2c 与缓存行无关
# 31. ftrace 的"trigger",包括 hist、snapshot、stacktrace、offcpu A trigger 需重编译内核 B trigger 只能记录日志 C hist 无法聚合 D ftrace trigger 的 hist 生成直方图,snapshot 保存快照 ✓ 正确答案
# 32. BCC 工具的 USDT(User Statically-Defined Tracing)静态用户态探针 A USDT 需修改应用代码才能追踪 B USDT 是应用预埋的静态探针,BCC 可稳定追踪用户态事件 ✓ 正确答案 C USDT 只能用于内核 D USDT 不稳定
# 33. BCC 工具通过 kprobe 实现动态内核函数插桩 A kprobe 需重编译内核 B kprobe 可动态插桩内核函数入口,无需重编译内核 ✓ 正确答案 C kprobe 只能追踪用户态 D kprobe 无法追踪返回值
# 34. BCC 工具通过 tracepoint 采集静态内核事件 A tracepoint 需重编译内核 B tracepoint 依赖内核内部符号 C tracepoint 是内核预定义的静态追踪点,接口稳定 ✓ 正确答案 D tracepoint 不稳定
# 35. BCC 工具的 uprobes 用户态函数插桩 A uprobe 动态插桩用户态函数,无需修改应用源码 ✓ 正确答案 B uprobe 只能追踪内核函数 C uprobe 需修改源码 D uprobe 无开销
# 36. BCC 工具的"BPF map 输出",包括 hash、histogram、stack A histogram 存储键值 B BCC 在用户态聚合所有数据 C BCC 用 BPF map 在内核聚合数据、用户态读取展示 ✓ 正确答案 D stack 存储直方图
# 37. BCC 的 Python/C++ 双前端中 BPF prog 与 perf event 的协同 A BCC 只有 Python 前端 B BCC 提供 Python/C++ 前端,加载 BPF prog 并经 perf event 获取数据 ✓ 正确答案 C BPF prog 在用户态采集 D perf event 与 BCC 无关
# 38. BCC 的 bpf_trace_printk、bpf_get_current_pid_tgid、bpf_probe_read A bpf_probe_read 直接解引用任意指针 B bpf_trace_printk 返回 pid C bpf_get_current_pid_tgid 用于打印 D bpf_probe_read 用于安全读取内存,bpf_trace_printk 用于打印日志 ✓ 正确答案
# 39. BCC 的 bpftrace 兼容语法与工具迁移 A bpftrace 用抽象简化 eBPF 追踪,与 BCC 工具功能等价 ✓ 正确答案 B bpftrace 与 BCC 完全无关 C bpftrace 无法与 BCC 迁移 D bpftrace 比 BCC 更底层
# 40. BCC 工具的"性能开销"与生产环境适用性 A BCC 工具对生产无影响 B 所有探针开销相同 C kprobe 最适合生产 D tracepoint/USDT 开销较低,适合生产;kprobe/uprobe 热路径开销大 ✓ 正确答案
# 41. BCC 的 bpf_override_return 修改返回值的能力 A bpf_override_return 可修改任意函数 B bpf_override_return 可修改被探测内核函数的返回值,但限制严格 ✓ 正确答案 C bpf_override_return 无限制 D bpf_override_return 只能用于用户态
# 42. bpftrace 与 eBPF map 通过 @map[k] = v 进行交互 A bpftrace 不输出 map B bpftrace map 只能存单值 C @map 语法无法聚合 D bpftrace 用 @map[k] = v 聚合键值数据 ✓ 正确答案
# 43. bpftrace 的探针类型,包括 kprobe、kretprobe、uprobe、uretprobe、tracepoint、software、hardware A kprobe 追踪用户态函数 B kprobe/kretprobe 追踪内核函数,uprobe/uretprobe 追踪用户态函数 ✓ 正确答案 C hardware 探针追踪软件事件 D tracepoint 追踪硬件事件
# 44. bpftrace 的控制流,包括 if/else、for、while、switch A bpftrace 循环无界 B bpftrace 不支持任何控制流 C bpftrace 支持 if/else、for、while 等控制流实现复杂逻辑 ✓ 正确答案 D bpftrace 只能用顺序语句
# 45. bpftrace 的输出格式化,包括 printf、time、strftime A printf 格式化输出、strftime 把时间格式化为可读日期串 ✓ 正确答案 B strftime 输出原始数字 C printf 只能输出整数 D time 用于格式化日期
# 46. bpftrace 的"脚本模式"(-f file.bt)的可复用工具 A 脚本模式只支持单行 B bpftrace 脚本模式把探针写入文件,便于复用与维护 ✓ 正确答案 C 脚本无法共享 D 脚本模式不便于工具化
# 47. bpftrace 与 BCC 的等价性,bpftrace 如何抽象简化 A bpftrace 无法表达 BCC 的逻辑 B bpftrace 比 BCC 更底层 C bpftrace 与 BCC 功能完全不同 D bpftrace 与 BCC 底层等价,bpftrace 用抽象简化追踪 ✓ 正确答案
# 48. bpftrace 在安全检测(可疑 syscall)的应用 A bpftrace 可追踪 syscall 检测可疑行为,用于安全审计 ✓ 正确答案 B bpftrace 无法追踪 syscall C bpftrace 只用于性能 D bpftrace 无安全能力
# 49. bpftrace 的"安全限制",包括 bounded loops 与 cap 检查 A bpftrace 的 eBPF 程序受有界循环与权限检查限制,保证安全 ✓ 正确答案 B bpftrace 允许任意循环 C bpftrace 无需权限 D bpftrace 无安全限制
# 50. perf annotate 的指令级源码映射 A perf annotate 只显示函数名 B perf annotate 把采样映射到指令级,定位热点指令 ✓ 正确答案 C perf annotate 无法反汇编 D perf annotate 定位到进程级
# 51. perf record 的采样方式,周期采样(H/W)vs 事件采样(S/W) A 周期采样只针对上下文切换 B 事件采样适合 CPU 热点 C 周期采样适合 CPU 热点,事件采样针对特定事件归因 ✓ 正确答案 D 两种采样方式相同
# 52. perf probe 的动态探针添加 A perf probe 需重编译内核 B perf probe 动态添加探针生成自定义事件,无需重编译内核 ✓ 正确答案 C perf probe 只能添加静态事件 D perf probe 无法追踪函数
# 53. perf 与 bpftrace 的协同,即 perf 提供硬件事件、bpftrace 提供探针 A 二者无法组合 B perf 与 bpftrace 功能重叠 C bpftrace 提供硬件事件 D perf 提供硬件事件、bpftrace 提供探针,二者互补形成完整分析链 ✓ 正确答案
# 54. perf 在容器内(cgroup-aware)的 events 边界 A cgroup 与 perf 无关 B perf 无法区分容器 C perf 采样总是跨容器 D perf 支持 cgroup 过滤,把采样限定在指定容器内 ✓ 正确答案
# 55. ftrace 的 filter(set_ftrace_filter)与 events 过滤 A filter 只用于输出 B filter 无法缩小范围 C events 不支持过滤 D set_ftrace_filter 限定追踪函数,events 支持按字段过滤 ✓ 正确答案
# 56. ftrace 的"events",即 sched、irq、timer、block、netfs 的子目录结构 A ftrace events 按子系统分类组织,如 sched、block、netfs ✓ 正确答案 B 所有事件集中在一个目录 C events 无法按子系统分类 D ftrace events 与 tracefs 无关
# 57. ftrace 的"function tracer"(function)与"function graph"(function_graph)模式 A function 模式记录调用图 B function_graph 记录调用关系图与嵌套深度,信息更丰富但开销更大 ✓ 正确答案 C function_graph 只记录入口 D 两种模式开销相同
# 58. ftrace 的"stack trace" 与 function_graph 的递归调用图 A stack trace 记录事件时的内核栈,function_graph 呈现递归调用树 ✓ 正确答案 B stack trace 呈现调用树 C function_graph 只记录单点 D 二者都不展示调用栈
# 59. ftrace 的"tracefs"(/sys/kernel/tracing)与 debugfs 历史 A ftrace 从 debugfs 迁移到专用 tracefs,权限与结构更安全规范 ✓ 正确答案 B ftrace 一直用 debugfs C tracefs 与 debugfs 相同 D tracefs 无法挂载
# 60. ftrace 的"tracer",包括 function、function_graph、irqsoff、preemptoff、wakeup、wakeup_rt A irqsoff 测量中断关闭延迟,wakeup_rt 测量实时任务唤醒延迟 ✓ 正确答案 B function 测量中断延迟 C irqsoff 追踪函数调用 D wakeup 只测量 CPU 占用
# 61. trace-cmd 的"录制-回放"模式,即 trace-cmd record / report A trace-cmd 只有录制功能 B trace-cmd record 录制数据,report 回放分析 ✓ 正确答案 C trace-cmd 无法回放 D trace-cmd 与 ftrace 无关
# 62. ftrace 的"trace_printk" 内核内嵌打印 A trace_printk 无法追踪 B trace_printk 输出到内核日志 C trace_printk 与 printk 相同 D trace_printk 输出到 ftrace 追踪缓冲区,便于内核调试 ✓ 正确答案
# 63. ftrace 在实时系统(PREEMPT_RT)的延迟测量 A 实时系统不用 ftrace B ftrace 无法测延迟 C ftrace 用延迟 tracer 测量中断/抢占/唤醒延迟,评估实时性 ✓ 正确答案 D ftrace 只测吞吐
# 64. ftrace 的"dynamic events"(dynamic_debug) A dynamic events 是静态的 B dynamic events 需重编译内核 C dynamic events 无法添加事件 D dynamic events 允许运行时动态添加/删除追踪事件 ✓ 正确答案
# 65. eBPF verifier 的基本校验流程涵盖寄存器状态、指针边界、内存访问范围与循环限制等哪些检查? A verifier 允许越界访问 B verifier 只检查循环 C verifier 不检查指针 D verifier 检查寄存器状态、指针边界、内存访问范围与循环有界性 ✓ 正确答案
# 66. eBPF 程序从编译、验证、JIT 到挂载执行的完整生命周期包含哪些步骤? A eBPF 不经过编译 B eBPF 无需验证即可执行 C JIT 发生在挂载之后 D eBPF 生命周期为编译、加载、验证、JIT、挂载、执行 ✓ 正确答案
# 67. ftrace ring buffer 的 per-CPU buffer 与 cross-CPU 同步的工程价值? A per-CPU buffer 与性能无关 B per-CPU buffer 增加锁竞争 C ring buffer 是单 CPU 共享 D per-CPU buffer 让写入免跨 CPU 锁,降低追踪开销 ✓ 正确答案
# 68. BPF ELF 的 BPF_PROG / BPF_MAP 在 libbpf CO-RE 的工程价值? A BPF ELF 的节标注程序与 map,libbpf 据此加载并支持 CO-RE ✓ 正确答案 B BPF ELF 无节结构 C libbpf 不解析 ELF D CO-RE 与 ELF 无关
# 69. ringbuf 相比 perf event buffer 在内存共享与多 CPU 事件有序性上做了哪些改进? A ringbuf 与 perf event buffer 相同 B ringbuf 需要额外拷贝 C ringbuf 无法保证有序 D ringbuf 支持共享内存读取并保证多 CPU 事件有序性 ✓ 正确答案
# 70. 如何用 eBPF 编写一个统计 TCP 重传或调度延迟分布的工具,数据如何从 map 暴露给用户态? A map 无法被用户态读取 B eBPF 无法统计分布 C 数据只能在内核显示 D eBPF 用 tracepoint 采集事件、map 聚合分布,用户态读取 map 输出 ✓ 正确答案
# 71. BTF(BPF Type Format)与 CO-RE(Compile Once – Run Everywhere)如何支撑 eBPF 程序跨内核版本可移植? A CO-RE 需为每个内核重编译 B CO-RE 硬编码结构偏移 C BTF 与可移植无关 D CO-RE 利用 BTF 在加载时重定位内核结构偏移,实现跨内核可移植 ✓ 正确答案
# 72. tracepoint 与 kprobe 在稳定性与开销上有何差异,为何生产可观测性更偏好 tracepoint 与 USDT? A kprobe 开销可预测 B kprobe 比 tracepoint 更稳定 C tracepoint 依赖内核内部符号 D tracepoint 稳定、开销可控,生产可观测性更偏好 tracepoint 与 USDT ✓ 正确答案
# 73. eBPF 如何在不修改应用的前提下实现 L4/L7 流量统计、延迟直方图与丢包定位等可观测性能力? A eBPF 无法观测流量 B eBPF 需修改应用埋点 C eBPF 内核探针在不修改应用时采集流量并聚合统计 ✓ 正确答案 D eBPF 可观测性需侵入应用
# 74. eBPF 辅助函数(helper)的调用约定与返回值语义是什么,为何不能随意调用任意内核函数? A 任意内核函数在 eBPF 中安全 B eBPF 可调用任意内核函数 C helper 返回值无定义 D helper 是经 verifier 审查的白名单函数,返回语义明确,任意内核函数不安全 ✓ 正确答案
# 75. BPF 程序的尾调用(tail call)如何突破指令数限制,又在什么场景下使用? A 尾调用只在单程序内循环 B 尾调用增加栈增长 C 尾调用无法分派逻辑 D bpf_tail_call 跳转到其他程序,突破单程序指令数限制 ✓ 正确答案
# 76. eBPF maps 的 HASH、ARRAY、RINGBUF、LRU_HASH、LPM_TRIE 等类型分别适合什么数据结构与查询模式? A ARRAY 适合前缀匹配 B RINGBUF 适合键值查找 C LPM_TRIE 适合最长前缀匹配,LRU_HASH 适合有容量限制的缓存 ✓ 正确答案 D HASH 适合按序事件流
# 77. 为何 eBPF 程序默认禁止无界循环与任意指针运算,verifier 的这些限制如何保证内核安全与活性? A 指针运算总是安全 B 无界循环不会影响内核 C 禁止无界循环保证活性,指针校验保证安全,防止越界 ✓ 正确答案 D verifier 不保证活性
# 78. eBPF 的 XDP、TC、kprobe、tracepoint、uprobe 等程序类型各自挂载在什么位置,适用场景如何区分? A XDP 挂用户态函数 B XDP 挂驱动收包层、tc 挂流量控制、kprobe 挂内核函数、uprobe 挂用户态函数 ✓ 正确答案 C uprobe 挂内核函数 D tracepoint 挂网卡驱动
# 79. XDP redirect 配合 AF_XDP 如何实现零拷贝收包,相比传统 socket 收包路径省去了哪些开销? A AF_XDP 无法零拷贝 B XDP 收包仍需拷贝到协议栈 C XDP_REDIRECT 到 AF_XDP 让用户态直接访问帧,省去 skb 分配与拷贝 ✓ 正确答案 D XDP 收包与 socket 相同
# 80. uprobe 挂载到用户态函数入口的开销来自哪里,为何在高频热路径上需谨慎使用? A uprobe 在热路径上无影响 B uprobe 开销极小 C uprobe 每次调用触发内核处理,热路径上开销显著,需谨慎 ✓ 正确答案 D uprobe 不触发内核
# 81. XDP 的"early hook"零拷贝在网卡到 socket buffer A XDP 只在 socket buffer 后处理 B XDP early hook 在协议栈后执行 C early hook 无法零拷贝 D XDP early hook 在收包早期处理帧,可零拷贝重定向到 AF_XDP ✓ 正确答案
# 82. ftrace 的"hist" 触发器,即基于事件的统计 A hist trigger 对事件字段聚合统计,生成直方图 ✓ 正确答案 B hist trigger 只能记录原始事件 C hist trigger 无法聚合 D hist trigger 需外部工具
# 83. 动态追踪(eBPF、bpftrace、BCC)与 perf、ftrace 的工具链分工 A perf 采样热点、bpftrace/BCC 动态追踪、ftrace 内核事件,分工互补 ✓ 正确答案 B 所有工具功能相同 C bpftrace 用于采样热点 D ftrace 用于动态追踪用户态
# 84. kernelshark 的 GUI 可视化与时间线分析 A kernelshark 无法可视化 B kernelshark 是文本工具 C kernelshark 用时间线 GUI 可视化 ftrace 追踪数据 ✓ 正确答案 D kernelshark 与 ftrace 无关
# 85. BPF CO-RE(Compile Once, Run Everywhere)通过 BTF 重定位 kernel struct 的工程价值? A CO-RE 需为每个内核重编译 B CO-RE 用 BTF 重定位使程序编译一次即可跨内核运行 ✓ 正确答案 C CO-RE 硬编码结构偏移 D CO-RE 与可移植性无关