百度测试面试题
本题清单
- 你对开发和测试怎么理解?测开做什么?
- 环形链表代码写完后,如何设计测试用例?
- 「投递简历」场景设计测试用例
- AI 助手版本更新快、文档滞后,怎么保障质量?
- 服务健康检查怎么测?实例挂了注册中心还在怎么办?
- 开发时遇到的最大问题如何解决?
- Linux 网络/进程排查常用命令
- 算法题后的测试思维加分项
- 设计「自动售货机」的测试用例
- SQL 注入怎么测?和 XSS 有何不同?
- 数据库死锁如何排查?测试如何复现?
- HTTP 和 RPC 在测试上有什么差异?
- 手撕「合并两个有序数组」后,如何补充测试用例?
- 你如何快速上手一个陌生业务模块的测试?
1. 你对开发和测试怎么理解?测开做什么?
参考答案:
开发关注「把功能做出来并可持续演进」;测试关注「风险是否可控、质量信号是否可信」。两者互补:没有测试的开发容易盲目自信,没有工程能力的测试难以在快速迭代里跟上。
测开在中间:既要懂业务测法,又能写自动化、工具甚至小平台,把重复劳动程序化,并把质量门禁嵌进流水线。不同部门开发/测试时间比例不同,面试里可反问团队现状,显示你务实。
2. 环形链表代码写完后,如何设计测试用例?
参考答案:
把程序当被测对象,列输入与期望:
| 用例 | 期望 |
|---|---|
| head=null | false |
| 单节点 next=null | false |
| 单节点自环 | true |
| 两节点成环 | true |
| 多节点无环 | false |
| 环入口在中间 | true |
| 很长的无环链 | false 且在时限内 |
再补:若接口抛异常的约定、并发修改链表(若适用)。体现你从实现者切换到验证者。
3. 「投递简历」场景设计测试用例
参考答案:
站在完整系统而不是只填表单:
- 功能:必填校验、附件格式大小、重复投递策略、草稿保存。
- 鉴权:未登录、Session 过期、越权改他人简历。
- 异常:全局异常处理、参数乱码、超大 Body。
- 依赖:邮箱/IM 通知失败是否影响主流程;MQ 延迟。
- 性能:开放日高并发投递。
- 韧性:下游挂掉熔断降级。
- 安全隐私:简历下载权限、脱敏。
- 弱网与中断:提交中杀进程是否产生脏数据/可重试。
4. AI 助手版本更新快、文档滞后,怎么保障质量?
参考答案:
- 锁版本:生产依赖钉死版本,升级走变更单。
- 契约回归:关键 API 的集成测试不依赖完整文档,依赖可运行示例与自建契约。
- 变更比对:读 release note,把 breaking change 变成用例。
- 双轨验证:新版本影子流量或平行调用对比。
- 文档治理:发现不一致就提 issue,以「实测行为 + 产品确认」为准上线。
强调你能在不确定文档下仍建立可重复验证。
5. 服务健康检查怎么测?实例挂了注册中心还在怎么办?
参考答案:
测探活:成功、失败、超时、抖动(偶发失败不要立刻摘——看是否有失败阈值)。
测生命周期:发布时优雅下线是否先摘流量再停进程;启动未就绪是否被打。
脏注册:实例已挂但注册中心仍留地址 → 调用方应失败重试/摘除;可注入「注册还在但端口不通」。验证重试是否打爆、是否有熔断。多实例时部分挂不影响整体可用性。
6. 开发时遇到的最大问题如何解决?
参考答案(模板):
用 STAR,突出排查深度:
- 现象:例如某接口间歇 502。
- 行动:看发布、看监控、抓 Trace 发现下游超时 → 线程池打满 → 根因是慢 SQL。
- 方案:优化索引 + 超时与舱壁隔离。
- 结果:错误率下降;补了慢 SQL 与依赖超时用例。
避免空泛「沟通解决」;要有技术路径。
7. Linux 网络/进程排查常用命令
参考答案:
结合场景说「命令组合」:
- CPU 高:
top→top -Hp pid→jstack对线程。 - 端口占用:
ss -antp | grep 8080。 - 日志:
grep -A5 -B5 ERROR app.log;tail -f。 - 访问统计:
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head。 - 网络:
curl -v、tcpdump -i eth0 port 443。
显示你日常真的排过障。
8. 算法题后的测试思维加分项
参考答案:
写完主动补充:
- 时间/空间复杂度。
- 边界表(空、极值、重复)。
- 若是库函数,说明如何写成单测。
- 可选:属性测试/随机数据对比暴力解。
测开面试官会明显加分。
9. 设计「自动售货机」的测试用例
参考答案:
功能:选商品、投币/扫码、出货、找零、缺货提示、退款。
异常:卡货、断电、通信失败、支付成功不出货的补偿。
边界:正好金额、超额、不足、连续购买。
安全:撬货、伪造支付回调。
非功能:高温低温、震动、并发两单。
体现结构化拆解即可。
10. SQL 注入怎么测?和 XSS 有何不同?
参考答案:
SQL 注入:在输入中构造 ' OR 1=1 -- 等,看是否绕过鉴权或拖库;也测预编译是否生效。
XSS:注入脚本在页面执行,测存储型/反射型/DOM 型,看是否转义与 CSP。
前者偏后端数据层,后者偏前端展示与浏览器;都要合法授权测试。
11. 数据库死锁如何排查?测试如何复现?
参考答案:
排查:错误日志死锁图、SHOW ENGINE INNODB STATUS、看两个事务锁顺序。
复现:构造相反加锁顺序的并发事务(A 锁行1再锁行2,B 相反);自动化里用多线程同时跑。
验证修复:统一锁顺序或降低事务粒度后压测不再死锁。
12. HTTP 和 RPC 在测试上有什么差异?
参考答案:
HTTP/REST:易用抓包、状态码、JSON 断言,适合对外与网关后服务。
RPC(gRPC/Thrift 等):要关注 IDL 契约、序列化兼容、超时与连接池;工具链不同(grpcurl 等)。
相同点:都要测超时、重试、鉴权、兼容性。测开要说明你们项目用哪种及如何造失败。
13. 手撕「合并两个有序数组」后,如何补充测试用例?
参考答案:
| 输入 | 期望 |
|---|---|
| 两空 | 空 |
| 一空一非空 | 非空那个 |
| 正常交错 | 有序合并 |
| 有重复元素 | 稳定性/重复保留按题意 |
| 一大一小 | 正确 |
| 已全部小于/大于 | 拼接正确 |
再谈时间 O(m+n)、原地合并的边界(从后往前写避免覆盖)。
14. 你如何快速上手一个陌生业务模块的测试?
参考答案:
- 问清目标用户与核心路径。
- 画调用链与数据流,找资金/权限等高风险点。
- 读需求/原型/历史缺陷。
- 先冒烟主路径,再补边界与异常。
- 搭最小自动化与监控关注点。
- 输出风险清单与测试计划,和 TL 对齐优先级。
展示学习方法比假装精通更重要。
速查: 多练「手撕完补用例、排障 STAR」;少踩「写完代码不谈验证」。
