主题
并发
这些题与问题库里的是同一批,这里按各自主要考察的能力分组。
26 道问题
A · 专业解题与实现25
- 请实现一个重试封装:调用外部服务失败时按规则重试,同时不让重试压垮对方。先说明接口,再写代码,并说明怎样让它在测试里可确定地运行。
- 两个任务单独运行都正常,一起运行时偶尔会卡死。死锁需要满足哪些条件,你会怎样确认是不是它?
- 服务现在用多线程处理请求,同事建议改成多进程。你会从哪些方面比较两者,什么情况下你会反对?
- 两个事务同时修改同一批数据,可能出现哪些异常?不同的隔离级别分别防住了什么,又付出了什么代价?
- 异步任务启动后,调用方立刻修改了传入对象,偶发结果因此变化。你会如何判断这是共享可变状态、复制语义还是所有权问题?
- 在交易系统里,优惠券、满减和秒杀应该怎样接入,才不会拖慢核心交易流程?优惠怎样计算、叠加和对账?
- 两个线程通过一个标志位传递“数据已准备好”的信号。为什么仅把标志位声明为原子类型仍可能不足以保证数据可见?
- 消费者处理速度低于生产者,消息队列持续增长,但上游仍显示请求成功。你会怎样确定控制上游发送速度应作用在哪一层,并保护系统恢复能力?
- 多核程序中两个线程各自修改不同字段,性能却随核心数增加而下降。请解释缓存行共享可能怎样造成这种现象,以及代码层面如何验证。
- 一个列表页面滚动卡顿,但网络指标正常、内存也未明显增长。你会如何判断是主线程计算、布局/绘制还是锁等待导致?
- 请实现一个支持并发读写、按条目过期并可清理过期数据的映射。你会如何定义过期语义、同步边界和确定性测试?
- 实现一个小型任务队列,支持并发 worker、任务取消和失败重试;测试不能依赖真实 sleep。你会怎样设计调度接口和状态转换?
- 实现一个逐块接收 UTF-8 数据的增量日志解析器:输入块可能截断多字节字符、字段顺序变化,也可能包含多条记录或超长单行。请定义解析状态、错误恢复策略和内存上限,并实现可重复解析的核心逻辑。
- 设计一个供多个业务团队提交“在某个时间之后执行”的任务服务,任务可能被取消、改期或重复提交。你会怎样划分数据模型和执行组件?
- 一个关键完整流程测试偶尔失败,团队开始重跑直到通过。你会怎样确定它是否真实暴露产品风险,并改进测试流程?
- 一个请求启动了多个异步任务;客户端断开或请求超时后,部分下游工作仍占用线程和连接。你会怎样让取消信号传到相关任务,并释放资源?
- 一个多人协作工具需要展示成员在线状态和正在编辑的位置;短暂延迟可以接受,但离线成员不能长期显示为在线。你会怎样设计状态更新和过期机制?
- 一台机器开始频繁发生 major page fault,同时磁盘 I/O 升高。你会怎样判断工作集变化、内存压力和应用访问模式各自的作用?
- 服务部署到多路CPU机器后,线程在NUMA节点间迁移,内存访问延迟出现波动。你会如何结合CPU亲和性、内存分配和调度行为设计验证?
- 服务完成证书轮换后,短连接正常,但部分客户端在长连接断开后重新连接或恢复会话时握手失败。你会怎样区分证书链、会话恢复、连接池和客户端缓存的影响?
- 移动网络从Wi-Fi切换到蜂窝网络时,部分HTTP/3请求失败但会话仍显示在线。你会如何检查路径迁移、超时和中间网络设备的影响?
- 程序先写入数据文件再更新索引,但断电恢复后索引指向不完整内容。你会如何分析写入顺序、刷盘语义和恢复协议?
- 两个请求几乎同时检查某个业务对象不存在,然后都尝试创建,应用层的“先查再写”偶尔产生重复数据。你会从事务隔离、唯一约束和冲突处理说明如何保证业务不变量?
- 一个函数在多线程下看起来只读,但它调用的格式化库内部使用共享缓冲区,偶尔产生串扰。你会如何区分线程安全、可重入和无状态,并判断应在哪一层修复?
- 某个共享缓存读多写少,团队准备把互斥锁替换为读写锁。你会先收集什么证据,并如何判断复杂度是否值得?
当前目标在这里暂无匹配题。 ·