Shopee(虾皮)|测试开发面经

  • 日期:2025-04-19
  • 企业与岗位:Shopee(虾皮)|测试开发
  • 适用层级:初级/中级

本篇为社区对用户分享面经的整理汇编,旨在帮助求职者了解面试考察方向。问题部分力求忠实还原原帖问答脉络;「参考答案 / 复盘思路」为整理方结合工程实践原创补充,仅供交流参考,不代表官方标准答案。

1. 自我介绍与项目讨论(约35分钟)

准备建议:

建议从最相关项目切入,说明系统规模、接口依赖、数据流、质量指标与个人贡献。长时间项目深挖通常会追问设计取舍和失败复盘,因此准备真实日志、性能基线和一条能验证结果的回归链路,比罗列框架名称更重要。

2. 浏览器输入URL到页面显示经历什么?

参考答案 / 复盘思路:

依次涉及URL解析、缓存与DNS解析、建立TCP连接及TLS握手、发送HTTP请求、服务端处理、HTML解析、CSSOM/DOM构建、布局与绘制;HTTP/3场景可能使用QUIC而非TCP。测试可关注DNS失败、证书错误、重定向、资源加载顺序和首屏指标。

3. 事务隔离级别有哪些?MySQL默认是哪种?

参考答案 / 复盘思路:

SQL常见四级为读未提交、读已提交、可重复读、串行化;MySQL InnoDB默认通常是REPEATABLE READ。需区分一致性读和当前读、MVCC与锁的作用;用两个并发会话验证脏读、不可重复读和幻读,并明确不同数据库实现的差异。

4. MySQL使用哪些存储引擎?除了InnoDB还有什么?

参考答案 / 复盘思路:

MySQL支持多种存储引擎,常见有InnoDB和MyISAM;InnoDB支持事务、行级锁与崩溃恢复,MyISAM不提供同等事务语义。面试应结合版本和业务约束解释选择;测试时重点验证事务回滚、并发更新、外键约束与故障恢复。

5. Redis为什么比MySQL快?如果MySQL数据也在内存呢?

参考答案 / 复盘思路:

内存只是部分原因:Redis常见命令路径短、数据结构直接、协议简单;MySQL即便命中内存页,也可能有SQL优化、事务、锁和索引成本。公平比较需要统一数据结构、并发量、网络往返和持久化要求;若复杂关系查询或强事务,MySQL可能更合适。

6. 有哪些GC算法?

参考答案 / 复盘思路:

常见思路包括标记-清除、复制、标记-整理及分代回收;不同方案在暂停、吞吐、空间碎片之间权衡。测试Java服务时可结合GC日志与JFR观察停顿、堆增长、分配速率,检查高并发场景是否因为对象分配过快导致P99时延抖动。

7. 微信转账过程如何设计测试用例?

参考答案 / 复盘思路:

先画状态机:发起、待收款、已收款、超时退回、失败/撤销等,明确实际产品规则。覆盖余额不足、并发重复提交、弱网重试、回调乱序、金额边界、风控、幂等与账务对账;最终以付款方、收款方及流水三方一致作为核心验收证据。

8. 算法:无重复字符的最长子串

参考答案 / 复盘思路:

滑动窗口用哈希表记录字符最近出现位置,左边界只向右移动,逐字符更新最大长度,时间O(n)。注意字符与字节的区别,测试空串、全部相同、重复字符交错和Unicode文本;实现时避免左边界被旧位置拉回。

延伸思考(社区补充)

如果你负责Shopee(虾皮)同类业务的自动化回归,如何把上述考察点转成可复现的测试数据、CI检查和上线监控?建议挑一个具体场景写出输入、断言、异常与回滚证据。

推荐学习