职场高薪 「中高级测试」面试题_高级测试面试题,开发岗面试自我介绍

本文介绍了一位IT专家分享的软件测试学习资料,覆盖基础知识、网络、数据库、开发语言及自动化等内容,旨在帮助程序员系统提升技能,避免自学中的低效和困境。
摘要由CSDN通过智能技术生成

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

一.基础题

1.测试用例你一般是怎么设计的,怎么可以提高覆盖率?
有没有形成自己的 一套方法论?
答:这些都是基础的理论题。

2.电梯、朋友圈、红包、登录功能是怎么测试的?用例设计
答:这些都是基础的用例设计题目,网上一大堆,建议面试前多准备几个,总结其中的规律。

在这里插入图片描述
3.假如让你独立负责一个大项目,你是如何开展测试的?
答:可以理解为如何保障产品质量,从需求分析理解、用例设计和评审、测试bug提交和跟踪、上线验证、项目复盘等等方面回答。

4.接口测试你是怎么做的?都发现了哪些问题,详细说下定位分析过程。
答:如截图:

在这里插入图片描述
遇到问题如截图:
图片

5.测试过程中你遇到最难的一个技术问题是什么?如何解决的?
答:面试前重点准备一个类似的题目,比如开发了测试工具,提高效率,搭建自动化框架或平台,引入了测试覆盖率工具、代码检测工具等等

6.你们整个测试流程是怎样的?
答:大致分为以下几种测试需求分析阶段、测试计划阶段、测试设计阶段、测试执行阶段、测试评估阶段。

二.网络相关

http和https ,tcp 和udp协议区别,网络七层模型,
答:HTTPS和HTTP的区别主要如下:

在这里插入图片描述
tcp 和udp协议区别:

在这里插入图片描述
网络七层模型:

在这里插入图片描述
2.tcp 为啥三次握手,为啥四次挥手,
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

3.tcp 拥塞算法、滑动窗口、重传机制、粘包和拆包
答:滑动窗口协议(Sliding Window Protocol)、重传机制详情见
TCP 滑动窗口/快速重传机制_Shawei_的博客-CSDN博客_tcp快速重传机制 。
拆包 :TCP直接将应用层数据包(可以认为就是一个数组)发给接收方,并且根据TCP协议,TCP会将每个发送的数据包编号(序列号),发送完一个序列号后,接收端收到会回复该序列号,代表已经被接受,but 接收端有自己的TCP缓存区,它会将多个包积累在一起再进行处理,这样的结果是导致包与包之间“无缝连接”,即所谓的”粘包“

粘包:针对此问题,就有了一些解决办法:哪每个包长度固定:这样接收端就可以每隔一定长度进行拆包,但缺点是浪费资源,加入头部信息:每个数据包前加入该数据包中数据的长度值,这样接收端从缓存中读取时,通过读该头部信息,知道了每个包的长度,这样就能拆包

4.一些抓包工具如fidder、tcpdump的使用,
答:网上都有现成的使用教程,可以选一两篇去操作下。

5.浏览器输入百度网址发生了什么?DNS解析过程
答:这个问题比较宽泛,整个流程也比较长,涉及到网络7层模型、dns解析、tcp/ip协议簇,三次握手、负载均衡、集群架构、数据库,linux 系统状态、进程切换等等方面,看你自己对哪块比较熟悉,重点去说

6.说下cookies,session鉴权机制?为什么要引入这套机制?
答:
在这里插入图片描述

引入原因:HTTP 是无状态的协议(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息):每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行会话跟踪(知道是谁在访问我),就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。而这个状态需要通过 cookie 或者 session 去实现。

三.数据库重中之重

简单
1、基本的增删改查语句;
答:insert、delete、update、select sql编写。

2、多表联合查询、左右连接区别、子查询等;
答:网上都有教程,可以自行查找,在这里不做赘述。

3、聚合、分组、排序sql语句编写、having和where 区别
答:表数据

在这里插入图片描述
sql 编写:
SELECT
class 班级名称,
COUNT(*) 每个班级人数,
MAX(grade) 最高分,
MIN(grade) 最低分,
SUM(grade) 班级总分,
AVG(grade) 平均分
FROM
student
where age <20
GROUP BY
class
HAVING SUM(grade) >=34
ORDER BY
最高分 DESC
执行结果:
在这里插入图片描述
4、char 和varchar区别等
答:varchar;表示变长字符串,char;定长字符串。

5、三范式是什么?
答:第一范式(确保每列保持原子性)、第二范式(确保表中的每列都和主键相关)、第三范式(确保每列都和主键列直接相关,而不是间接相关)

中级

1、说一下sql是怎么优化的?
答:show variables like ‘%quer%’; 查询慢查询日志相关的设置,找出慢查询的sql ,用explain查询sql的执行计划,该加索引的加索引(要知道索引正确使用场景如下面试题),尽量少 连接查询、select *、避免类型转换,减少回表次数。

2、索引的概念、类型,优缺点分析、索引应用场景和索引失效场景;
答:索引是帮助mysql高效获取数据的数据结构
优点:
a)可以保证数据库表中每一行的数据的唯一性,
b)可以大大加快数据的检索效率,
c)加速表与表之间的连接,
d)在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
f)通过使用索引对数据进行排序,降低数据排序的成本,降低cpu的消耗,可以在时间查询的过程中,使用优化隐藏器,提高系统的性能。
缺点:
a) 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
b) 索引会占据磁盘空间。
c) 以表中的数据进行增、删、改的时候,索引也要动态的维护,这就降低了整数的维护速度。

索引类型:
主键索引:索引列中的值是唯一的并且不允许有空值
普通索引:mysql的基本索引类型,没有什么限制,允许有重复值和空值
唯一索引:索引列中的值是唯一的,但是允许有空值
还有其他索引 譬如全文索引、空间索引、前缀索引等不常见

4、mysql 几个存储引擎,innodb 和MyISAM区别
答:MySQL有多种存储引,MyISAM、InnoDB、MERGE、MEMORY(HEAP)等

InnoDB 和MyISAM 区别:
1). InnoDB 支持事务,MyISAM 不支持事务。这是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一;
2). InnoDB 支持外键,而 MyISAM 不支持。对一个包含外键的 InnoDB 表转为 MYISAM 会失败;
3). InnoDB 是聚集索引,MyISAM 是非聚集索引。聚簇索引的文件存放在主键索引的叶子节点上,因此 InnoDB 必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而 MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针(就是物理地址)。主键索引和辅助索引是独立的 。
注意:MyISAM 无论是主键还是非主键索引 ,data存储的都是这条数据的物理地址(地址指针),innodb 主键索引的data就是这条数据,非主键索引的data是主键id,

高级

1.索引底层机制,B+树特性,和其他数据结构(二叉树、红黑树)区别,
答:这个属于高级特性,后续公众号会重点输出数据库相关的知识和面试题

2.mysql事务隔离级别、MVCC 是什么,
答:

在这里插入图片描述

MVCC ,Multi-Version Concurrency Control,多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问;在编程语言中实现事务内存

3.数据库锁类型,什么是数据库死锁,如何避免?
答:从数据库系统角度分为三种:排他锁、共享锁、更新锁。
从程序员角度分为两种:一种是悲观锁,一种乐观锁,等等

避免死锁方式:
结构化数据建模:基于范式原则初级建模
热点业务排解:挖出核心业务模型
应用拆解:降低时间片复杂度
提升性能:优化代码,集群、超时机制、回滚机制

4.主从底层数据同步机制、binglog、redolog、undolog区别,
答:redo log:确保事务的持久性。防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。undo log:回滚日志保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读binlog:二进制日志作用:用于复制,在主从复制中,从库利用主库上的binlog进行重播,实现主从同步。 用于数据库的基于时间点的还原。

四.开发语言,java这块后续我会陆续推出一些java基础专栏,

面对对象三大特性、通俗解释,八大基本数据类型及其大小,循环、判断等语法

2.java集合 如arraylist、linkedlist、hashmap等特性和底层实现原理 ;

3.java锁类型,线程安全、线程池、juc并发组件、反射等;

4.Jvm内存结构,不同版本区别,gc方法,调优,命令等等;

5.springboot、spring、mybatis等框架的使用和常见面试题

6.单例、工厂、适配器等设计模式

7.zk、dubbo、springcloud等相关java框架是否接触过?底层原理

8.分布式事务、分布式锁、幂等性等常见分布式问题是否了解?解决方式?

五.自动化,这块是面试官重点去考察的地方,

1.自己开发的自动化框架吗?为啥要开发这么一个框架呢?市面上很多自动化平台为什么不用,却要自己搭建?想过投入产出比吗?

答:自己搭建,主要是项目每次上线之前,回归重复的功能占用大量迭代时间,通过自动化框架可以节约时间,市面上的测试平台得自己部署和维护,出现问题需要自己去查底层代码解决,学习门槛较高,并且很多功能几乎用不到,自己搭建的自动化框架,开发相对简单,上手特别快,特别符合当前的项目需要。

2.说下接口自动化分别用了哪些框架,怎么实现的,你主要负责哪些部分?
答:我的主要是springboot、testng、mysql、okhttpcilent、mq 那套东西。

3.你们这套框架最难的技术点有哪些?搭建框架过程中遇到哪些问题,怎么解决的?
答:难点技术有很多,譬如失败用例重跑机制,异步接口校验返回结果,场景测试中前置依赖接口怎么处理,涉及到mq 怎么操作等等

4.流程场景怎么设计用例的?假如流程比较长,你怎么保障前面流程成功?
答:可以引入失败用例重跑机制 testng有接口实现、简单接口,我们可以直接在数据库造数据。

5.数据放哪的?数据驱动怎么做的?关键字驱动怎么做的?
答:看情况,如果是灵活的数据,建议放在excel里面,做数据驱动,如果是账号、密码这种修改很少的数据,可以考虑放在配置文件中,如果是那种一成不变的可以写死(尽量别这么做)。

关键字驱动:测试用例的步骤(元素)和用例分离。关键字驱动表示把项目中的一些逻辑封装成关键字(一个函数名)。例如login、 register、order进行设置变量(Set Viriable),调用不同的关键字组合实现不同的业务逻辑,从而驱动测试用例执行。
数据驱动:数据和用例步骤分离,通过excel、yaml等文件保存数据。数据驱动是把测试用例里面的数据提取到excel或者yam文件里面,然后通过改变excel或yaml中的数据驱动测试用例执行。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
yaml中的数据驱动测试用例执行。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-hG3OlH4Y-1713595778530)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值