软件测试 | 测试开发 | 测试人生 | (汇总篇)从小团队的业务到独角兽的测开,涨薪超过60%,90后凤凰涅槃了

本文为霍格沃兹测试学院优秀学员跳槽笔记,测试开发进阶学习文末加群。

作为七年的测试老鸟,做过几年外包,也做过自研项目,目前在一家电商小团队做业务功能测试,涉及一点压力测试,只是配合开发写jmeter脚本,资源分析和问题定位都是开发主导。总体来说,自己缺乏自动化和python语言能力,想在这方面提升自己。不甘点点点的业务功能测试,想提升自己的技能,拿高薪。当初也想过自己学习,但是遇到以下几个问题,第一自觉性。第二,一个人学习很枯燥,没有学习氛围。第三,不是系统性学习,知识点很凌乱,成长很慢。在百度找到的咱们学院,也对比了其他几家培训机构,看了咱们学院的课程安排,和试听课,觉得干货满满,比较合适我最后就报名了。现在已经拿到了某知名企业的高薪offer,涨薪超过60%。因面试题内附答案,所以篇幅很长分为多篇文章来发。今天是最后一篇啦~前三篇文章已为您准备好了~第一天:测试人生|从小团队的业务到独角兽的测开,涨薪超过60%,90后小哥哥凤凰涅槃了第二天:测试人生|从小团队的业务到独角兽的测开,涨薪超过60%,90后小哥哥凤凰涅槃了第三天:测试人生|从小团队的业务到独角兽的测开,涨薪超过60%,90后小哥哥凤凰涅槃了

面试真题之python面试题

软件测试 | 测试开发 | 测试人生 | (汇总篇)从小团队的业务到独角兽的测开,涨薪超过60%,90后凤凰涅槃了_第1张图片

1、python装饰器,作用,用法

python的装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。简单的说装饰器就是一个用来返回函数的函数。
它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。
概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。

什么是装饰器语法糖?

python提供了@符号作为装饰器的语法糖,使我们更方便的应用装饰函数。但使用语法糖要求装饰函数必须return一个函数对象

软件测试 | 测试开发 | 测试人生 | (汇总篇)从小团队的业务到独角兽的测开,涨薪超过60%,90后凤凰涅槃了_第2张图片

2、python的垃圾回收机制?

Python中的垃圾回收机制中有三部分内容:“引用计数”、“标记-清除”、“分代回收”

3、python中类方法,类实例方法,静态方法的区别

实例方法:由对象调用;至少一个self参数;执行普通方法时,自动将调用该方法的对象赋值给self;类方法:由类调用;至少一个cls参数;执行类方法时,自动将调用该方法的类复制给cls;
静态方法:由类调用;无默认参数;

4、dict和tuple及list的区别(这里列的是主要区别,面试足够)

tuple是不可变对象,list和dict都是可变对象,这里的不可变指的是指向地址不可变list是有序的,dict是无序的,不可存放有序集合
dict查找速度快,不管有多少个元素时间都一样,list查找速度慢,需要有序查找dict的key为不可变对象,且不可重复,list则可以重复,存放任意对象

5、json和dict的区别

json是一种数据格式,纯字符串。dict是一种完整的数据结构dict是一个完整的数据结构,是对HashTable这一数据结构的一种实现,是一套从存储到提取都封装好了的方案。它使用内置的哈希函数来规划key对应value的存储位置,从而获得O(1)的数据读取速度。
json的key只能是字符串,python的dict可以是任何可hash对象(不可变对象)json的key可以是有序、可重复的;dict的key不可重复,且无序。
json任意key存在默认值undefined,dict默认没有默认值json访问方式可以是,也可以是.,遍历方式分in、of;dict的value仅可以下标访问
dict可以嵌套tuple,json里只有数组

6、python会不会出现内存泄漏,为什么

当对象之间互相引用的时候再删除的时候,可能会造成无法释放对象的情况,出现泄漏上面为个人了解,如有其它请补充

7、python的同步和异步

直接得到最终结果的结果,就是同步调用。不直接得到的最终的结果,就是异步调用。
同步与异步区别在于:调用者是否得到了想要的最终结果。

8、常见手撕代码

软件测试 | 测试开发 | 测试人生 | (汇总篇)从小团队的业务到独角兽的测开,涨薪超过60%,90后凤凰涅槃了_第3张图片

面试真题之数据库

1、mysql删除语句有哪些?
1)drop语句,用来删除数据库和表:例子【dropdatabasedb;droptabletb】、
2)delete语句,用来删除表中的字段:例子【deletefromtbwhereid=1】
3)用truncate来删除表中的所有字段:例子【truncatetabletb】

2、数据库事务、主键与外键的区别?

数据库的事务:事务即用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位,它具有四个特性,ACID,原子性,一致性,隔离性,持续性
主键和外键的区别:
1、主键是能确定一条记录的唯一标识,不能重复,能唯一确定该条数据;
2、外键用于与另一张表的关联,是能确定另一张表记录的字段,用于保持数据的一致性

3、工作中常使用的SQL语法有哪些?

createtable、createview、selectfromwhere、insertinto、updatesetvalues、delete、alter、orderby、having

4、数据库存储过程

一组数据库操作命令,当作是自己写的一个方法,一系列步骤自己去封装(个人理解)

5、SQL常见查询语句编写(此处仅举例常见的查询语句,如有更多坑,希望补充)

查询所有学生的数学成绩,显示学生姓名name,分数,由高到低。SELECTa.name,b.scoreFROMstudenta,gradebWHEREa.id=b.idANDkemu=‘数学’ORDERBYscoreDESC;统计每个学生的总成绩(由于学生可能有重复名字),显示字段:学生id,姓名,总成绩。SELECTa.id,a.name,c.sum_scorefromstudenta,(SELECTb.id,sum(b.score)assum_scoreFROMgradebGROUPBYid)cWHEREa.id=c.idORDERBYsum_scoreDESC;
列出各门课程成绩最好的学生,要求显示字段:学号,姓名,科目,成绩SELECTc.id,a.name,c.kemu,c.scoreFROMgradec,studenta,(SELECTb.kemu,MAX(b.score)asmax_scoreFROMgradebGROUPBYkemu)tWHEREc.kemu=t.kemuANDc.score=t.max_scoreANDa.id=c.id

6、慢查询是什么意思?

开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。

7、导致数据库性能差的可能原因有哪些?

硬件环境问题,如磁盘IO查询语句问题,如join、子查询、没建索引
索引失效,建了索引,查询的时候没用上查询关联了太多的join
服务器关联缓存,线程数等表中存在冗余字段,在生成笛卡尔积时耗费多余的时间

8、redis缓存应用场景

需要将数据缓存在内存中,提升查询效率本人没经验,希望补充

9、怎么定位redis缓存失效问题(缓存坏了)

不知道,看不懂

面试真题之Linux&&Shell

1、介绍Linux管道?

举例:ls-a|grepmysql说明:就是把前一个命令的结果当成后一个命令的输入。结合本例就是先显示所有的文件,然后再用grep命令在ls的结果中查找包含mysql的文件

2、工作中常用的Linux命令有哪些?

awk、sed、vim、iotop、dstat、cp、top、ifconfig、pwd、cd、ll、ls、cat、tail、grep、mv、rm、mkdir、df、du

3、什么命令可以帮助Linux执行Windows上传的脚本

改变编码格式vimtest.sh
:setff?//显示dos的话:setff=unix:wq

4、简述linux三剑客

grep命令:根据用户指定的模式pattern对目标文本进行过滤,显示被模式匹配到的行,grep[options]pattern[file],常用参数:
-v显示不被pattern匹配到的行-i忽略字符的大小写
-n显示匹配的行号-c统计匹配的行数
-o仅显示匹配到的字符串-E使用ERE,相当于egrep(可以识别更多的正则表达式规则)
sed:流编辑器,用来处理一行数据。将一行数据存储在模式空间中->用sed命令处理->送入屏幕->清空空间,常用参数:
-h显示帮助-n仅显示script处理后的结果
-e指定的脚本来处理输入的文本文件-f以指定的脚本文件来处理
常用动作
a:新增sed-e‘4anewline’c:取代sed-e‘2,5cNo2-5number’
d:删除sed-e‘2,5d’i:插入sed-ed‘2inewline’
p:打印sed-n‘/root/p’s:取代sed-e‘s/old/new/g’
g:代表全局
awk:把文件逐行的读入,以空格为默认分隔符将每行切片。把行作为输入,并赋值给$0->将行切段,从$1开始->对行匹配正则/执行动作->打印内容,awk‘pattern+action’[filenames],常用语法:
filenameawk浏览的文件名begin处理文本前要执行的操作
end处理文本之后要执行的操作fs设置输入域分隔符,等价于命令行-F选项
nf浏览记录的域的个数(列数)nr已读的记录数(行数)
常用参数
ofs输出域分隔符ors输出记录分隔符
rs控制记录分隔符,换行标志$0整条记录
$1第一条分隔后的记录

5、如何通命令定位Linux服务器下的日志?

如果要监控日志,那么使用tail-f|grepxxx命令,过滤需要的字段如果在完整日志中查看内容,使用catxxx.log|grepxxxx|awk’{print$1}'等命令过滤自己需要的内容

6、简述项目中的环境搭建和维护

结合自身经验先从系统安装开始,如常用的centos和Ubuntu说起,系统安装主要是磁盘分区和磁盘阵列问题基础环境依赖,如MySQL、Redis、jenkins、docker、项目中用到的其他依赖环境等
维护方便主要从遇到的错误说起,如无法远程连接、服务器加固等

面试真题之计算机网络

1、七层模型有哪些,分别有哪些协议?

1)应用层包含的主要协议:
FTP(文件传送协议)、
Telnet(远程登录协议)、
DNS(域名解析协议)、
SMTP(邮件传送协议),
POP3协议(邮局协议),
HTTP协议(HyperTextTransferProtocol)
2)表示层
3)会话层
4)传输层
包含的主要协议:
TCP协议(TransmissionControlProtocol,传输控制协议)、
UDP协议(UserDatagramProtocol,用户数据报协议);
重要设备:网关
5)网络层
包含的主要协议
IP协议(InternetProtocol,因特网互联协议);
ICMP协议(InternetControlMessageProtocol,因特网控制报文协议);
ARP协议(AddressResolutionProtocol,地址解析协议);
RARP协议(ReverseAddressResolutionProtocol,逆地址解析协议)
6)数据链路层
数据链路层为网络层提供可靠的数据传输
主要的协议:以太网协议
基本数据单位为:帧
两个重要设备名称:网桥和交换机
7)物理层
中继器(Repeater,也叫放大器)和集线器

2、HTTP网络请求返回码分别表示?

1xx(临时响应)2xx(成功)
3xx(重定向)4xx(请求错误)5xx(服务器错误)

3、输入url到网页显示出来的全过程

输入网址DNS解析
建立tcp连接客户端发送HTTP请求
服务器处理请求服务器响应请求
浏览器展示HTML浏览器发送请求获取其他在HTML中的资源。

4、http和https的区别

https里面是要有证书的,http并没有证书,证书的作用是证明你是这个网站的拥有者,谁去证明,最顶级的CA去帮你证明,这些顶级的CA都是浏览器、操作系统本身就自动帮你集成,而且自动添加到设置信任里面去https要兼顾安全+性能的方面,由于对称式加密虽然速度很快,但是安全性特别的低,因为双方要规定对称式加密的秘钥,别人都无法知道,但你怎么能确保别人不知道你的秘钥呢,因此需要有非对称式加密去保证安全,但非对称式加密速度又很慢,如果客户端和服务器端都用非对称式加密,网络得卡死了。所以当双方建立好了非对称加密后,再约定一个随机数,等大家都非对称解密了之后呢,就拿到只有对方知道的唯一随机数(秘钥),就可以用秘钥来进行对称式加密和解密了

5、HTTP的报文结构

HTTP请求报文:一个HTTP请求报文由请求行、请求头部、空行和请求数据4个部分组成HTTP响应报文:HTTP响应也由三个部分组成,分别是:状态行、消息报头、响应正文

6、htt常见的响应状态码

200请求已成功,请求所希望的响应头或数据体将随此响应返回。201请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其URI已经随Location头信息返回
202服务器已接受请求,但尚未处理301(永久移动)请求的网页已永久移动到新位置。服务器返回此响应(对GET或HEAD请求的响应)时,会自动将请求者转到新位置。
302(临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。303(查看其他位置)请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码。
304(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。305(使用代理)请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。307(临时重定向)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
401当前请求需要用户验证。如果当前请求已经包含了Authorization证书,那么401响应代表着服务器验证已经拒绝了那些证书403服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交
404请求失败,请求所希望得到的资源未被在服务器上发现500服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。
501服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。502作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。

7、cookie和session机制的区别

cookies数据保存在客户端,session数据保存在服务器端;cookies可以减轻服务器压力,但是不安全,容易进行cookies欺骗;
session较安全,但占用服务器资源

8、TCP和UDP的区别

TCP:面向连接,可靠的,速度慢,效率低UDP:无连接、不可靠、速度快、效率高

9、TCP为什么是三次握手和四次挥手

三次握手能保证数据可靠传输又能提高传输效率。若握手是两次:如果只是两次握手,至多只有连接发起方的起始序列号能被确认,另一方选择的序列号则得不到确认。要保证双方都关闭了连接。因为TCP是全双工的,就是要等到两边都发送fin包确认双方都没有数据传输后才关闭

10、TCP为什么最后挥手后会有time_wait

为了保证可靠的断开TCP的双向连接,确保足够的时间让对方收到ACK包。若客户端回复的ACK丢失,server会在超时时间到来时,重传最后一个fin包,处于TIME_WAIT状态的client可以继续回复Fin包,发送ACK。保证让迟来的TCP报文段有足够的时间被识别和丢弃,避免新旧连接混淆。有些路由器会缓存没有收到的数据包,如果新的连接开启,这些数据包可能就会和新的连接中的数据包混在一起。连接结束了,网络中的延迟报文也应该被丢弃掉,以免影响立刻建立的新连接。

11、简要说明http请求中的post和get有哪些区别的地方

请求头多了content-length和content-type字段post可以附加body,可以支持form、json、xml、binary等各种数据格式
行业通用规范无状态变化的建议使用get
数据的写入与状态的修改建议使用post基于http协议:都是请求返回数据,get将请求体放在头上,只发一次请求,post将请求体放在内部,需要发送两次请求
GET在浏览器回退时是无害的,而POST会再次提交请求。GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。GET请求在URL中传送的参数是有长度限制的,而POST么有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

12、如果一个请求,返回的状态码是200,但是没有内容,可能发生了什么?

请求头缺失或错误参数length不符

面试真题之「灵魂拷问题」

1、自己的优点和缺点

避开岗位的核心技能把缺点放在场景中描述
对缺点进行合理化解释优点随便说,主要方向还是在岗位上

2、是否能接受加班,建议分情况作答

第一种情况:假设公司有重要的项目要赶。示范回答:贵公司现在正处于发展上升期,也在官网上有看到公司的重要项目成果,我觉得有时候因为赶项目进度、工作需要等忙起来是非常正常的,面对这种情况,我是非常愿意配合公司和团队的工作,让工作能够更顺利地完成,此外,我也相信自己一定能在公司安排的工作中获得到锻炼,获得更快地成长。第二种情况:假设自己作为新人,对业务不熟悉。示范回答:我作为公司刚进去的新人,可能刚开始进入公司接触业务时不太熟练,会出现需要加班的情况,但我更愿意提高工作效率,并积极向公司的前辈请教学习,在一定的时间内完成工作而不是拖到下班之后。当然,如果有紧急的事情,忙起来需要加班也是可以接受的。

3、薪酬的要求

薪资并不是我求职的唯一标准,我上家公司基本在A~B之间(建议合理提高,避免部分HR压价)我来贵司求职的主要动机是兴趣,这份工作是我喜欢做的,也相信自己可以胜任,更相信公司会给出一个合理的薪酬。
相比薪酬,我更在意的是收入,所以,我很愿意了解贵司的薪酬架构,可以简单介绍下吗?我希望薪资可以达到**,据我了解,贵司这个岗位薪资范围是A~B,而结合岗位职责及任职要求,我对自己也进行了相应评估,也愿意接受贵司的下一步考核。

4、未来5年的职业规划

自我认知。对自己是否了解,了解是不是靠谱。动机和价值观。你是否能接受我们并不一定能给你公平的职业发展机会这个现实?
组织承诺。你到底能在我们这踏实的干几年?

5、我们为什么要聘用你

描述应聘岗位的胜任条件,强调自己的工作能力和工作经验跟岗位的匹配度,岗位要求的工作技能是否自己掌握了,掌握的程度是怎样的,最好在面试中说出来。因此,在面试前最好是要针对应聘岗位,把自己胜任的条件一一列出来,做到知己知彼。可以谈论一下自己之前的工作情况,用成绩、用数据来说明自己的成就。描述自己能为公司做出什么贡献,公司是一个讲究利益的地方,聘用你肯定要你为公司做出贡献。那么你在回答这个问题时,就需要说出你的加入可以为公司带来什么,这非常重要。因此,一定要明确你的工作目标和职业规划,表明你的立场和专业程度,让HR信任你。
描述出自身的优势。公司为何要聘用你,而不聘用别人,肯定是你有比别人优秀的地方。那么在回答这个问题时,就一定要说出自己与众不同的地方,最好是要举一个例子,来支持你的观点。建立个人和公司的联系,HR想要得到一个怎样的答案呢?无非就是想通过这个问题,来进一步了解你各方面的信息,以及看看你为这次面试做了多少功课。那么在面试前,你最好是要尽可能获取有关公司可行业的资料信息。在回答的时候,结合自己所做的功课,建立个人和公司的联系,说明自己在哪一方面能够匹配公司的要求。HR看到你对应聘岗位这么了解,肯定会对你有好感。
说出你对这份工作的兴趣以及热情

6、对我们公司有多少了解

实时回答就好,知道多少就说多少,一般去面试对这个公司的了解都是从网上查到的,不会太深入

7、为什么愿意到我们公司

有所准备,了解公司个人目标要与公司目标一致
强调你能如何为公司提高价值

8、与领导意见不一致时,该如何处理

不要假设我已经完全的掌握了对这件事的认知。向领导询问确认自己有可能缺失的信息。要寻找对领导没有告知的信息,和领导不能透露的信息。不要假设领导已经完全的掌握了我对这件事的认知。检查一下,是否已经将事情的前因后果,自己对事情的理解,明确清晰的传达给了领导,以及,他是否真的已经明确了解。
在进行有效的认知沟通后,重新思考整件事情。如果意见还是有不一致,那么:
按领导要求执行。不理解,也执行,在执行中理解。执行过程中,收集反馈,不断调整,提升认知。
执行完成后,及时复盘,回顾决策和行动过程,沉淀知识。

9、缺乏工作经验,如何胜任这份工作

承认工作经验的重要性。这样能带给面试官的印象是:该位候选人认知能力较强,具有理性思维与客观公正的处事态度及判断能力,尤其是对于自己也能客观公正地看待,勇于承认自己的缺失。突显个人优势。用自己的其他优势特长来补足经验上的不足,比如说记忆力好、动手能力强、语言能力强、学习能力强等。
强调自己会不断提高工作能力。切忌用假大空的话,要用具体的与工作相关的事例或是数据来说明自己的学习力。

10、工作中与同事发生争执,如何处理

在沟通之前,做好充分的准备学会认知倾听,让别人把话说完
借用一些工具,来解决交流障碍

面试真题之反问面试官

1、职责

团队中初级和高级人眼如何平衡针对员工有哪些培训和提升计划

2、技术

公司内部的技术栈产品的架构
版本控制及迭代速度服务器管理权限,本机家算计管理权限

3、团队

团队内和团队之间如何沟通遇到了分歧如何解决
团队正在经历的尚未解决的挑战是什么绩效考核是如何算的

4、公司

晋升机会是否有自己的学习资源
假期,加班工资等过去半年最糟糕的一天是怎么样的
是什么让你来到并留在这里是否能够平衡工作与生活

你可能感兴趣的:(测试,测试开发,软件测试,python,开发语言)