记忆化前先算内存代价
编程与调试给递归加缓存之前,先算清子问题数量和单条记录占用
这个递归函数在 [输入范围] 下会被重复调用很多次,我打算加 [缓存结构] 做记忆化。请先估算不同输入下可能的子问题个数…
AI / 编程与调试
让它指出真问题,而不是复述常识
15 / 17
给递归加缓存之前,先算清子问题数量和单条记录占用
这个递归函数在 [输入范围] 下会被重复调用很多次,我打算加 [缓存结构] 做记忆化。请先估算不同输入下可能的子问题个数…
算出递归最多能撑多少层,再决定改迭代还是加深度限制
层级最多到 [层数] 的树形遍历目前用递归实现,层级来自 [数据来源],不由我们控制。请先估算默认栈大小下大概能撑多少层…
把两两比较的平方复杂度降下来,并确认结果集完全等价
对两个集合做两两比较,规模到 [数量] 就明显变慢。请判断这段 [业务场景] 的代码能否改成先排序再双指针,或改用哈希表…
找出让哈希查找从常数退化成线性的输入特征并加以防御
键是 [键类型],数据来自 [外部来源],存放在哈希表里。请分析什么输入特征会让大量键落进同一个桶,使查找退化成 O(n…
说明循环里累加字符串为什么变慢,并给出该语言的正确写法
这段 [语言] 代码在循环里用 += 拼接 [内容类型],长度到 [规模] 时明显变慢。请结合该语言字符串是否不可变,说…
用不变量把边界写对,避免死循环和差一错误,附三个必测输入
我要在 [数据结构] 上二分查找 [目标条件],返回第一个满足条件的位置。请先写出循环不变量:每轮开始时 [左界] 和…
把复杂度、常数、内存、实现成本放进一张表,按真实约束挑
场景是 [业务描述],数据规模 [规模],硬约束是 [延迟/内存约束],候选有 [算法A]、[算法B]、[算法C]。请输…
优惠、分摊、退款场景里列出会出错的具体数值,避免一分钱对不上
订单分摊用 [数据类型] 存金额,退款时出现过一分钱对不上。请列出至少 8 个容易出错的输入:0 元、负数、最小货币单位…
补数时区间开闭、重复补、跨月分片,任何一处没对齐都会双算
要给 [业务对象] 补 [时间范围] 的历史数据,来源是 [来源表],按天分片跑。请列出边界:区间左闭右开还是双闭、起始…
空串、全空格、通配符、超长词、无结果,这些输入最容易被忽略
商品搜索接收 [输入形式] 的关键词。请列出边界输入:空串、只有空格、纯标点、通配符与正则元字符、超长关键词、全角半角混…
从库存为零、只剩一件、超卖、回补四个方向逼出扣减漏洞
秒杀场景下这件商品库存为 [数量],接口部署在 [实例数] 个实例上同时接请求。请列出并发下会出错的边界:库存剩 1 时…
累加、负值、除零、类型转换,这些地方会在上限附近悄悄算错
积分系统用 [数据类型] 存积分,累计上限接近 [上限值]。请列出会出错的边界输入:刚好等于上限、再累加一次、扣成负数、…
把报销单所有不该发生的状态跳转列出来,逐条定清该报什么错
报销单有 [状态列表] 共几种状态,目前迁移校验散落在业务代码各处。请先画出允许的迁移矩阵,再列出全部非法迁移,比如已驳…
相等返回非零、不满足传递性、null 参与比较,逐个说明崩在哪
排序按 [排序字段] 比较,该字段可能为 null、可能相等、可能是 [特殊类型]。请检查四类问题:相等时没有返回 0、…
无角色、多角色、权限过期、跨部门,把这些组合逐个跑一遍
政务系统的权限模型是 [RBAC/ABAC],一个用户可同时属于 [部门/角色数量] 个范围。请列出至少 8 个边界组合…
挂号规则拆成可执行用例,标出每条覆盖哪句需求、哪里没覆盖
下面是 [需求文档] 里关于挂号规则的一段描述。请拆成测试用例表,列:编号、前置条件、操作步骤、期望结果、覆盖的需求原句…
五条只差输入输出的测试,改成一张表加一段断言,好维护也好读
下面这 [条数] 条测试结构完全一样,只有输入和期望值不同。请合并成一个参数化测试:给出数据表的列设计(输入、期望、说明…
按验证结果还是验证交互来区分四种替身,给出本场景的选择理由
被测代码依赖 [依赖类型,如支付网关/时钟/文件系统]。请判断该用哪种测试替身:只返回固定值的桩、要断言调用次数的 mo…
函数里混着取数和计算时,先拆出纯计算部分,测试难度立刻下降
这个函数同时做了 [外部依赖,如读库/调接口] 和业务计算,测试要准备一大堆数据。请指出哪一段是纯计算——只依赖入参、没…
把只判不为空、不抛异常的弱断言,换成能指出错在哪的具体断言
这几条测试的断言只有 [非空判断/不抛异常/状态码 200]。请逐条改成具体断言:期望的结构、关键字段的值、数量、顺序;…
拆开一条测了五件事的巨型测试,让失败信息直接指出坏在哪
这条测试有 [断言数量] 个断言,中间还有多次准备和清理。请判断它实际验证了几个独立行为,拆成多条测试,每条命名写清「条…
时间不够时先测什么,用故障影响乘以发生概率排出顺序
这次只有 [时间] 能做测试,模块包含 [功能列表]。请按风险排序:先估算每个功能故障的影响(资金损失、合规风险、用户可…
手写用例永远列不全输入组合,把不变量写成属性让工具去生成
要测的函数处理 [输入类型],手工用例只能覆盖十几种情况。请帮我提炼 3 条应该恒成立的属性,例如编码后能解码还原、排序…
不止修好这一处,从复盘里提炼同类风险的用例,防止换个入口再犯
这次故障是 [现象],根因是 [原因],发生在 [模块/接口]。请从复盘里提炼一组用例,而不是一条:直接触发故障的最小用…
逐个故意改坏实现,看测试是否变红,找出形同虚设的用例
下面有 [条数] 条测试和对应实现。请做一次有效性检查:对每处关键逻辑,设想一个看似合理但错误的改动,比如把大于改成大于…
实体有二十个必填字段时,用默认值加覆盖的方式构造,测试才读得懂
测试里要构造 [实体名],它有 [字段数] 个必填字段,而每条测试只关心其中一两个。请设计一个构造器:所有字段给合法默认…
判断哪些准备数据可以复用、哪些必须独立,避免测试之间相互污染
这组测试共用一份 [准备数据],单跑通过,全量跑偶发失败。请判断哪些数据只读可共享、哪些会被修改必须每条独立;给出隔离方…
把取时间变成可注入的时钟,让跨天、过期这类用例稳定复现
逻辑里直接用 [取时间方式] 读当前时间,判断 [是否过期/是否跨天]。请改成从注入的时钟获取时间,给出改造后的签名;再…
订单号、抽签结果由随机源生成时,用固定种子让失败可复现
订单号和抽签结果由 [随机源] 生成,测试时常出现本地过、CI 挂,失败后也复现不出来。请给出改造方案:把随机源作为依赖…
用生产样本做测试数据时,脱敏后仍要保留长度、格式和关联关系
准备用 [数据来源] 的生产样本做测试数据,其中含手机号、证件号、地址。请给出脱敏方案:哪些字段必须替换、怎么保持原格式…
两种隔离方式在速度、真实性、遗留数据上的差异,按场景选一种
集成测试要连 [数据库类型],目前每条测试前都清库重跑。请比较两种隔离方式:事务回滚快,但测不到提交后的行为,DDL 与…
用内存队列替身验证消费幂等、重试与死信,不必起真实中间件
消费者处理 [消息类型],成功后执行 [业务动作],失败会重试。请给出测试方案:用内存队列替身注入消息,验证正常消费、重…
验签失败、重复通知、乱序到达,这三种回调异常必须在测试里覆盖
系统接收 [支付渠道] 的异步回调,验签后更新订单状态。请设计用例:签名错误、签名正确但金额不符、同一笔重复通知三次、通…
一条测试里替身数量超过临界值,说明设计耦合,也验不出真问题
这条测试创建了 [替身数量] 个 mock,几乎把被测函数的所有依赖都替换掉了。请判断是否过度:哪些替身可以换成真实轻量…
区分宽而浅的自耗时与窄而深的调用链,判断该优化哪一层
这是一份用 [采集方式] 采到的火焰图,总采样 [时长]。请指出哪些宽条是自耗时——叶子处最宽的那些,哪些只是调用链经过…
用两个时间点的堆快照做差集,找出只增不减的对象和引用链
服务运行 [时长] 后内存从 [起始值] 涨到 [当前值],重启就能恢复。请给出排查步骤:在稳定运行的两个时间点各采一次…
在请求链路上分段打点,把总耗时拆成等待、计算、传输三部分
这个接口 P99 是 [耗时],但内部每一步看着都不慢。请设计分段计时方案:在 [分段点:入参校验、查询、序列化、下游调…
定清目标 QPS、并发模型和数据分布,找出吞吐不再上涨那个点
报名系统要做压测,业务目标是 [目标 QPS] 且 [延迟要求]。请给出方案:场景(读多写少比例、突发还是匀速)、数据分…
预热、多次采样、隔离干扰,别把噪声当成本次优化的收益
我要比较两种写法在 [语言] 里的性能差异。请给出基准测试方案:预热多少轮、每轮多少次迭代、取中位数还是最小值、如何排除…
从周期性、时长分布和堆曲线,区分 GC 停顿与其他卡顿
对账批处理服务每隔 [间隔] 出现一次 [时长] 的响应尖刺。请给出判断步骤:开启 GC 日志看停顿时间点是否与尖刺重合…
从交互延迟倒推主线程被谁占了,区分渲染、脚本与布局抖动
页面在 [操作] 时有 [时长] 的明显卡顿,投诉集中在 [设备档位]。请给出排查顺序:用性能面板录制这段交互,找出超过…
内存给多少、用哪种淘汰、淘汰抖动怎么避免,按访问分布定
要缓存 [数据描述],可用内存约 [容量],访问分布大致是 [长尾/集中]。请给出容量估算(条目数乘单条大小再加结构开销…
键里放哪些维度、要不要版本前缀、怎么防串数据,一次定清楚
要缓存 [数据描述],查询维度有 [维度列表],服务是多租户的。请设计缓存键规范:包含哪些维度、顺序如何固定、用什么分隔…
进程内缓存更新不及时,用失效广播还是短 TTL,按可接受延迟选
服务在进程内缓存 [数据],有效期 [时长],同时用 [共享缓存]。多实例部署后出现数据更新了、部分实例还返回旧值。请给…
上线或重启后缓存为空,定好预热范围和缓存不可用时的兜底行为
培训平台的服务重启后缓存全空,[关键接口] 会瞬间把数据库压垮。请给出预热方案:预热哪些键(访问量 Top N 还是全量…
在关键位置插延时放大交错窗口,让只在生产偶发的问题稳定复现
并发下偶尔出现 [现象:重复创建/计数偏小/覆盖写入],生产上 [频率] 才出现一次。请指出读—改—写之间被什么打断会产…
列出被多线程读写的字段,逐个判断加锁、改副本还是改设计
这个 [类/模块] 里的 [字段名] 会被 [调用方数量] 处读写,目前没有任何同步措施。请列出所有读写点及其执行线程,…
按临界区里哪些操作真的需要互斥,决定锁的范围与读写分离
这个 [类] 上的方法现在整段加锁,中间包含 [耗时操作,如远程调用、文件读写]。请标出真正需要互斥的语句,给出缩小锁范…
按冲突概率和重试成本选,别在写多场景里硬上版本号
场景是 [业务描述],同一行数据被并发修改的概率约 [冲突频率],冲突后重试的代价是 [代价]。请对比两种方案:乐观锁用…
业务超租期、续期失败、主从切换、误判持锁,四种失效都要防住
用 [实现方式] 做分布式锁保护 [资源],锁租期 [时长],而业务执行最长可能到 [最长时长]。请列出失效场景:执行超…
重试必然带来重复执行,先把副作用改成幂等再谈重试策略
这个异步任务负责 [业务动作,如发券/发通知/扣款],失败后会重试 [次数] 次。请指出哪些副作用重复执行会出问题,给出…
从现象出发每次砍掉一半可能性,把排查从猜变成收敛
问题是 [现象],可能涉及 [范围:多个模块、多次提交或多条数据路径]。请设计二分排查计划:第一步确认现象能否稳定复现;…
把「我觉得是它」写成可验证假设,逐条证实或排除,避免乱改
现象是 [描述],我的初步猜测是 [猜测]。请把它拆成 5 条可验证的假设,每条写清:支持它的证据、能证伪它的最小实验、…
去掉与现象无关的操作和字段,留下别人三十秒能照着走的那几步
目前的复现步骤有 [步数] 步,涉及 [数据条件]。请逐条判断哪些与现象无关:去掉某个操作后现象是否还在、输入缩到多小仍…
跳过框架帧,找出业务代码里真正的入口和最后一次正常状态
下面是 [报错内容] 的堆栈。请指出:最内层异常的真实抛出点在哪一行业务代码、中间哪些帧只是框架包装、调用是从哪个入口进…
按唯一键比对两侧记录,把差异分成缺失、重复、值不同再归因
物流系统与仓储系统的 [数据对象] 出现不一致,涉及 [量级] 条。请给出对账方法:用哪个键做匹配、如何分类差异(一方缺…
按超时值是否整齐、是否集中在某时段、是否与发布相关来分诊
接口偶发超时,超时值 [时长],频率 [频率],看不出规律。请给出分诊顺序:超时值是否高度整齐(指向固定超时配置)、是否…
把臃肿的镜像逐层瘦身,同时留住排查问题需要的东西
这是 [项目类型] 的 Dockerfile 和依赖清单,构建出的镜像约 [体积]。请:1)指出哪些层在重复搬运不必要的…
在体积、兼容性和可维护性之间给出基础镜像的推荐
服务使用 [语言/运行时],现在要选基础镜像。请对比 alpine、slim、distroless、官方完整版四类:1)…
让容器停机时把存量请求处理完,而不是被直接掐断
服务部署在 [K8s/Compose] 上,滚动更新时偶发 [502/请求中断]。请:1)说明 PID 1 与信号转发的…