使用场景
校招准备
这些题与问题库里的是同一批,这里按各自主要考察的能力分组。
108 道问题
本页为第 1–50 题,共 108 题。
A · 专业解题与实现47
- 简历里写"用 AI 提升研发效率"信息量很低。你会怎样把它改写成别人能追问、能核验的一段经历?
- 让 AI 帮你审核一段配置,或生成一段代码,你怎样决定它能不能上线?
- 一份内部文档被撤回或改为限权后,检索索引、缓存和已生成的引用可能仍保留旧内容。你会怎样设计更新与验证机制?
- 写代码时,你通常怎样处理空值、空字符串、越界和非法输入?说一次你因为没做前置校验,在测试或线上出了问题的经历,你从中改变了什么习惯?
- 一个报名表单会因为重复提交和弱网重试出现状态不一致。你会怎样梳理它的状态与转换,并决定哪些逻辑抽成独立单元?
- 实现一个很小的缓存,容量满时淘汰最久未使用的条目。各操作需要什么时间复杂度,你会先写哪些测试?
- 用户正在编辑内容时,App 被系统在后台回收。用户回来后,你怎样保证内容和页面状态不丢,又不会恢复出过期数据?
- 你需要一个既能快速插入、快速查找,又能按顺序遍历的结构。你会如何在几种候选结构之间选择,又会放弃什么?
- 请实现一个重试封装:调用外部服务失败时按规则重试,同时不让重试压垮对方。先说明接口,再写代码,并说明怎样让它在测试里可确定地运行。
- 需要校验一个很大的 CSV 文件,但不能把整份文件读入内存;遇到格式错误时还要报告行号并继续检查。你会怎样设计解析接口?
- 两个任务单独运行都正常,一起运行时偶尔会卡死。死锁需要满足哪些条件,你会怎样确认是不是它?
- 页面空闲一段时间后,第一次请求明显比之后的请求慢。从网络层面看,可能有哪些原因,你会怎样区分它们?
- 一条查询的过滤列上已经建了索引,却仍然很慢。请讲讲索引查找是怎么工作的,以及哪些情况会让它帮不上忙。
- 一个长时间运行的进程内存持续增长,但没人能指出明显的泄漏。你怎样区分真正的泄漏、正常的缓存增长和内存碎片?
- 服务现在用多线程处理请求,同事建议改成多进程。你会从哪些方面比较两者,什么情况下你会反对?
- 一个图片很多的页面首屏打开很慢。你会怎样从现象一步步推回原因,并说明每种改进手段的代价?
- 从你写下一行代码到 CPU 执行它,中间发生了什么?选一门你熟悉的语言,讲讲主要阶段。
- 两个事务同时修改同一批数据,可能出现哪些异常?不同的隔离级别分别防住了什么,又付出了什么代价?
- 新增索引后查询变快了,但写入延迟和存储增长明显恶化。你会怎样判断索引是否值得保留?
- 服务把读请求切到副本后,写入成功的用户偶尔读不到刚才的修改。你会怎样界定并处理这种陈旧读取?
- 你的接口本地测试正常,联调时前端同学坚持说接口报错或没返回数据。你会用哪些手段去定位,又怎样拿出让对方信服的证据?
- 把一个很大的前端包拆成多个小包以后,首屏反而更慢了。你会怀疑哪些原因,怎样验证?
- 仓库允许外部贡献者提交代码,自动检查与构建流程会读取测试凭证并构建发布包。你会怎样检查流水线中的信任边界和凭证暴露风险?
- 异步任务启动后,调用方立刻修改了传入对象,偶发结果因此变化。你会如何判断这是共享可变状态、复制语义还是所有权问题?
- 两个看起来相同的用户名在系统里却被判断为不同,或两个不同写法被误认为相同。你会怎样分析 Unicode 规范化与身份比较?
- 一段视频从文件或网络到画面和声音播放出来,中间经历了哪些环节?解码、音画同步、卡顿和硬件加速分别怎样影响体验?
- 两个线程通过一个标志位传递“数据已准备好”的信号。为什么仅把标志位声明为原子类型仍可能不足以保证数据可见?
- 消费者处理速度低于生产者,消息队列持续增长,但上游仍显示请求成功。你会怎样确定控制上游发送速度应作用在哪一层,并保护系统恢复能力?
- API 延迟升高时数据库 CPU 很低,但应用日志出现等待连接。你会如何区分连接泄漏、池容量不足和慢事务占用?
- 支付创建接口需要支持安全重试。你会怎样定义防止重复扣款的请求标识,包括它的作用范围、保存期限和冲突处理规则?
- 订单写入数据库后需要发布事件给下游;进程可能在任一步骤崩溃。你会怎样设计持久化发布机制,并说明如何处理重复与顺序?
- 管理后台按创建时间翻页时,新增和删除会让用户看到重复或漏项。你会比较 offset 与游标分页,并定义何种一致性预期?
- 一个 API 部署在多个实例后,单机请求限制使总额度随实例数增加。你会根据突发容忍度、精度和故障策略设计请求速率限制,并说明状态放在哪里?
- 某存储服务从读多写少变成持续高写入,团队在 B 树和 LSM 路线间评估。你会根据哪些负载特征比较两者,并关注哪些读写放大代价?
- 多核程序中两个线程各自修改不同字段,性能却随核心数增加而下降。请解释缓存行共享可能怎样造成这种现象,以及代码层面如何验证。
- 客户端需要上传大文件,但系统可能随时暂停或终止后台任务。你会如何拆分任务、保存进度并保证重复调度不会破坏结果?
- 用户通过外部链接直接打开需要登录的订单详情页。你会怎样设计路由解析、登录回跳和权限校验,避免深链绕过应用内流程?
- 一个列表页面滚动卡顿,但网络指标正常、内存也未明显增长。你会如何判断是主线程计算、布局/绘制还是锁等待导致?
- 请实现一个支持并发读写、按条目过期并可清理过期数据的映射。你会如何定义过期语义、同步边界和确定性测试?
- 实现一个深度相等函数,输入可能包含嵌套数组、共享引用和循环引用。请先定义相等语义,再说明如何避免无限递归与错误地混淆引用结构。
- 实现一个小型任务队列,支持并发 worker、任务取消和失败重试;测试不能依赖真实 sleep。你会怎样设计调度接口和状态转换?
- 实现一个逐块接收 UTF-8 数据的增量日志解析器:输入块可能截断多字节字符、字段顺序变化,也可能包含多条记录或超长单行。请定义解析状态、错误恢复策略和内存上限,并实现可重复解析的核心逻辑。
- 一个服务把工作线程数从 16 提到 256 后,吞吐没有提升,CPU 使用率反而更高。你会怎样解释上下文切换可能造成的影响,并用什么证据验证?
- 对账任务发现同一业务对象的事件时间顺序偶尔倒置,日志又分布在多个区域。你会如何判断是时钟偏差、异步延迟还是业务排序规则的问题?
- 服务已经切到新地址,一些用户仍连着旧节点,不同网络的恢复时间也不同。你会怎样检查 DNS 缓存、客户端缓存和现有连接?
- 一个关键完整流程测试偶尔失败,团队开始重跑直到通过。你会怎样确定它是否真实暴露产品风险,并改进测试流程?
- 第三方工具包的回调更新了数据,但界面没有刷新;手动触发刷新后又出现重复更新。你会怎样判断框架的刷新边界,并确定正确接入点?
当前目标在这里暂无匹配题。 ·