快手测试开发一面 2023秋招

1.介绍实习项目,针对项目仔细提问,问测试流程,压测怎么做的,开发用了什么技术栈,具体细节等。

压测模拟高并发用户访问或极端负载条件,系统在压力下的性能、稳定性、可靠性

(1)明确压测目标

  • 性能指标:如响应时间、吞吐量、并发用户数、tps等。
  • 系统瓶颈:如 CPU、内存、磁盘 I/O、网络带宽等。
  • 稳定性:系统在长时间高负载下的表现。
  • 容错能力:系统在极端条件下的恢复能力。

(2)压测计划

  • 测试场景:模拟哪些用户行为(如登录、搜索、下单等)。
  • 测试工具:选择合适的压测工具(如 JMeter、LoadRunner、Locust 等)。
  • 测试环境:搭建与生产环境相似的测试环境。
  • 测试数据:准备足够的测试数据(如用户账号、商品信息等)。
  • 性能指标:定义需要监控的性能指标(如响应时间、95线、错误率、TPS 等)。

(3)搭建测试环境

  • 硬件环境:确保测试环境的硬件配置(如服务器、网络)与生产环境一致或接近。
  • 软件环境:部署与生产环境相同的软件版本(如操作系统、数据库、中间件等)。
  • 监控工具:部署性能监控工具(如 Prometheus、Grafana、Zabbix 等),实时监控系统资源使用情况。

(4)设计测试场景

根据实际业务需求,设计不同的测试场景:

  • 基准测试:低并发下测试系统的性能基线。
  • 负载测试:逐步增加并发用户数,测试系统在不同负载下的表现。
  • 压力测试:模拟极端高并发,测试系统的极限性能。
  • 稳定性测试:长时间运行高负载,测试系统的稳定性。
  • 容错测试:模拟异常情况(如网络中断、服务器宕机),测试系统的容错能力。

(5)编写压测脚本,模拟用户行为

  • HTTP 请求:模拟用户访问网页、提交表单等操作。
  • 数据库操作:模拟用户查询、插入、更新等数据库操作。
  • 业务流程:模拟完整的业务流程(如用户登录、浏览商品、下单支付)。

(6)执行压测

  • 逐步加压:从低并发开始,逐步增加并发用户数,观察系统表现。
  • 监控性能:实时监控系统的性能指标(如响应时间、错误率、资源使用率)。
  • 记录日志:记录压测过程中的日志和错误信息,便于后续分析。

(7)分析压测结果

  • 性能指标:对比实际性能与预期目标,判断是否达标。
  • 系统瓶颈:分析系统在高负载下的瓶颈(如 CPU 使用率过高、数据库连接池耗尽)。
  • 错误日志:分析错误日志,找出系统的问题(如超时、崩溃、内存泄漏)

(8)优化调整

根据压测结果,对系统进行优化和调整:

  • 代码优化:优化性能瓶颈代码(如减少数据库查询、使用缓存)。
  • 配置调整:调整系统配置(如线程池大小、数据库连接数)。
  • 架构改进:优化系统架构(如引入负载均衡、分布式缓存)

(9)回归测试

在优化和调整后,重新执行压测,验证优化效果:

  • 验证性能提升:确认优化后的系统性能是否达到预期。
  • 确保稳定性:确认系统在高负载下是否稳定运行。

(10)输出压测报告

  • 测试目标:压测的目的和范围。
  • 测试环境:硬件、软件和网络配置。
  • 测试场景:设计的测试场景和脚本。
  • 性能指标:压测过程中的性能数据(如响应时间、吞吐量、错误率)。
  • 问题分析:发现的问题和瓶颈。
  • 优化建议:针对问题的优化建议和改进措施

2.http和https,加密机制

都是客户端和服务端之间传输数据的协议,主要区别在于安全性,主要是数据的加密机制

https是http的安全版本,通过SSL/TLS协议对数据进行加密传输,需要服务器从CA配置 SSL/TLS 证书。

 HTTP 和 HTTPS 的对比

协议

明文传输

加密传输(SSL/TLS)

端口

80

443

安全性

不安全

安全

加密机制

对称加密 + 非对称加密

证书

不需要

需要 SSL/TLS 证书

性能

较快

稍慢(由于加密开销)

适用场景

不涉及敏感信息的传输

涉及敏感信息的传输(如登录、支付)

加密机制 SSL/TLS 协议

其包含

(1)对称加密

相同密钥

(2)非对称加密

公钥 私钥 会话密钥

HTTPS 的加密通信是通过 SSL/TLS 握手过程建立的,具体步骤如下:

  • 客户端发起请求:客户端向服务器发送支持的 SSL/TLS 版本和加密算法列表。
  • 服务器响应:服务器选择加密算法,并返回 SSL/TLS 证书(包含公钥)。
  • 客户端验证证书:客户端验证证书的有效性(如是否过期、是否由受信任的证书颁发机构签发)。
  • 密钥交换:客户端生成一个随机的对称加密密钥(称为“会话密钥”),并用服务器的公钥加密后发送给服务器。
  • 服务器解密密钥:服务器用自己的私钥解密,获取会话密钥。
  • 加密通信:客户端和服务器使用会话密钥进行对称加密通信。

    3.一个网址从浏览器输入的全流程

    解析域名 :协议 域名 路径

    dns解析:域名->IP地址 在浏览器缓存内部->host本地缓存->dns缓存->根DNS服务器->顶级域服务器->权威域DNS服务器

    首先于服务器建立tcp连接(三次握手)->建立https协议(TLS/SSL握手)->发送HTTP请求->收到HTTP响应报文->渲染界面

    四次挥手关闭tcp连接

    4.python多线程

    多线程是一种并发编程技术,允许程序同时运行多个线程,从而提高程序的执行效率。

    Python 提供了 threading 模块来实现多线程编程。主要类和方法包括:

  • threading.Thread:用于创建和管理线程。
  • threading.Lock:用于线程同步,防止资源竞争。
  • threading.Event:用于线程间通信。
  • threading.current_thread():获取当前线程对象。
  • 专注四小时到啦!你真棒!现在去吃饭!

    5.代码:最长公共子序列

    思路: 双字符串动态规划问题

    全部评论
    接好运
    点赞 回复 分享
    发布于 03-21 13:58 山东
    虽然但是,为啥是2023
    点赞 回复 分享
    发布于 02-20 20:54 上海

    相关推荐

    评论
    7
    39
    分享

    创作者周榜

    更多
    牛客网
    牛客企业服务