# 1. JSON 中 true/false/null 字面量在 RFC 8259 中的定义? A null 是字符串 B 可以写成 True/False/Null C true/false/null 必须严格小写 ✓ 正确答案 D true 可以带引号
# 2. JSON 数字类型与 IEEE 754 双精度的可表示范围? A JSON 数字必须是整数 B JSON 数字必须用引号 C JSON 数字支持任意精度 D JSON 规范未规定精度,但实现通常用 IEEE 754 双精度,超过 2^53 的整数会丢失精度 ✓ 正确答案
# 3. 解释 JSON 字符串中 \uXXXX 转义序列与 UTF-8 字节序列的差异? A \uXXXX 和 UTF-8 完全相同 B \uXXXX 表示 UTF-16 码元,BMP 外字符需代理对;UTF-8 是字节编码 ✓ 正确答案 C \uXXXX 只能表示 ASCII D UTF-8 用 \uXXXX 表示
# 6. ARM64 一条典型 ADD 指令的位字段(Rd、Rn、Rm)含义? A Rd=x2,Rn=x0,Rm=x1 B Rd=x1,Rn=x2,Rm=x0 C Rd=x0,Rn=x1,Rm=x2 ✓ 正确答案 D 三者含义相同
# 7. CPU 取指-译码-执行三阶段流水线中每阶段的最小时钟周期为何受限于 L1 I-cache 命中延迟? A 译码最慢 B I-cache 是唯一瓶颈 C 流水线周期由最慢阶段决定,取指阶段需完成 I-cache 访问 ✓ 正确答案 D 执行阶段无需访问缓存
# 8. 为何 x86 CPU 把变长指令译码为微操作(μops)后再交给后端? A 变长复杂指令译成统一定长 μops,便于后端乱序调度与重命名 ✓ 正确答案 B 减少指令数量 C μops 比 CISC 指令快 D 省内存
# 9. 解释 MIPS R 型指令与 I 型指令的 32 位布局,opcode/funct 字段的位置如何? A 中间 6 位 B 最高 6 位 C 最低 6 位 ✓ 正确答案 D 不存在 funct
# 10. 解释 instruction cache 与 data cache 分离(哈佛结构)的初衷? A 节省面积 B 便于编译 C 取指与数据访问并行提供带宽,避免结构冲突,并针对各自访问特性优化 ✓ 正确答案 D 减少功耗
# 11. 解释复杂指令集(CISC)与精简指令集(RISC)在译码复杂度上的差异? A CISC 指令固定长度,译码简单 B CISC 指令变长、语义复杂,译码逻辑复杂;RISC 固定长度,译码简单 ✓ 正确答案 C RISC 指令变长,译码复杂 D 两者译码复杂度相同
# 12. 为何现代 CPU 倾向于 RISC-like 微操作执行而非直接执行 CISC 指令? A μops 更省电 B CISC 指令无法执行 C 统一执行、便于乱序调度,兼顾 CISC 兼容性与 RISC 高效 ✓ 正确答案 D μops 减少程序大小
# 14. x86-64 Microsoft ABI(Windows)与 System V ABI 在 ABI 传参规则上的差异? A rdi、rsi、rdx、rcx、r8、r9 ✓ 正确答案 B rcx、rdx、r8、r9、r10、r11 C rdi、rsi、rbx、rdx、r8、r9 D rsi、rdi、rdx、rcx、r8、r9
# 18. 给定 C 函数 int f(int a, int b, int c, int d, int e, int f, int g);其在 x86-64 SysV 下寄存器与栈分配? A 通过 r9 B 通过 rdx C 通过栈传递 ✓ 正确答案 D 不传递
# 21. 解释 MIPS O32 ABI 与 N64 ABI 在参数寄存器($a0-$a3)差异? A 参数寄存器更少 B 不支持浮点 C 64 位宽且参数寄存器增加到 $a0-$a7 ✓ 正确答案 D 参数全走栈
# 22. 在 System V AMD64 ABI 中,红区(128 字节)的使用限制是什么? A 红区可被任意函数安全使用 B 红区是 rsp 下方 128 字节,只对叶函数安全,且可能被信号处理破坏 ✓ 正确答案 C 红区在所有 ABI 都存在 D 红区必须显式对齐
# 25. 为何 ARM 在流水线早期把分支指令提前到 ID 阶段(branch folding)? A 提高数据缓存速度 B 消除 RAW 冒险 C 增加指令数 D 在流水线早期确定分支方向与目标,减少控制冒险 ✓ 正确答案
# 26. 为何 MIPS 设计为“编译期解决数据冒险”而 x86 设计为“硬件动态调度”? A x86 需兼容既有二进制,硬件动态调度保障兼容性;MIPS 面向可重编译的编译器生态 ✓ 正确答案 B MIPS 硬件更强 C MIPS 不支持流水线 D x86 编译器更弱
# 32. CBOR 与 MessagePack 的主要差异(自描述、长度不确定)? A 需要外部 schema B 遵循 RFC 标准、支持确定性编码与不定长度流,用于 COSE 等安全场景 ✓ 正确答案 C 不支持自描述 D 只支持整数
# 33. FlatBuffers vs Protobuf 在零拷贝读写上的本质差异 A 用内存映射文件 B 使用压缩 C 数据内存布局即序列化格式,读取时通过偏移量直接访问,无需反序列化 ✓ 正确答案 D 不序列化数据
# 34. MessagePack 的整数编码格式,fixint/uint 8/16/32/64 如何组织? A fixint(1 字节) ✓ 正确答案 B uint 16 C uint 32 D uint 64
# 37. 给定一段 x86 jmp rel8 跳转指令,手工计算相对偏移字节的取值范围? A 0 到 255 B -256 到 +255 C -128 到 +127 ✓ 正确答案 D -32768 到 +32767
# 40. 解释 frame pointer (rbp/fp) 与 stack pointer (rsp/sp) 在调试与异常中的角色? A 指向栈顶 B 提供稳定帧基准,通过 rbp 链回溯调用栈 ✓ 正确答案 C 存放返回值 D 指向全局变量
# 43. 解释控制冒险中的 branch delay slot 与 branch prediction 关系? A 完全相同 B 预测依赖 delay slot C delay slot 是静态编译期方案,prediction 是硬件动态预测方案,现代 CPU 用后者 ✓ 正确答案 D delay slot 是硬件方案