测试开发面试题记录

news/2024/11/8 14:38:37/

1. TCP与UDP的区别及应用场景

  • TCP (传输控制协议)

    • 特点:面向连接,可靠性高,数据顺序保证,流量控制和拥塞控制。
    • 应用场景:文件传输(FTP),电子邮件(SMTP),网页加载(HTTP/HTTPS)。
  • UDP (用户数据报协议)

    • 特点:无连接,不可靠,数据顺序不保证,开销小。
    • 应用场景:视频流,语音通话(VoIP),在线游戏,实时应用。

2. 浏览器键入URL后的流程

  1. DNS解析:将域名解析为IP地址。
  2. 建立TCP连接:与服务器建立TCP连接(三次握手)。
  3. 发送HTTP请求:浏览器向服务器发送请求。
  4. 服务器处理请求:服务器处理请求并返回响应。
  5. 浏览器渲染页面:接收响应并渲染网页。

3. HTTPS数字证书的认证过程

  1. 生成密钥对:网站生成公钥和私钥。
  2. 申请证书:向CA(证书颁发机构)申请证书,提供公钥。
  3. CA验证:CA验证申请者身份,颁发数字证书。
  4. 使用证书:网站使用证书进行HTTPS加密通信。

4. 堆和栈的区别及数据结构

    • 特点:动态分配内存,大小可变,管理复杂。
    • 数据结构:通常是链表或树结构。
    • 特点:后进先出(LIFO),内存分配速度快,大小固定。
    • 数据结构:数组或链表实现。

5. 如何避免内存泄漏

  • 及时释放资源:使用完毕后立即释放动态分配的内存。
  • 智能指针:使用智能指针(如C++中的std::unique_ptr)自动管理内存。
  • 代码审查:定期审查代码,查找未释放的内存。

6. Redis与MySQL的数据一致性保证

  • Redis

    • 持久化:使用RDB快照和AOF日志实现数据持久化。
    • 主从复制:主节点变更数据时,从节点同步更新。
  • MySQL

    • 事务:通过ACID属性保证数据一致性。
    • 锁机制:使用行锁和表锁防止并发冲突。

7. Redis的数据类型

  • 字符串:最基本的数据类型。
  • 哈希:键值对集合,适合存储对象。
  • 列表:有序字符串列表,支持推入和弹出操作。
  • 集合:无序字符串集合,支持集合运算。
  • 有序集合:带权重的字符串集合,支持范围查询。

8. 什么是数据库事务

  • 定义:一组操作的集合,要么全部执行成功,要么全部失败。
  • 特性:遵循ACID原则(原子性、一致性、隔离性、持久性)。

9. MySQL的分页查询

使用LIMITOFFSET实现分页:

sql

复制

SELECT * FROM table_name LIMIT page_size OFFSET (page_number - 1) * page_size;

10. 常用的排序算法及其特点

  • 冒泡排序:简单,稳定,时间复杂度O(n²)。
  • 选择排序:简单,不稳定,时间复杂度O(n²)。
  • 插入排序:简单,稳定,适合小规模数据,时间复杂度O(n²)。
  • 快速排序:高效,不稳定,时间复杂度O(n log n)。
  • 归并排序:稳定,时间复杂度O(n log n),适合大规模数据。

11. 服务端只注册一个实例吗

  • 一般情况下:在负载均衡环境中,多个实例可以同时运行,以提升可用性和扩展性。
  • 单实例:对于小型应用或开发环境,可能只注册一个实例。

12. 项目中JMeter压测关注的变量

  • 响应时间:请求到达和响应的时间。
  • 吞吐量:单位时间内处理的请求数量。
  • 错误率:请求失败的比例。
  • 并发用户数:同时发起请求的用户数量。

13. Linux查看服务器负载情况的命令

  • top:实时查看系统资源使用情况。
  • htop:增强版的top,提供更友好的界面。
  • uptime:查看系统运行时间和负载平均值。

14. 手撕两数之和

python

复制

def two_sum(nums, target):num_map = {}for index, num in enumerate(nums):complement = target - numif complement in num_map:return [num_map[complement], index]num_map[num] = index

15. SQL题直接口述怎么写

16. 项目中的高并发是如何做到的

17. Redis 集群如何保证数据一致性

18. JMeter 测试项目的时候是怎么做方案的

19. 项目中存在容量风险的模块有哪些

20 关于 MySQL 的容量上限是怎么发现的

  • 查询所有用户SELECT * FROM users;
  • 按年龄排序SELECT * FROM users ORDER BY age;
  • 插入新用户INSERT INTO users (name, age) VALUES ('Alice', 30);
  • 更新用户信息UPDATE users SET age = 31 WHERE name = 'Alice';
  • 删除用户DELETE FROM users WHERE name = 'Alice';
  • 负载均衡:使用负载均衡器将请求分发到多个服务器实例上。
  • 异步处理:使用消息队列(如 RabbitMQ、Kafka)进行异步处理,减轻实时请求压力。
  • 缓存策略:利用 Redis 等缓存技术,减少数据库访问频率。
  • 数据库优化:进行数据库分库分表,优化索引,提高查询效率。
  • 代码优化:使用高效的算法和数据结构,减少资源消耗。
  • 主从复制:数据在主节点写入后,会同步到从节点,从而保证数据一致性。
  • 分片机制:数据在多个节点之间分片存储,确保负载均衡。
  • 故障转移:主节点故障时,可以自动切换到从节点,保证系统的高可用性。
  • 一致性哈希:通过一致性哈希算法减少数据迁移的次数,维护数据分布的一致性。
  • 需求分析:明确测试目标,如响应时间、并发用户数等。
  • 设计测试计划:创建测试场景,包括线程组、请求类型、参数化、断言等。
  • 配置监控:使用监听器监控性能指标(如响应时间、错误率等)。
  • 执行测试:运行测试计划,模拟真实用户访问场景。
  • 结果分析:收集测试结果,分析性能瓶颈,生成报告。
  • 数据库:随着数据量的增加,可能导致性能下降。
  • 缓存层:如 Redis 的内存限制,可能导致缓存失效。
  • 消息队列:高并发时,可能出现消息堆积风险。
  • 文件存储:大文件上传和下载可能影响系统性能。
  • API网关:请求量过大可能导致网关成为瓶颈。
  • 性能监控:通过监控工具(如 Prometheus、Grafana)观察数据库性能指标。
  • 压力测试:使用 JMeter 等工具进行压力测试,模拟高并发场景,发现瓶颈。
  • 慢查询日志:开启慢查询日志,分析查询性能,识别高负载的查询。
  • 容量规划:根据数据增长趋势,定期评估数据库容量。

http://www.ppmy.cn/news/1545376.html

相关文章

丹摩征文活动|详解 DAMODEL(丹摩智算)平台:为 AI 开发者量身打造的智算云服务

本文 什么是 DAMODEL(丹摩智算)?DAMODEL 的平台特性快速上手 DAMODEL 平台GPU 实例概览创建 GPU 云实例 储存选项技术支持与社区服务结语 在人工智能领域的飞速发展中,计算资源与平台的选择变得尤为重要。为了帮助 AI 开发者解决高…

保障性住房管理:SpringBoot技术优势分析

3系统分析 3.1可行性分析 通过对本城镇保障性住房管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本城镇保障性住房管理系统采用SSM框架,JA…

低代码环境中的领域与根实体解析

在现代软件开发中,低代码平台的兴起使得开发者能够更快速地构建应用程序。在这一过程中,理解领域(Domain)和根实体(Root Entity)的概念变得尤为重要。这些概念不仅帮助开发者组织和管理复杂系统中的数据和业…

Transformer究竟是什么?预训练又指什么?BERT

目录 Transformer究竟是什么? 预训练又指什么? BERT的影响力 Transformer究竟是什么? Transformer是一种基于自注意力机制(Self-Attention Mechanism)的神经网络架构,它最初是为解决机器翻译等序列到序列(Seq2Seq)任务而设计的。与传统的循环神经网络(RNN)或卷…

免费数据集网站

1、DataSearch https://datasetsearch.research.google.comhttp://DataSearch 2、FindData findata-科学数据搜索引擎https://www.findata.cn/ 3、Kaggle Kaggle: Your Machine Learning and Data Science CommunityKaggle is the world’s largest data science community …

MySQL rand()函数、rand(n)、生成不重复随机数

文章目录 一、rand()与rand(n)二、rand()使用示例2.1、rand()与order by/group by使用随机排序分组2.2、round()与rand()的组合使用2.3、rand与ceiling的组合使用2.4、rand与floor组合使用2.5、rand与md5组合使用 三、总结3.1、rand()与rand(n)的区别 有时候我们想要生成一个唯…

服务器数据恢复—分区结构被破坏的reiserfs文件系统数据恢复案例

服务器数据恢复环境: 一台服务器中有一组由4块SAS硬盘组建的RAID5阵列,上层安装linux操作系统统。分区结构:boot分区LVM卷swap分区(按照顺序),LVM卷中划分了一个reiserfs文件系统作为根分区。 服务器故障…

vue中的nextTick() - 2024最新版前端秋招面试短期突击面试题【100道】

nextTick() - 2024最新版前端秋招面试短期突击面试题【100道】 🔄 在Vue.js中,nextTick 是一个重要的方法,用于在下次DOM更新循环结束之后执行回调函数。理解 nextTick 的原理和用法可以帮助你更好地处理DOM更新和异步操作。以下是关于 next…