B站测开实习
面试时长 49 分钟。
先来一份自我介绍。
面试官人很 nice,围绕自我介绍就跟我聊我对测试开发的看法、TDD、互联网各种方式。
然后聊项目,全程我在介绍自己的优化过程,面试官一点不上压力。
然后是场景题:
1. 用过向量数据库吗,它是做什么用的?
了解过 Milvus、Chroma、Qdrant 等向量数据库,主要用于存储文本 Embedding,通过相似度检索查找语义相关内容,常用于 RAG 知识库、语义搜索和 Agent 长期记忆。
2. 你有没有做个自己写测试用例这件事情?
自由发挥。
3. B 站两个人私信的功能,让你尽可能全面地来测试,怎么设计测试?
我会从功能、异常、性能、安全、兼容性五个方面设计测试。
- 功能测试:验证私信发送、接收、撤回、删除、历史记录、未读消息数、已读状态,以及文字、图片、表情等消息类型。
- 异常测试:测试断网、弱网、发送超时、重复点击、消息乱序、重复发送,以及用户被拉黑、账号封禁等情况。
- 性能测试:测试大量历史消息加载、连续发送消息、高并发情况下的响应速度和消息延迟。
- 安全测试:验证未授权用户无法查看他人私信,测试 XSS 注入、敏感信息泄露、接口越权和消息刷屏限制。
- 兼容性测试:覆盖不同浏览器、手机系统,以及 PC 和移动端消息同步。
最后重点验证消息不丢失、不重复、顺序正确,以及多端状态一致性。
4. 用户来反馈,说他发了一条消息后对方没收到,你是员工,你怎么排查问题?
我会先确认双方账号、发送时间、消息类型和网络环境,尝试复现问题。
首先检查客户端,确认消息是否显示发送成功,是否存在网络超时或请求失败。
其次查看服务端日志,通过消息 ID 追踪请求链路,检查消息是否成功写入数据库、消息队列是否积压、消费者是否处理成功。
然后检查接收端,确认 WebSocket 连接是否正常、消息是否成功推送,以及是否存在拉黑或消息过滤。
最后根据定位结果修复问题,并补充断网重试、消息补偿和多端同步的回归测试,确保消息不丢失。
5. 你现在用哪些 AI 工具?
聊天,这个没标答。
6. 你了解 JMeter,那如果要开发一个新接口,这个接口比较复杂,需要压测,测一下性能,你会怎么做?
我会先了解接口的业务逻辑、请求参数和性能指标,比如响应时间、TPS、错误率。
然后用 JMeter 编写压测脚本,通过 CSV 参数化模拟不同用户数据,使用关联提取处理 Token 等动态参数,配置线程组模拟并发请求。
压测时采用逐步增加并发量的方式,观察 TPS、P95 响应时间和错误率,同时监控服务器 CPU、内存、数据库连接池等指标。
最后分析性能瓶颈,比如慢 SQL、锁竞争、连接池不足,优化后再次压测,对比优化前后的性能数据。
7. 自动化测试你有接触吗?
接触过。我在行旅天下项目中使用 Selenium 做过 Web 端到端自动化测试,通过脚本模拟用户点击、输入、页面跳转等操作,验证完整业务流程是否正常。同时使用元素定位、显式等待和断言来提高测试稳定性,减少人工重复测试的成本。
古法编程
原题环形链表,没刷 leet code,不会写链表(大罚二十大板,算竞白打)
https://leetcode.cn/problems/linked-list-cycle/description/?envType=study-plan-v2&envId=top-100-liked
然后换了个超级简单的贪心
https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/?envType=study-plan-v2&envId=top-100-liked
最后开始八股:
1. mysql 左连接和右连接有什么区别?
左连接:以左表为主,保留左表所有记录,右表匹配不到的字段填 NULL。
右连接:以右表为主,保留右表所有记录,左表匹配不到的字段填 NULL。
2. redis 缓存穿透是什么概念?
查询一个 Redis 和数据库中都不存在的数据,导致每次请求都绕过缓存,直接访问数据库,大量请求可能压垮数据库。
3. http 请求常见的 header?
Host:指定目标服务器域名
Content-Type:请求体的数据格式,如 application/json
Authorization:身份认证,如 Bearer Token
Accept:客户端希望接收的数据类型
User-Agent:客户端浏览器、操作系统等信息
Cookie:携带登录状态、Session ID 等
Accept-Encoding:支持的压缩方式,如 gzip
Accept-Language:客户端偏好的语言
Referer:请求来源页面地址
Origin:请求来源的协议、域名和端口
4. 状态码 400是什么?
客户端请求有误,服务器无法正确处理。
5. 你随便说几个你知道的状态码?
200 OK:请求成功。
201 Created:资源创建成功。
301:永久重定向。
302:临时重定向。
400 Bad Request:请求参数或格式错误。
401 Unauthorized:未认证,需要登录。
403 Forbidden:没有访问权限。
404 Not Found:请求的资源不存在。
429 Too Many Requests:请求过于频繁,被限流。
500 Internal Server Error:服务器内部错误。
502 Bad Gateway:网关收到无效响应。
503 Service Unavailable:服务暂时不可用。
504 Gateway Timeout:网关等待上游服务超时。
个人感悟,这次面试官一点不吃压力,面试难度取决于面试者水平。很多问题都答错了或者只能说个大概。采购感觉自己好堕落,啥也没学。还是得多学习。