跳转至

软件工程

📌 Devops

一种软件开发与运维的文化与方法论,包括持续集成、持续交付、持续部署、自动化测试、容器化等技术和工具,旨在实现快速迭代和快速响应客户需求的目标。

核心思想: 将开发和运维团队紧密结合,共同协作,加快软件开发、测试和部署的速度,并保证软件的稳定性和可靠性。

🚁 CI/CD

持续集成/持续交付或部署

  1. CI(如jenkins、Azure DevOps、GitHub Actions)检测到代码更新时,自动触发构建。构建过程包括编译、单元测试、流水线质量检查等。
  2. 构建成功后,将构建产物如Docker镜像上传到镜像仓库。
  3. CD(如K8S)检测到有构建产物时自动触发部署,包括创建或更新容器、进行集成测试、自动化测试等。

🚁 敏捷持续集成

若干个小的迭代周期,每个迭代周期都会产生一个可用的软件产品。

特点: 强调团队合作与沟通,更快获取反馈并进行调整。

目标: 提高软件质量、更快发现问题、降低问题修改成本。

🚁 敏捷测试

Agile Testing,是遵循敏捷宣言的一种测试实践,它强调在敏捷开发过程中,通过迭代和持续反馈来确保软件的质量和用户满意度。

  1. 强调从客户角度进行测试
  2. 重点关注迭代测试新功能
  3. 强调尽早测试
  4. 强调持续反馈
  5. 预防缺陷重于发现缺陷
  6. 强调团队合作

📌 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,满足性能指标。