软件工程
📌 Devops
一种软件开发与运维的文化与方法论,包括持续集成、持续交付、持续部署、自动化测试、容器化等技术和工具,旨在实现快速迭代和快速响应客户需求的目标。
核心思想: 将开发和运维团队紧密结合,共同协作,加快软件开发、测试和部署的速度,并保证软件的稳定性和可靠性。
🚁 CI/CD
持续集成/持续交付或部署
- CI(如jenkins、Azure DevOps、GitHub Actions)检测到代码更新时,自动触发构建。构建过程包括编译、单元测试、流水线质量检查等。
- 构建成功后,将构建产物如Docker镜像上传到镜像仓库。
- CD(如K8S)检测到有构建产物时自动触发部署,包括创建或更新容器、进行集成测试、自动化测试等。
🚁 敏捷持续集成
若干个小的迭代周期,每个迭代周期都会产生一个可用的软件产品。
特点: 强调团队合作与沟通,更快获取反馈并进行调整。
目标: 提高软件质量、更快发现问题、降低问题修改成本。
🚁 敏捷测试
Agile Testing,是遵循敏捷宣言的一种测试实践,它强调在敏捷开发过程中,通过迭代和持续反馈来确保软件的质量和用户满意度。
- 强调从客户角度进行测试
- 重点关注迭代测试新功能
- 强调尽早测试
- 强调持续反馈
- 预防缺陷重于发现缺陷
- 强调团队合作
📌 GET与POST请求
1.参数传递方式
- GET: 参数通过URL的查询字符串传递(key=value形式),数据直接暴露在地址栏中。
- POST: 参数通过HTTP请求体传递,数据隐藏在请求体中,格式灵活(如JSON、表单数据),支持二进制数据上传(如文件)。
2.数据长度限制
- GET: 受浏览器和服务器限制,URL长度通常不超过2048字符(约2KB),超出部分可能被截断。
- POST: 数据长度理论上无限制,但服务器可能根据配置限制请求体大小(如PHP默认8MB),适合传输大量数据或文件。
3.安全性与幂等
- GET: 数据通过URL暴露,可以被截获;具有幂等性,即多次执行相同的请求结果相同。
- POST: 参数隐藏在请求体中,安全性相对get方式较高,但HTTP协议本身为明文传输,需结合HTTPS实现加密。
4.应用场景
- GET: 获取资源(如加载网页、查询商品列表)、数据量小且无需保密的场景(如分页参数)。
- POST: 提交表单、上传文件或复杂数据结构(如JSON数组)、执行敏感操作(如支付、删除数据)。
📌 面试题
🚁 项目中遇到的最具挑战的测试问题是什么?你是如何解决的?
高并发场景下的订单重复提交问题
场景:在性能测试中,当并发数达到500时,发现有1%的订单重复提交(同一用户创建了多个相同订单)
问题分析:通过查看接口日志,发现用户点击“提交”按钮后,前端未禁用按钮,导致多次发送请求;同时,后端未做幂等性校验(如未使用唯一订单号)
解决过程:
- 前端:建议开发添加“提交后禁用按钮”的逻辑;
- 后端:要求开发添加幂等性校验(如生成唯一的request_id,同一request_id只能处理一次);
- 测试:修改性能测试脚本,模拟多次点击“提交”的场景,验证幂等性校验是否有效;
结果:优化后,重复提交率降至0,满足性能指标。