主题
编程语言
这些题与问题库里的是同一批,这里按各自主要考察的能力分组。
36 道问题
A · 专业解题与实现35
- 写代码时,你通常怎样处理空值、空字符串、越界和非法输入?说一次你因为没做前置校验,在测试或线上出了问题的经历,你从中改变了什么习惯?
- 实现一个很小的缓存,容量满时淘汰最久未使用的条目。各操作需要什么时间复杂度,你会先写哪些测试?
- 写代码和做代码评审时,你有哪些已经形成习惯的检查点,用来防止循环里查数据库、大对象长期不释放这类性能问题?你怎样知道它们真的有效?
- 请实现一个重试封装:调用外部服务失败时按规则重试,同时不让重试压垮对方。先说明接口,再写代码,并说明怎样让它在测试里可确定地运行。
- 需要校验一个很大的 CSV 文件,但不能把整份文件读入内存;遇到格式错误时还要报告行号并继续检查。你会怎样设计解析接口?
- 宏和代码生成经过多层展开后,编译错误只指向生成文件,使用者无法定位原始代码。你会怎样设计诊断信息?
- 增量编译很快,但改动共享头文件后偶尔没有重新编译所有依赖目标。你会怎样定位依赖追踪缺口?
- 编译器升级改变了结构体布局或调用约定,但部分插件仍按旧 ABI 构建。你会怎样管理兼容与迁移?
- 从你写下一行代码到 CPU 执行它,中间发生了什么?选一门你熟悉的语言,讲讲主要阶段。
- 复杂表单同时有字段校验、跨字段规则和服务端错误,用户编辑时状态彼此覆盖。你会怎样划分框架状态与业务状态?
- 异步任务启动后,调用方立刻修改了传入对象,偶发结果因此变化。你会如何判断这是共享可变状态、复制语义还是所有权问题?
- 两个看起来相同的用户名在系统里却被判断为不同,或两个不同写法被误认为相同。你会怎样分析 Unicode 规范化与身份比较?
- 两个线程通过一个标志位传递“数据已准备好”的信号。为什么仅把标志位声明为原子类型仍可能不足以保证数据可见?
- 请实现一个支持并发读写、按条目过期并可清理过期数据的映射。你会如何定义过期语义、同步边界和确定性测试?
- 实现一个深度相等函数,输入可能包含嵌套数组、共享引用和循环引用。请先定义相等语义,再说明如何避免无限递归与错误地混淆引用结构。
- 实现一个小型任务队列,支持并发 worker、任务取消和失败重试;测试不能依赖真实 sleep。你会怎样设计调度接口和状态转换?
- 实现一个逐块接收 UTF-8 数据的增量日志解析器:输入块可能截断多字节字符、字段顺序变化,也可能包含多条记录或超长单行。请定义解析状态、错误恢复策略和内存上限,并实现可重复解析的核心逻辑。
- 一个搜索框输入后界面短暂冻结,网络请求很快完成。你会如何用事件循环、任务队列和主线程占用解释现象,并确定长任务来源?
- 服务平均耗时稳定,但最慢 1% 的请求会周期性变慢,时间点与内存分配高峰接近。你会如何判断垃圾回收是否是原因,并区分其他暂停来源?
- 一个请求启动了多个异步任务;客户端断开或请求超时后,部分下游工作仍占用线程和连接。你会怎样让取消信号传到相关任务,并释放资源?
- 一组异步回调打印出的循环变量总是相同或与预期不同。请用你熟悉的一种语言解释变量绑定和闭包捕获,并给出可验证的修正方向。
- 编译器可能重排或消除代码。哪些程序行为允许优化器改变,哪些外部可观察行为必须保持?请用一个并发或 I/O 例子说明。
- 某对象重写了相等判断,却仍使用默认哈希实现,放入哈希集合后出现查找失败。请解释相等与哈希接口约定,并说明如何构造测试。
- 一个库的泛型信息在运行时不可直接获得,导致反射或序列化代码无法按预期工作。请解释类型擦除会影响哪些运行时行为,并说明替代设计。
- 给你一组可能大于内存容量的记录,需要分批处理并允许调用方取消任务。请说明或实现一个接口,使内存占用有界、错误可定位、取消后不再启动新批次。
- 多个调用方都在读取一份不断增加字段的配置文件,旧字段可能缺省,新版本还要支持未知扩展字段。你会如何设计解析接口,让默认值、校验错误和向后兼容行为可以被调用方理解?
- 输入是一组可能重叠、端点可相接的时间区间,调用方需要查询某个时刻对应哪些记录。请说明或实现归并与查询策略,并明确边界是否包含端点。
- 接口新增了一种状态,但旧客户端可能不认识该值;部分客户端必须继续展示记录,另一些关键操作则必须拒绝未知状态。你会如何设计解析和默认行为,避免未知值被误当成有效状态?
- 事件会以流的方式到达,少量重复可能间隔数小时;程序需限制内存,并在进程重启后继续保持去重效果。你会如何说明时间窗口、持久化状态和误判边界?
- 后端 API 同时生成 TypeScript、Java 和 Swift SDK,各语言的可空类型、枚举和错误模型逐渐不一致。你会如何设计接口约定源、生成流程和跨语言兼容测试?
- 模型已经向用户流式输出部分内容,随后连接中断或安全校验失败;客户端可能误以为答案完整。你会如何设计完成标记、撤回或补充提示和重试行为?
- 服务用浮点数累计金额,长期运行后对账差异逐渐扩大。你会怎样确定误差来源,并重构计算与迁移历史数据?
- 输入包含大量带时间戳的记录,要求返回分数最高的 K 项,分数相同时保留较早项。你会怎样实现并分析边界?
- 多个数据源各自按时间排序,但总量远大于内存。请说明如何合并输出,并处理单个数据源短暂变慢或断开的情况。
- 你要为异步函数增加重试与超时,最终失败时调用方仍需知道每次尝试的错误和是否已产生副作用(重复执行、越权等额外影响)。会如何设计返回值?
当前目标在这里暂无匹配题。 ·