华为测试面试题
本题清单
- 软件测试流程你怎么参与?
- 接口测试怎么做?高并发怎么验证?
- 印象深刻的 Bug 怎么讲?
- 模块依赖多,联调怎么测?
- 慢 SQL 如何优化?
- 消息队列在项目里怎么用?怎么测?
- 单例等设计模式与测试的关系?
- 华为风格手撕后还会问什么?
- 缺陷的严重程度和优先级如何区分?举例说明
- 回归测试范围怎么圈定?需求变更后如何评估影响面?
- LEFT JOIN 和 RIGHT JOIN 的区别?写个例子说明
- 如何做长时间稳定性/可靠性测试?
- 配置项/特性开关(Feature Toggle)怎么测?
- 测试用例的粒度如何把握?太细或太粗有什么问题?
1. 软件测试流程你怎么参与?
参考答案:
贯穿式回答:
- 需求评审:提边界与异常(金额 0、重复提交、超时)。
- 开发阶段:单测/接口自测清单;用 Postman 建集合。
- 系统测试:按用例执行,缺陷闭环。
- 回归:变更影响分析后选回归集。
- 发布:checklist、灰度、回滚预案。
- 线上:监控与问题复盘反哺用例。
开发转测更要强调你能从实现视角提前埋可测性。
2. 接口测试怎么做?高并发怎么验证?
参考答案:
功能:正例、反例、鉴权、幂等、状态码与业务码。工具 Postman → Newman/HttpRunner/Pytest 自动化。
性能:JMeter 阶梯加压,看 TPS、RT、错误率与资源;用 Arthas 等看热点方法(若许可)。
并发正确性:库存/余额类对账;支付回调重复。举例 Redis 幂等键防重复回调。
3. 印象深刻的 Bug 怎么讲?
参考答案:
选资金或数据类更有分量。结构:
- 现象:用户被重复扣款/状态错乱。
- 定位:日志发现回调两次,代码无幂等。
- 修复:唯一键 + Redis/DB 约束。
- 验证:补重复回调自动化。
- 影响:避免资损 X;复盘进规范。
不要讲「改个文案」级别的 bug。
4. 模块依赖多,联调怎么测?
参考答案:
- 先画时序图和数据归属,明确谁写谁读。
- 对齐跨模块规则(库存扣减时机、超卖兜底)。
- 契约测试:接口字段与错误码。
- 集成环境联调:主路径 + 失败注入(库存服务超时)。
- 阻塞风险提前升级,不把联调风险甩到提测当天。
5. 慢 SQL 如何优化?
参考答案:
步骤:慢日志定位 → EXPLAIN 看 type/rows/extra → 加/改索引或改写法 → 避免 SELECT *、函数包列、不合理分页 → 必要缓存或汇总表 → 用压测/执行时间对比验证。
测试职责:准备大数据量环境,防止「测试库很快线上很慢」;把慢 SQL 用例纳入回归。
6. 消息队列在项目里怎么用?怎么测?
参考答案:
说明业务场景:下单后异步发积分/通知,削峰解耦。
测试点:
- 发送失败重试与告警
- 消费幂等(至少一次)
- 堆积与扩容
- 死信与人工补偿
- 需要顺序时的分区策略
- 下游挂掉是否影响主下单(应隔离)
7. 单例等设计模式与测试的关系?
参考答案:
能讲清饿汉/懒汉/DCL/静态内部类及线程安全。
测试视角:单例若持有可变状态,会导致用例互相污染——应用 reset 方法、或测试中注入可替换实例、或避免在单例里堆业务状态。体现你懂设计对可测性的影响。
8. 华为风格手撕后还会问什么?
参考答案:
准备三块:
- 复杂度与优化空间。
- 异常输入:空、负数、超长、非法字符。
- 「请为这段代码写测试用例」——直接上表格。
机试/手撕过线只是门槛,表达与验证意识决定技术面印象。
9. 缺陷的严重程度和优先级如何区分?举例说明
参考答案:
- 严重程度(Severity):缺陷对系统的客观破坏程度——崩溃、资损、主流程不通通常 S1/S2。
- 优先级(Priority):修复的紧急程度——可由业务决定。
例:冷门浏览器的错别字,严重程度低但若是大领导演示页,优先级可能被抬高;深夜资损是严重度与优先级都高。
面试强调:两者独立字段,不能混用。
10. 回归测试范围怎么圈定?需求变更后如何评估影响面?
参考答案:
- 变更点:直接改动的模块。
- 依赖点:调用方/被调用方、公共组件、配置。
- 历史高危:缺陷集群区。
- 核心链路:即使未改也冒烟。
手段:看 MR diff、调用链、需求追溯用例、开发访谈。输出「必回归 / 抽样 / 不回归」并写明理由。
11. LEFT JOIN 和 RIGHT JOIN 的区别?写个例子说明
参考答案:
A LEFT JOIN B:保留 A 全部,B 无匹配则右列 NULL。A RIGHT JOIN B:保留 B 全部,A 无匹配则左列 NULL。A RIGHT JOIN B 等价于 B LEFT JOIN A(字段顺序注意)。
测试场景:用户左连订单,无订单用户也应查出;断言 NULL 与计数。
12. 如何做长时间稳定性/可靠性测试?
参考答案:
目标:发现内存泄漏、句柄泄漏、定时任务漂移、偶发死锁。
做法:7×24 或按版本规定时长跑业务混合负载;监控内存曲线、FD、错误率、重启次数;中途注入故障看恢复。
通过标准:无崩溃、无泄漏趋势、错误率在阈值内。华为类岗位常重视可靠性表述。
13. 配置项/特性开关(Feature Toggle)怎么测?
参考答案:
- 开/关两种路径功能正确。
- 运行时切换是否即时生效、是否需重启。
- 非法配置默认值与校验。
- 多开关组合兼容。
- 灰度百分比。
- 回滚开关作为故障预案演练。
配置测试常被低估,却是线上故障高频来源。
14. 测试用例的粒度如何把握?太细或太粗有什么问题?
参考答案:
太细:维护成本高、变更就碎、执行慢,收益低。
太粗:失败难定位、步骤含糊、新人无法执行、易漏断言。
原则:一条用例一个主要目的;步骤可复现;断言明确;公共前置用夹具/公共步骤复用。P0 可略细,探索性可粗。
速查: 多练「机试、幂等与流程、SQL/集合」;少踩「机试不过;空窗/转岗说不清」。
