# 1. WebAssembly 字节码(.wasm)的 MVP 指令集包含 br/if/memory/call 等哪些指令? A WASM 无控制流指令 B WASM 指令无类型检查 C WASM 指令集含结构化控制流(br/if)与类型化内存访问(load/store) ✓ 正确答案 D WASM 内存访问无验证
# 2. WASI Preview2 由 WASI 0.2(HTTP、Sockets、Storage、Filesystem、IO、Clocks、Random)的工程价值? A WASI 无法访问宿主能力 B WASI 与运行时无关 C WASI Preview2 提供标准化系统接口,保证跨运行时可移植 ✓ 正确答案 D WASI 只支持浏览器
# 3. ART .dex(Dalvik Executable)在 Android 5+ 的 dexopt / dex2oat AOT 编译的工程价值? A dex2oat 增加运行时开销 B ART 只解释不编译 C dex2oat 在安装时把 dex AOT 编译为本地代码,提升启动性能 ✓ 正确答案 D AOT 编译不经过 dex
# 4. Elf64_auxv 在程序加载器向程序传递 auxiliary vector 的工程价值? A auxv 需系统调用获取 B auxv 由加载器经栈传给程序,提供页面大小、VDSO 地址等启动信息 ✓ 正确答案 C auxv 只含函数名 D auxv 与启动无关
# 5. trace_pipe 通过 splice / read 的工程应用? A trace_pipe 只能一次性读取 B trace_pipe 支持流式读取,可经 splice 零拷贝消费追踪数据 ✓ 正确答案 C trace_pipe 不支持 splice D trace_pipe 与 ftrace 无关
# 6. Go binary 的 ELF section(.gosymtab、.gopclntab、.text 与 .data/.bss)的工程价值? A .gosymtab 存机器码 B .gopclntab 存储 PC 到行号映射,支撑 Go 回溯与采样 ✓ 正确答案 C .gopclntab 与运行时无关 D Go 无调试符号
# 7. Full RELRO(-z relro -z now)在 GOT 内存只读防止 GOT overwrite 攻击? A GOT 在 Full RELRO 下可写 B Full RELRO 保持 lazy binding C Full RELRO 用 -z now 立即绑定并置 GOT 只读,防止 GOT overwrite ✓ 正确答案 D RELRO 与 GOT 无关
# 8. PE / COFF 延迟绑定通过 Delay Import Descriptor(DIDT)的工程价值? A DIDT 增加启动开销 B DIDT 在启动时加载全部 DLL C DIDT 与延迟绑定无关 D DIDT 实现延迟导入,首次调用才加载 DLL,加快启动 ✓ 正确答案
# 9. Mach-O Universal / Fat binary 多架构(x86_64 + arm64)的工程价值? A Fat binary 单文件封装多架构,加载时按架构选择,简化分发 ✓ 正确答案 B Fat binary 只能支持单架构 C Fat binary 增加分发复杂度 D Fat binary 与架构无关
# 10. ELF symbol 类型(FUNC、OBJECT、NOTYPE、FILE 等)的工程价值? A FUNC 表示函数、OBJECT 表示数据对象、FILE 表示源文件符号 ✓ 正确答案 B FUNC 表示数据对象 C OBJECT 表示函数 D FILE 表示函数符号
# 11. 符号版本化(symbol versioning,.gnu.version)如何支撑同一库的多版本 ABI 共存? A 符号版本化只支持单版本 B .gnu.version 让符号关联版本,支持同一库多版本 ABI 共存 ✓ 正确答案 C .gnu.version 与 ABI 无关 D 符号版本化破坏兼容
# 12. WASM 验证器(verifier)相对 JVM 的边界检查? A WASM 验证器静态检查类型与内存访问,JVM verifier 也需运行时边界检查 ✓ 正确答案 B WASM 不做验证 C JVM 无需验证 D 两者验证方式完全相同
# 13. PE / COFF 在 Windows PE 加载器(ntdll!LdrLoadDll)的延迟绑定? A LdrLoadDll 与加载无关 B Windows 启动时加载全部 DLL C Windows 加载器经 ntdll!_LdrLoadDll 加载 DLL,延迟绑定在首次调用时加载 ✓ 正确答案 D Windows 无延迟绑定
# 14. RELRO(Partial/Full)如何保护 GOT 免受覆写攻击,与 BIND_NOW 的关系是什么? A RELRO 与 GOT 无关 B Partial RELRO 使整个 GOT 只读 C BIND_NOW 保持 lazy binding D Full RELRO 依赖 BIND_NOW 使 GOT 全部只读,防止覆写 ✓ 正确答案
# 15. WASM Component Model(wasmtime、wasmCloud)的 WIT(WebAssembly Interface Types)的工程价值? A WIT 与跨语言无关 B WIT 定义组件接口,支持跨语言组件互操作与组合 ✓ 正确答案 C WIT 无法定义类型 D WIT 只用于单语言
# 16. WASM SIMD(WASM SIMD 128-bit)与 Threads、Reference Types 的扩展? A Reference Types 与引用无关 B SIMD 只用于标量 C Threads 不支持共享内存 D WASM SIMD 提供向量计算,Threads 引入共享内存与原子操作 ✓ 正确答案
# 17. WASM GC(WASM GC proposal)相对手动分配的工程价值? A WASM GC 强制手动分配 B WASM GC 提供自动垃圾回收,减少手动内存管理负担 ✓ 正确答案 C WASM GC 与对象无关 D WASM GC 不支持复杂类型
# 18. .class 的 attributes(Code、ConstantValue、LineNumberTable、LocalVariableTable)的工程价值? A Code 存局部变量名 B Code 存字节码,LineNumberTable 映射源码行号,支撑执行与调试 ✓ 正确答案 C LineNumberTable 存字节码 D ConstantValue 存方法字节码
# 19. .class 的 major.minor version(55/61/65 对应 Java 11/17/21)的工程价值? A 所有 JVM 接受所有 class 版本 B class 版本与 Java 无关 C class major 版本标识对应 Java 版本,JVM 据此判断兼容性 ✓ 正确答案 D major 版本只影响性能
# 20. JVM TI 在 JDWP(Java Debug Wire Protocol)debugger 的工程应用? A JVM TI 是调试协议 B JDWP 提供断点能力 C JVM TI 提供断点与事件能力,JDWP 传输调试命令,实现远程调试 ✓ 正确答案 D 调试与 JVM TI 无关
# 21. D8 dexer 与 R8 optimizer(tree shaking)的工程价值? A D8 转换 dex,R8 做 tree shaking 删除未用代码,减小体积 ✓ 正确答案 B D8 做 tree shaking C R8 只转换格式 D D8/R8 与优化无关
# 22. ART 的 JIT compiler(mterp)vs AOT 在安装包的工程边界? A AOT 提升运行性能但增大安装体积,JIT 按需编译减少安装开销 ✓ 正确答案 B AOT 减小安装体积 C JIT 在安装时预编译 D ART 只解释不编译
# 23. Go 1.17+ register-based ABI 在 stack frame 的工程边界? A register ABI 不改变栈帧 B Go 仍全栈传参 C Go register ABI 用寄存器传参减少栈帧操作,但保留参数溢出空间 ✓ 正确答案 D Go ABI 对外可变
# 24. Rust 通过 LLVM-CFI 与 KASAN / shadow call stack 的工程价值? A shadow call stack 检测内存 B CFI 检测内存越界 C KASAN 校验控制流 D LLVM-CFI 校验控制流、KASAN 检测内存越界、shadow call stack 保护返回地址 ✓ 正确答案
# 25. Mach-O 的 LC_MAIN 入口命令如何指定程序入口(entryoff 与 stacksize),相比 LC_UNIXTHREAD 有何演进? A LC_MAIN 与入口无关 B LC_MAIN 保存寄存器上下文 C LC_UNIXTHREAD 用 entryoff D LC_MAIN 用 entryoff 与 stacksize 声明入口与栈,比 LC_UNIXTHREAD 更简洁 ✓ 正确答案
# 26. .interp 在 rustc -C link-self-contained=no 的默认行为? A self-contained=no 会静态链接所有 B -C link-self-contained=no 让二进制依赖系统动态链接器,用 .interp 指定路径 ✓ 正确答案 C .interp 与链接器无关 D 该选项不影响 .interp
# 27. ELF 重定位项 R_X86_64_64、R_X86_64_PC32、R_X86_64_GLOB_DAT、R_X86_64_JUMP_SLOT 的含义与触发时机分别是什么? A R_X86_64_64 是 PC 相对 B R_X86_64_GLOB_DAT 设 GOT 表项为符号地址,JUMP_SLOT 处理函数跳转槽 ✓ 正确答案 C R_X86_64_PC32 是绝对地址 D JUMP_SLOT 处理数据
# 28. 静态链接与动态链接在体积、启动时间与 ABI 兼容性上的取舍如何影响发布策略? A 动态链接无 ABI 问题 B 静态链接体积最小 C 静态链接规避 ABI 兼容问题但体积大,动态链接体积小但依赖运行时兼容 ✓ 正确答案 D 静态链接启动最慢
# 29. buffer ring 在减少用户态/内核态 buffer 拷贝的工程边界? A buffer ring 无需管理缓冲 B buffer ring 无任何限制 C buffer ring 只增加拷贝 D buffer ring 减少拷贝,但需预先注册缓冲并管理生命周期 ✓ 正确答案
# 30. 为何同一份可观测性需求有时选 kprobe 有时选 tracepoint,稳定性与内核版本兼容性如何权衡? A 有 tracepoint 时优先选以保稳定,需追踪内部函数时用 kprobe 求灵活 ✓ 正确答案 B kprobe 比 tracepoint 稳定 C tracepoint 跨版本易变 D 两者无差异
# 31. ring buffer 在 latency-critical tracepoint 的丢失边界? A 延迟场景不会丢失 B ring buffer 永不丢失 C 丢失与容量无关 D ring buffer 容量有限,事件爆发超过消费速率时可能丢失 ✓ 正确答案
# 32. Rust nightly 的 -Z sanitize=cfi 与 cargo-cfi 的工程应用? A CFI 无运行时开销 B CFI 检测内存越界 C cargo-cfi 与 CFI 无关 D -Z sanitize=cfi 在间接调用处插入 CFI 校验,防控制流劫持 ✓ 正确答案
# 33. plt-bench 在 perf_event_open 与 lazy binding count 的工程价值? A plt-bench 与 PLT 无关 B plt-bench 经 perf_event 统计 lazy binding 开销,评估 PLT 性能 ✓ 正确答案 C plt-bench 无法统计绑定次数 D plt-bench 只测内存
# 34. .interp 段如何指定动态链接器路径,为什么 x86-64 上常见 /lib64/ld-linux-x86-64.so.2,路径选择与多发行版兼容性有何关系? A .interp 与兼容性无关 B .interp 保存程序入口 C 解释器路径通用 D .interp 保存动态链接器路径,硬编码路径影响跨发行版兼容 ✓ 正确答案
# 35. WASI Preview2 component model 集成 wit-bindgen 在 Rust、C、Go 的工程价值? A wit-bindgen 与接口无关 B wit-bindgen 只支持单语言 C wit-bindgen 按 WIT 生成多语言绑定,支持跨语言组件互操作 ✓ 正确答案 D wit-bindgen 无法生成绑定
# 36. WASI Preview2 在 wasmtime、wasmer、wasmCloud 的工程应用? A WASI 无法服务端运行 B WASI 只支持浏览器 C wasmCloud 与 WASI 无关 D wasmtime/wasmCloud 等基于 WASI 让 WASM 组件跨运行时部署 ✓ 正确答案
# 37. Java .class 常量池、access flags、this/super class、interfaces 在 javap 的工程价值? A 常量池存常量引用,access flags 记访问修饰符,javap 据此解析类 ✓ 正确答案 B 常量池存字节码 C access flags 存方法体 D interfaces 指定父类
# 38. .class 的 methods_count、fields_count 在 instrumentation 工具的工程价值? A instrumentation 不需遍历方法 B 计数字段与解析无关 C methods_count/fields_count 让工具定位方法表与字段表,支撑字节码改写 ✓ 正确答案 D 计数字段存字节码
# 39. JVM TI 允许 native agent 拦截 method entry / exception / monitor 的工程价值? A JVM TI 需修改字节码 B JVM TI 无法拦截异常 C JVM TI 可拦截 method entry/exception/monitor 事件,支撑观测与治理 ✓ 正确答案 D JVM TI 只能观测内存
# 40. JVM TI 在 JDK 9+ JVMTI ThreadLocalStorage 替代旧 JNI env 的工程价值? A JDK 9+ 无 TLS 接口 B ThreadLocalStorage 依赖 JNI env C JDK 9+ JVMTI ThreadLocalStorage 规范管理线程独立数据,替代旧 JNI env 方式 ✓ 正确答案 D ThreadLocalStorage 与线程无关
# 41. .dex 的 string_ids、type_ids、proto_ids、field_ids、method_ids 的数据结构的工程价值? A string_ids 存方法 B dex 内联所有引用 C dex 用 string/type/field/method 等 ID 表组织引用,紧凑高效 ✓ 正确答案 D method_ids 存字符串
# 42. Linux core dump 的 PT_NOTE 段保存 register 与 memory 的工程语义? A PT_NOTE 与调试无关 B PT_NOTE 只存代码 C PT_NOTE 段保存寄存器与进程信息,调试器据此重建崩溃现场 ✓ 正确答案 D PT_NOTE 存内存映射
# 43. core_pattern 在 /proc/sys/kernel/core_pattern 管道化 gdb server / systemd-coredump 的工程价值? A core_pattern 管道化把 core 交给 systemd-coredump 等自动收集存储 ✓ 正确答案 B core_pattern 只能写文件 C systemd-coredump 与 core 无关 D 管道化无法处理 core
# 44. coredump 中的 NT_PRSTATUS、NT_FPREGSET 等 note 类型分别保存什么寄存器状态,gdb 如何据此重建调用现场? A gdb 无法使用 note B NT_PRSTATUS 存浮点寄存器 C NT_FPREGSET 存通用寄存器 D NT_PRSTATUS 存通用寄存器、NT_FPREGSET 存浮点寄存器,gdb 据此重建现场 ✓ 正确答案
# 45. coredump 文件的 mmap memory vs 实存 memory 的工程取舍? A mmap 文件区总是转储 B 实存转储体积大但还原完整,mmap 文件区可不转储以减小体积 ✓ 正确答案 C 实存转储体积最小 D coredump 无体积取舍
# 46. systemd-coredump 对 core 文件的压缩、保留策略与 journalctl 检索如何配置,磁盘占用如何控制? A systemd-coredump 不控制磁盘 B systemd-coredump 无法压缩 C core 无法检索 D systemd-coredump 配置压缩与保留策略,core 摘要可经 journalctl 检索 ✓ 正确答案
# 47. vmlinux BTF 在 kernel 5.x 的官方发布? A vmlinux BTF 与 eBPF 无关 B 内核 5.x 官方嵌入 vmlinux BTF,支撑 CO-RE 跨内核可移植 ✓ 正确答案 C 内核不含 BTF D vmlinux BTF 只服务调试
# 48. Mach-O 的 LC_LOAD_DYLIB 与 LC_REEXPORT_DYLIB 在 dyld 解析的工程价值? A LC_LOAD_DYLIB 声明依赖库,LC_REEXPORT_DYLIB 再导出符号简化 API 面 ✓ 正确答案 B LC_LOAD_DYLIB 再导出符号 C LC_REEXPORT_DYLIB 声明依赖 D 两者与 dyld 无关
# 49. .symtab vs .dynsym 在 stripped 与 not-stripped 的工程差异? A strip 移除 .symtab 影响调试,但 .dynsym 保留保证运行 ✓ 正确答案 B strip 移除 .dynsym C .symtab 运行必需 D strip 后无法运行
# 50. .gnu.hash 在 GNU hash table 相对 sysv hash(.hash)的 O(N) lookup vs O(1) lookup 的工程价值? A .gnu.hash 最坏 O(N) B .gnu.hash 与 .hash 查找相同 C .gnu.hash 用更优哈希接近 O(1) 查找,加速符号解析 ✓ 正确答案 D .gnu.hash 拖慢链接
# 51. .gnu.hash 的 Bloom filter 加速 dynamic linker 解析的工程价值? A .gnu.hash 的 Bloom filter 快速排除不可能符号,加速解析 ✓ 正确答案 B Bloom filter 减慢解析 C Bloom filter 与查找无关 D .gnu.hash 无 Bloom filter
# 52. .interp 段保存 dynamic linker path(/lib64/ld-linux-x86-64.so.2)的工程价值? A .interp 保存程序入口 B .interp 保存动态链接器路径,内核据此加载解释器 ✓ 正确答案 C .interp 与动态链接无关 D .interp 存符号表
# 53. .fini_array 段在 atexit / destructor 的工程调用顺序? A .fini_array 与析构无关 B .fini_array 在启动时执行 C .fini_array 存退出时执行的函数指针,在进程退出时逆序调用 ✓ 正确答案 D .fini_array 存构造函数
# 54. .init_array 与 .preinit_array 在 dlopen 之前的执行顺序? A .init_array 先于 preinit B .preinit_array 在 dlopen 之前执行,先于 .init_array ✓ 正确答案 C preinit 在 dlopen 之后 D 两者顺序无关
# 55. .rela.dyn 与 .rela.plt 两类重定位节分别在何时被处理? A .rela.plt 启动时总是处理 B .rela.dyn 配合 lazy binding C .rela.dyn 启动时处理数据重定位,.rela.plt 配合 lazy binding 按需处理 ✓ 正确答案 D 两者处理时机相同