目录
目录
Java相关
1、list、set、map的区别?
- list 的特点是元素有序,元素可重复,list接口的主要实现类有ArrayList和LinkedList,list可以动态增长,查找元素的效率较高
- set 的特点是元素无序,且不可重复,主要实现类有HashSet和TreeSet,删除和插入的效率比较高
- map的特点是存储的键值对,主要实现类有HashMap和TreeMap
2、String 类能不能继承?
- 不能被继承,因为java对String类的定义中有final修饰符,而final修饰的类是不能被继承的
3、什么样的类不能被继承?
- 在java中只要是被定义为final的类,也可以说是被final修饰的类,就不能被继承
- final是Java中的一个关键字,可以用来修饰变量、方法和类,用final修饰的变量一旦被赋值就不能改变,称为常量
4、抽象类和接口的区别?
5、IO流
6、进程、线程
python相关
1、python的垃圾回收
2、如何查看路径下文件并打印出文件名?
3、自动化中常用到的第三方库?
- pytest、airtest、request、pyyaml、pymysql、pytest-ordering、pytest-rerunfailures
4、hook函数
5、进程、线程
6、是否写过装饰器?
自动化相关
1、selenium的driver.close,quit的区别?
- driver.close() 关闭当前窗口
- driver.quit() 关闭所有窗口
2、自动化的价值是什么,或者做到什么程度才能体现价值?
性能相关
1、性能测试中什么场景会造成cpu使用率低但负载很高?
- 场景一:磁盘读写请求过多就会导致大量I/O等待,即等待磁盘I/O完成的进程过多,导致进程队列长度过大,但是cpu运行的进程却很少,这样就导致了负载过大,但cpu使用率低
- 场景二:MySQL中存在没有索引的语句或存在死锁等情况
2、性能测试中关注哪些指标?
- 如果对性能指标了解较浅,建议回答工作中切实关注的指标,如:tps、平均响应时间、cpu、错误率等
3、如何评估性能指标?
- 业务提供预估业务数据,如:pv、uv等
- 根据具体业务场景,根据28原则进行指标计算评估
DB相关
1、数据库慢查询优化方法?
- 恰当使用索引
- 表数据结构优化(将字多很多的表进行拆分、增加中间表、适当的字段冗余)
- 分解关联查询(将一个大的擦好像分解为多个小查询)
- 优化limit分页
2、mysql的搜索引擎?
中间件相关
1、常见的mq类型,及其特点
- RocketMq:能够保证严格的消息顺序、提供丰富的消息拉取模式、强大的消息堆积能力、提供针对消息的过滤功能、高效的订阅者水平扩展能力、实时的消息订阅机制
- Kafka:快速持久化、高堆积、高吞吐
2、mq有什么优点,举例说明在真实业务中的应用
- 优点:解耦、异步、削峰;业务中应用:交易支付发mq消息,不同业务方监听支付消息,做对应的业务逻辑处理
- 具体业务中应用:支付成功发mq消息,各业务方监听消息进行各自业务逻辑处理
3、怎么保证不重复消费mq消息?
- 业务方可以通过状态机管理,准备第三方存储做mq消费记录
4、redis的数据类型?
- 字符 string、列表 list、哈希 hash、无序集合 set、有序集合 zset
5、redis与mysql的区别
- mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度比较慢
- redis是非关系型数据库,也是缓存数据库,即将数据存储在缓存中,读取速度快,可以提高允许效率,但是缓存时间有限
6、业务中用到的中间件?(简单介绍真实用到的中间件,以及应用场景)
- roma:是一个提供MySQL binlog消息订阅和消费的一个中间件
- rocketmq:消息中间件
- Hawaii:定时任务
- tair/redis:缓存相关
- eagle:数据配置
网络请求相关
1、http接口的请求方式有哪些?
- get:向特定的资源发出请求
- post:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改
- put:向指定资源位置上传其最新内容
- delete:请求服务器删除Request-URL所标识的资源
- option:返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
2、get/post接口的区别?
- 可见性:get请求参数可见,post请求参数在请求正文内
- 安全性:get请求安全性较差,数据是url上的一部分,post更安全,因为参数不会被保存在浏览器历史货web服务器日志中
- 对数据长度的限制:get有长度限制,url最大长度是2048个字符,post没有限制
- 对数据类型的限制:get只允许ASCII字符,post没有限制,也允许二进制数据
- 标签:get可以被收藏为标签,post请求不能被收藏
3、http接口的请求流程?
- request和response,但是他们的流程都是相同的,一个请求一个接收
4、http请求响应步骤?
- 客户端连接到Web服务器-> 发送Http请求-> 服务器接受请求并返回HTTP响应-> 释放连接TCP连接-> 客户端浏览器解析HTML内容
5、localStorage和sessionStorage的区别?
- 相同点:都是window对象提供的全局属性,用途都是在浏览器中存储key/value格式的数据
- 不同点:1、从使用的角度看,两者唯一区别在于时效性;2、sessionStorage在关闭窗口或标签页之后会删除数据,localStorage如果不手动删除,则数据一直存在
6、cookie、session、token的区别?
参考文档:https://www.cnblogs.com/moyand/p/9047978.html
7、http接口的状态码,并简述
- 200 OK 当您的操作将在响应正文中返回数据时,出现此结果。
- 204 No Content 当您的操作成功,但不在响应正文中返回数据时,出现此结果。
- 304 Not Modified(重定向) 当测试实体自上次检索以来是否被修改时,出现此结果。
- 403 Forbidden 客户端错误
- 401 Unauthorized 客户端错误
- 413 Payload Too Large(客户端错误) 当请求长度过长时,出现此结果。
- 400 BadRequest(客户端错误) 当参数无效时,出现此结果。
- 404 Not Found(客户端错误) 当资源不存在时,出现此结果。
- 405 Method Not Allowed(客户端错误)由于方法和资源组合不正确而出现此错误。 例如,您不能对一个实体集合使用 DELETE 或 PATCH。
- 412 Precondition Failed 客户端错误
- 501 Not Implemented(服务器错误) 当未实施某个请求的操作时,出现此结果。
- 503 Service Unavailable(服务器错误) 当 Web API 服务不可用时,出现此结果。
8、http与https的区别,https为什么会引入cookie?(b站)
7、怎么防止cookie被盗?(b站)
Linux命令相关
1、如何查看端口号?
- 如果需要知道2809号端口的情况的话,命令如下: netstat -pan | grep 2809(端口号)
2、如何快速查找指定进程?
- 通过进程id查找程序:ps -aux | grep id(进程id)
3、常用Linux命令
问题排查相关
1、线上出现白屏,排查思路是什么?
2、线上出现问题,同步给开发测试,怎么定位和解决问题?
项目管理相关
1、介绍公司产研流程,测试分别参与哪些阶段,在各阶段测试的职责和侧重点?
业务项目相关
1、有一个写DB的接口,如何设计接口测试case
- 业务层面:是否覆盖业务所需要的数据,非正常业务数据是否有处理
- 入参层面:是否有判空处理,入参类型、null、必传等处理
- 出参层面:出参字段、错误码等正确性、完整性
- DB 层面: DB字段定义长度,过长如何处理等
2、如果要你测试微信消息列表,怎么设计测试场景(不局限于功能测试)(pdd)
- 从功能、兼容性、易用性、性能、安全等角度进行结构化场景设计,不要简单做case累加
算法相关
1、返回字符串数组内最长公共前缀,如:{"flower", "flow", "flight"},则返回"fl"(pdd)
- 力扣算法,可以自行百度