A · 专业解题与实现
编码与抽象
把需求写成正确、可读、可演进的代码,并选择合适的抽象。
分类边界
收录: 收录编码实现、代码阅读、抽象设计与复杂度推理。
相邻分类判断: 诊断既有故障归调试;解释语言或算法原理归计算机基础。
这项能力可能会在不同阶段标准中以不同深度出现。 查看阶段要求
29 道问题
按需要了解的证据选择分组。分组依据现有题型,不代表难度或必经顺序。每批最多八题。
概念与边界2
先检视概念、假设和适用条件是否清楚。
判断与方案10
比较目标、约束、方案与取舍依据。
第 1–8 题
- 一个报名表单会因为重复提交和弱网重试出现状态不一致。你会怎样梳理它的状态与转换,并决定哪些逻辑抽成独立单元?
- 用户正在编辑内容时,App 被系统在后台回收。用户回来后,你怎样保证内容和页面状态不丢,又不会恢复出过期数据?
- 写代码和做代码评审时,你有哪些已经形成习惯的检查点,用来防止循环里查数据库、大对象长期不释放这类性能问题?你怎样知道它们真的有效?
- 框架允许界面在后台并发更新,但慢请求的旧结果偶尔覆盖新选择。你会怎样设计并发状态更新?
- 复杂表单同时有字段校验、跨字段规则和服务端错误,用户编辑时状态彼此覆盖。你会怎样划分框架状态与业务状态?
- 多个页面共用服务端数据,框架缓存减少请求,却在用户切换账号后暴露旧结果。你会怎样设计缓存键和失效边界?
- 第三方工具包的回调更新了数据,但界面没有刷新;手动触发刷新后又出现重复更新。你会怎样判断框架的刷新边界,并确定正确接入点?
- 一个列表项从记录 A 更新为记录 B 后,输入框仍保留 A 的草稿。你会如何解释组件身份、key 和状态复用之间的关系,并选择修复位置?
当前目标在这里暂无匹配题。 ·
实现与验证17
检视方案如何执行、验证和纠偏。
第 1–8 题
- 写代码时,你通常怎样处理空值、空字符串、越界和非法输入?说一次你因为没做前置校验,在测试或线上出了问题的经历,你从中改变了什么习惯?
- 实现一个很小的缓存,容量满时淘汰最久未使用的条目。各操作需要什么时间复杂度,你会先写哪些测试?
- 请实现一个重试封装:调用外部服务失败时按规则重试,同时不让重试压垮对方。先说明接口,再写代码,并说明怎样让它在测试里可确定地运行。
- 需要校验一个很大的 CSV 文件,但不能把整份文件读入内存;遇到格式错误时还要报告行号并继续检查。你会怎样设计解析接口?
- 请实现一个支持并发读写、按条目过期并可清理过期数据的映射。你会如何定义过期语义、同步边界和确定性测试?
- 实现一个深度相等函数,输入可能包含嵌套数组、共享引用和循环引用。请先定义相等语义,再说明如何避免无限递归与错误地混淆引用结构。
- 实现一个小型任务队列,支持并发 worker、任务取消和失败重试;测试不能依赖真实 sleep。你会怎样设计调度接口和状态转换?
- 实现一个逐块接收 UTF-8 数据的增量日志解析器:输入块可能截断多字节字符、字段顺序变化,也可能包含多条记录或超长单行。请定义解析状态、错误恢复策略和内存上限,并实现可重复解析的核心逻辑。
当前目标在这里暂无匹配题。 ·
第 9–16 题
- 请设计一个可复用的长列表虚拟化组件:滚动窗口只渲染可见项,但行内选择状态不能因回收和复用 DOM 而串到其他数据。你会怎样定义接口并测试?
- 给你一组可能大于内存容量的记录,需要分批处理并允许调用方取消任务。请说明或实现一个接口,使内存占用有界、错误可定位、取消后不再启动新批次。
- 多个调用方都在读取一份不断增加字段的配置文件,旧字段可能缺省,新版本还要支持未知扩展字段。你会如何设计解析接口,让默认值、校验错误和向后兼容行为可以被调用方理解?
- 输入是一组可能重叠、端点可相接的时间区间,调用方需要查询某个时刻对应哪些记录。请说明或实现归并与查询策略,并明确边界是否包含端点。
- 接口新增了一种状态,但旧客户端可能不认识该值;部分客户端必须继续展示记录,另一些关键操作则必须拒绝未知状态。你会如何设计解析和默认行为,避免未知值被误当成有效状态?
- 事件会以流的方式到达,少量重复可能间隔数小时;程序需限制内存,并在进程重启后继续保持去重效果。你会如何说明时间窗口、持久化状态和误判边界?
- 输入包含大量带时间戳的记录,要求返回分数最高的 K 项,分数相同时保留较早项。你会怎样实现并分析边界?
- 多个数据源各自按时间排序,但总量远大于内存。请说明如何合并输出,并处理单个数据源短暂变慢或断开的情况。
当前目标在这里暂无匹配题。 ·
第 17–17 题
当前目标在这项能力中暂无匹配题。 ·