A · 专业解题与实现
计算机基础
算法、操作系统、网络、数据库等原理,以及它们如何解释真实现象。
分类边界
收录: 收录解释算法、语言、操作系统、网络、数据库等底层原理的问题。
相邻分类判断: 若重点是把原理用于架构取舍,归入系统设计;若重点是写出代码,归入编码与抽象。
这项能力可能会在不同阶段标准中以不同深度出现。 查看阶段要求
45 道问题
按需要了解的证据选择分组。分组依据现有题型,不代表难度或必经顺序。每批最多八题。
概念与边界27
先检视概念、假设和适用条件是否清楚。
第 1–8 题
- 缓存能让读取变快,也可能让用户看到过期内容。你会怎样判断一份数据适不适合缓存,出错时又怎样发现?
- 两个任务单独运行都正常,一起运行时偶尔会卡死。死锁需要满足哪些条件,你会怎样确认是不是它?
- 页面空闲一段时间后,第一次请求明显比之后的请求慢。从网络层面看,可能有哪些原因,你会怎样区分它们?
- 一条查询的过滤列上已经建了索引,却仍然很慢。请讲讲索引查找是怎么工作的,以及哪些情况会让它帮不上忙。
- 一个长时间运行的进程内存持续增长,但没人能指出明显的泄漏。你怎样区分真正的泄漏、正常的缓存增长和内存碎片?
- 服务现在用多线程处理请求,同事建议改成多进程。你会从哪些方面比较两者,什么情况下你会反对?
- 一个图片很多的页面首屏打开很慢。你会怎样从现象一步步推回原因,并说明每种改进手段的代价?
- 从你写下一行代码到 CPU 执行它,中间发生了什么?选一门你熟悉的语言,讲讲主要阶段。
当前目标在这里暂无匹配题。 ·
第 9–16 题
- 两个事务同时修改同一批数据,可能出现哪些异常?不同的隔离级别分别防住了什么,又付出了什么代价?
- 异步任务启动后,调用方立刻修改了传入对象,偶发结果因此变化。你会如何判断这是共享可变状态、复制语义还是所有权问题?
- 一段视频从文件或网络到画面和声音播放出来,中间经历了哪些环节?解码、音画同步、卡顿和硬件加速分别怎样影响体验?
- 两个线程通过一个标志位传递“数据已准备好”的信号。为什么仅把标志位声明为原子类型仍可能不足以保证数据可见?
- 多核程序中两个线程各自修改不同字段,性能却随核心数增加而下降。请解释缓存行共享可能怎样造成这种现象,以及代码层面如何验证。
- 服务已经切到新地址,一些用户仍连着旧节点,不同网络的恢复时间也不同。你会怎样检查 DNS 缓存、客户端缓存和现有连接?
- 一个请求启动了多个异步任务;客户端断开或请求超时后,部分下游工作仍占用线程和连接。你会怎样让取消信号传到相关任务,并释放资源?
- 一组异步回调打印出的循环变量总是相同或与预期不同。请用你熟悉的一种语言解释变量绑定和闭包捕获,并给出可验证的修正方向。
当前目标在这里暂无匹配题。 ·
第 17–24 题
- 编译器可能重排或消除代码。哪些程序行为允许优化器改变,哪些外部可观察行为必须保持?请用一个并发或 I/O 例子说明。
- 某对象重写了相等判断,却仍使用默认哈希实现,放入哈希集合后出现查找失败。请解释相等与哈希接口约定,并说明如何构造测试。
- 一个库的泛型信息在运行时不可直接获得,导致反射或序列化代码无法按预期工作。请解释类型擦除会影响哪些运行时行为,并说明替代设计。
- 一台机器开始频繁发生 major page fault,同时磁盘 I/O 升高。你会怎样判断工作集变化、内存压力和应用访问模式各自的作用?
- 两个进程都访问地址 0x1000,为什么通常不会读写到同一块物理内存?请从地址转换和操作系统职责解释。
- 服务部署到多路CPU机器后,线程在NUMA节点间迁移,内存访问延迟出现波动。你会如何结合CPU亲和性、内存分配和调度行为设计验证?
- 服务完成证书轮换后,短连接正常,但部分客户端在长连接断开后重新连接或恢复会话时握手失败。你会怎样区分证书链、会话恢复、连接池和客户端缓存的影响?
- 移动网络从Wi-Fi切换到蜂窝网络时,部分HTTP/3请求失败但会话仍显示在线。你会如何检查路径迁移、超时和中间网络设备的影响?
当前目标在这里暂无匹配题。 ·
判断与方案14
比较目标、约束、方案与取舍依据。
第 1–8 题
- 宏和代码生成经过多层展开后,编译错误只指向生成文件,使用者无法定位原始代码。你会怎样设计诊断信息?
- 增量编译很快,但改动共享头文件后偶尔没有重新编译所有依赖目标。你会怎样定位依赖追踪缺口?
- 编译器升级改变了结构体布局或调用约定,但部分插件仍按旧 ABI 构建。你会怎样管理兼容与迁移?
- 新增索引后查询变快了,但写入延迟和存储增长明显恶化。你会怎样判断索引是否值得保留?
- 某存储服务从读多写少变成持续高写入,团队在 B 树和 LSM 路线间评估。你会根据哪些负载特征比较两者,并关注哪些读写放大代价?
- 一个服务把工作线程数从 16 提到 256 后,吞吐没有提升,CPU 使用率反而更高。你会怎样解释上下文切换可能造成的影响,并用什么证据验证?
- 一个搜索框输入后界面短暂冻结,网络请求很快完成。你会如何用事件循环、任务队列和主线程占用解释现象,并确定长任务来源?
- 滚动列表时帧率下降,Performance trace 中反复出现 layout。你会如何判断代码是否触发布局抖动,并说明读写 DOM 的顺序为何重要?
当前目标在这里暂无匹配题。 ·
第 9–14 题
- 服务平均耗时稳定,但最慢 1% 的请求会周期性变慢,时间点与内存分配高峰接近。你会如何判断垃圾回收是否是原因,并区分其他暂停来源?
- 某个共享缓存读多写少,团队准备把互斥锁替换为读写锁。你会先收集什么证据,并如何判断复杂度是否值得?
- 一笔跨数百万记录的迁移无法放进单个事务。业务要求用户不能看到半完成状态。你会如何设计分批写入、可见性和恢复?
- 服务用浮点数累计金额,长期运行后对账差异逐渐扩大。你会怎样确定误差来源,并重构计算与迁移历史数据?
- 实例的健康检查只验证进程存活,但用户请求因关键依赖超时而失败。若把依赖检查都加进探针,又可能导致全量摘除。你会如何设计?
- 多个区域独立接收同一请求,请求去重记录会在一段时间后过期,机器时钟可能偏差数秒。你会怎样确保临近过期时重试不会产生重复写入?
当前目标在这里暂无匹配题。 ·
实现与验证4
检视方案如何执行、验证和纠偏。
当前目标在这项能力中暂无匹配题。 ·