title: "中高级测试面经"
date: 2021-02-17T18:55:09+08:00
draft: true
tags: ['python']
author: "dadigang"
author_cn: "大地缸"
personal: "http://www.real007.cn"
关于作者
金三银四,中高级测试面经,我不信你能看完!
面经
1个
点击上方蓝色“清菡软件测试”,关注并选择“设为星标”
要坚持啊!
作者:清菡
不会的东西很多,要学习的东西很多。想学的太多,但是行动力太少。心情像天上的云起伏不定,心情好的时候,文章就出来了。正是因为必须要学的东西太多,那么就一定要抓住重点,先学什么,后学什么,要分清主次。二十多岁的精力是有限的,已然没有太多时间去抱怨纠结,更何况你是个健康的人。一直对自己的要求很高,身边人对我的期待也高,小伙伴们需要的源码、视频后续都会有,不要着急,保质保量。新的一年,希望大家都快乐一些。
写在前面
又到了金三银四跳槽季,很多小伙伴出去面试时,会问到 Python 相关知识,接口自动化,Web 自动化相关知识,有些小伙伴心里是知道答案的,但是回答得却不是很完美,归根结底,就是对知识点理解得不够透彻。今天整理了下常问问题,请耐心看完!注:求人不如求已,切记学会靠自己!!!
1.什么是 Python 垃圾回收机制?
没用的东西就是垃圾。在程序中,没被引用的对象就是垃圾。这种垃圾对象过多以后会影响到程序的运行的性能,所以必须进行垃圾回收。所谓的垃圾回收就是将垃圾对象从内存中删除。
在 Python 中有自动的垃圾回收机制,自动将没有被引用的对象删除。所以我们不用手动处理垃圾回收。
class A: def __init__(self): self.name="A类"# del是一个特殊方法,它会在对象被垃圾回收前调用。写出来这个方法的目的是:通过这个方法可以让你肉眼看到垃圾对象被回收。 def __del__(self): print("A()对象被删除了~",self)a=A()b=a #又使用一个变量b,来引用a对应的对象。print(a.name)# a=None#将a设置为了None,此时没有任何的变量对A()对象进行引用,它就是变成了垃圾#del a #删除的不是对象,删除的是变量# del binput("回车键退出....")
当你敲回车程序结束的时候,这些对象也会被自动删除。
需要把链接复制到百度打开视频:https://haokan.baidu.com/v?vid=409577335351076379&pd=bjh&fr=bjhauthor&type=video
2.where 和 having 有什么区别?
having
和where
都是用来筛选用的,having
是筛选组,where
是筛选记录。区别:
- 1.当分组筛选的时候用
having
- 2.其它情况用
where
用having
就一定要和group by
连用,用group by
不一定有having
。
需要把链接复制到百度打开:https://blog.csdn.net/yexudengzhidao/article/details/54924471
3.什么是左连接、右连接?
left join
:左连接,是以左表为基础,根据 on 后给出的两表条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出 on 后条件与左表满足的部分。左连接全称为左外连接,是外连接的一种。
right join
:右连接,是以右连接为基础,根据 on 后给出的两表的条件将两表连接起来。结果会将右表所有的查询信息列出,而左表值列出 on 后条件与右表满足的部分。右连接全称为右外连接,是外连接的一种。
inner join
:内连接,同时将两表作为参考对象,根据 on 后给出的两表的条件将两表连接起来。结果则是两表同时满足 on 后的条件的部分才会列出。
mysql 中没有全外连接。
图片来自网络,画的特别好。哈哈哈
把链接复制到百度打开:http://blog.sina.cn/dpool/blog/s/blog_161231e190102wqog.html
4.linux 直接查看某个进程的占用端口号?
第一步,查询进程关键字为 xinetd(TFTP 服务程序)
ps -aux|grep [name]
例如:ps -aux|grep xinetd
图片来自网络
这样就查询到了 pid。第二步,使用 netstat 命令查询端口占用。netstat -nap|grep [pid]
例如:netstat -nap|grep [15770]
图片来自网络
查询到占用的端口号为 69。
5.Python 的数据类型是哪些?
int
类、布尔值:bool
类、字符串:str
类、列表:list
类、元组:tuple
类、字典:dict
类、集合:set
类。
靠谱链接:https://www.cnblogs.com/littlefivebolg/p/8982889.html
这个链接需要复制到百度才能打开。
6.解释下 Python 列表推导式?
7.Python 的字典、列表、集合、元组有什么区别?
列表: 有序、可读写、元素可修改、列表用[]
、能通过下标访问。
元组: 有序、只读、元素不可修改、元组用()
、能通过下标访问。
集合: 无序、可读写、元素不可修改、不能通过下标访问、用{}
表示。
字典: 无序、可读写、元素可修改、能通过下标访问、用{}
表示。
元组和列表相比,比列表操作速度快,元组占用内存少。
字典和列表比较,字典查找和插入的速度快,占用大量内存。
靠谱链接:https://www.jianshu.com/p/5ede7fa96d83
这个链接需要复制到百度才能打开。
8.App 从后台唤起 Activity 经历的阶段?
running 运行:在屏幕前台(位于当前任务堆栈的顶部)
paused 暂停:失去焦点但仍然对用户可见(覆盖 activity 可能是透明或未完全遮挡)
stopped 停止:完全被另一个 activity 覆盖
destroyed 销毁:退出,完全销毁图片来自网络
这个链接需要复制到百度才能打开。
9.网页兼容性测试如何去做?
不同的操作系统平台,浏览器,以及分辨率进行测试。
靠谱链接:https://blog.csdn.net/qq_39247153/article/details/88963809
这个链接需要复制到百度才能打开。
10.Jenkins 如何写脚本配置不同得 job?
靠谱链接:https://www.cnblogs.com/herui1991/p/12657809.html
这个链接需要复制到百度才能打开。
11.Web 自动化的三种等待的区别是啥?
1.强制等待。 不常用。
sleep(秒)
2.隐性等待。 不常用。
适用条件是查找元素和等待命令的执行完成。
implicitly_wait(秒)
如果单位是 30 秒,不会傻等 30 秒,如果你在 30 秒内找到了一个元素,比如第 15 秒找到了,那么后面 15 秒就不再等了,在找到的时候就马上去执行下一步,所以是种智能等待方式。
只要在这个时间上限之内,这个元素出现了,什么时候出现就什么时候不再等待。如果超过 30 秒还没有出现,就会抛出异常“TimeoutExceiption”,提示等待超时了,元素至今还没有出现。但是它是整个会话周期有效的。
3.必须掌握"显性等待"
WebDriverWait(driver,等待时长,轮循周期).until()/until_not()
明确提出到底要等什么,这个就叫做显性,非常明显的条件。
明确等到某个条件满足后,再去执行下一步。
第一部分是等待,第二部分是条件。
等待:
由两个东西来完成,第一个是WebDriverWait
类,它是个显性等待类,这个类中处理的事有什么呢?
WebDriverWait
类初始化的条件:
driver
:第一个是会话对象,就是说它要知道在哪个会话基础上去等待什么样的条件完成,知道是在哪个页面。
等待时长:也就是最多等多少秒,例如等 20 秒,20 秒以内,啥时候出现都不成问题。
轮循周期:是多久去看一次,比如轮循周期是 1 秒钟,就是每一秒去看下这个条件是否成立。
如果它每隔多少秒去看了下,最终在你等待的时限之内,还没有找到一样的,会报TimeoutException
。
条件:
until()
until
是直到某某某条件成立,条件写在()
里面的。
直到什么条件成立,等到这个条件成立,until_not()
就是等到这个条件不成立,直到找不到某个元素为止,直到页面没有哪个元素。
12.手写冒泡排序
a=[1,7,4,89,34,2]for i in range(0,len(a)-1): # 循环第i趟 for j in range(0,len(a)-1): #j为下标 if a[j]>a[j+1]: # 如果这个数大于后面的数,就交换两者的位置 a[j],a[j+1]=a[j+1],a[j] print(a)#每一趟比较完了就打印一次print(a)#打印最后一趟的结果"""for i in range(1,len(a)):代表循环i趟,a=[1,7,4,89,34,2]里面六个元素.0,len(a)-1代表0 1 2 3 4 5那么就是6趟for j in range(0,len(a)-1):中j为下标,那么0就代表a=[1,7,4,89,34,2]里面六个元素中的1,因为从0开始的下标,所以减1得到的才是最后一个元素。如果不减1,那么就多了一个元素的位置,但是里面只有六个元素,没有七个元素。"""
13.手写斐波那契数列
a=0b=1while b<10: print(b,end=',') a,b=b,a+b