最新2021自动化测试面试宝典1000题
Posted 软件测试自动化测试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最新2021自动化测试面试宝典1000题相关的知识,希望对你有一定的参考价值。
一、python 篇
python 笔试题-1
前言
现在面试测试岗位,一般会要求熟悉一门语言(python/java),为了考验求职者的基本功,一般会出 2 个笔试题,这些题目一般不难,主要考察基本功。要是给你一台电脑,在编辑器里面边写边调试,没多大难度。主要是给你一张纸和笔,让你现场写出来,那就没那么容易了。(本篇代码都是基于 python3.6)
全套题在博主的资源免费下载的
- 统计
统计在一个队列中的数字,有多少个正数,多少个负数,如[1, 3, 5, 7, 0, -1,
-9, -4, -5, 8]
方法一
# coding:utf-8
a = [1, 3, 5, 7, 0, -1, -9, -4, -5, 8]
# 用列表生成式,生成新的列表b = [i for i in a if i > 0]
print("大于 0 的个数:%s" % len(b))
c = [i for i in a if i < 0]
print("小于 0 的个数:%s" % len(c)) 方法二
# coding:utf-8
a = [1, 3, 5, 7, 0, -1, -9, -4, -5, 8]
# 用传统的判断思维,累加m = 0
n = 0
for i in a:
if i > 0:
m += 1
elif i < 0:
n += 1
else:
pass
print("大于 0 的个数:%s" % m)
print("小于 0 的个数:%s" % n)
- 字符串切片
字符串 "axbyczdj",如果得到结果“abcd” 方法一
# 字符串切片
a = "axbyczdj" print(a[::2])
方法二 # 传统思维
a = "axbyczdj"
c = []
for i in range(len(a)): if i % 2 == 0:
c.append(a[i])
print("".join(c))
- 字符串切割
已知一个字符串为“hello_world_yoyo”, 如何得到一个队列["hello","world","yoyo"]
a = "hello_world_yoyo" b = a.split("_") print(b)
格式化输出
已知一个数字为 1,如何输出“0001” a = 1
print("%04d" % a)
- 队列
已知一个队列,如: [1, 3, 5, 7], 如何把第一个数字,放到第三个位置,得到:
[3, 5, 1, 7]
a = [1, 3, 5, 7]
# insert 插入数据a.insert(3, a[0])
print(a[1:])
- 交换
已知 a = 9, b = 8,如何交换 a 和b 的值,得到 a 的值为 8,b 的值为 9 方法 1
a = 8
b = 9
a, b = b, a print(a) print(b)
方法 2
a = 8
b = 9
# 用中间变量 c c = a
a = b b = c
print(a) print(b)
- 水仙花
打印出 100-999 所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字
立方和等于该数本身。例如:153 是一个"水仙花数",因为 153=1 的三次方+ 5 的三次方+3 的三次方。
sxh = []
for i in range(100, 1000): s = 0
m = list(str(i)) for j in m:
s += int(j)**len(m) if i == s:
print(i) sxh.append(i)
print("100-999 的水仙花数:%s" % sxh)
- 完全数
如果一个数恰好等于它的因子之和,则称该数为“完全数”,又称完美数或完备数。 例如:第一个完全数是 6,它有约数 1、2、3、6,除去它本身 6 外,其余
3 个数相加,
1+2+3=6。第二个完全数是 28,它有约数 1、2、4、7、14、28,除去它本身 28 外,其余 5 个数相加,1+2+4+7+14=28。
那么问题来了,求 1000 以内的完全数有哪些? a = []
for i in range(1, 1000): s = 0
for j in range(1, i):
if i % j == 0 and j < i: s += j
if s == i:
print(i) a.append(i)
print("1000 以内完全数:%s" % a)
- 排序
用 python 写个冒泡排序
a = [1, 3, 10, 9, 21, 35, 4, 6]
s = range(1, len(a))[::-1] print(list(s)) # 交换次数
for i in s:
for j in range(i):
if a[j] > a[j + 1]:
a[j], a[j + 1] = a[j + 1], a[j]
print("第 %s 轮交换后数据:%s" % (len(s)-i+1, a)) print(a)
- sort 排序
已知一个队列[1, 3, 6, 9, 7, 3, 4, 6]
-
- 按从小到大排序
- 按从大大小排序
- 去除重复数字
a = [1, 3, 6, 9, 7, 3, 4, 6]
# 1.sort 排序,正序a.sort()
print(a)
# 2.sort 倒叙a.sort(reverse=True) print(a)
# 3.去重
b = list(set(a)) print(b)
python 笔试题(递归)-2
前言
本篇继续收集一些常见的 python 笔试题,以基础知识为主,递归是面试最喜欢考的一个问题,不管是做开发还是测试,都无法避免考递归。本篇结合实际案例, 讲下几种关于递归的场景。
全套在博主的资源里面免费下载哦
计算n 的阶乘
计算 n!,例如 n=3(计算 321=6), 求 10!
方法 1:可以用 python 里面的 reduce 函数,reduce() 函数会对参数序列中元素进行累积。
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
from functools import reduce
# 方法 1:推荐!
a = 10
b = reduce(lambda x, y: x*y, range(1, a+1))
print(b)
如果不想用 lamdba 函数,可以定义一个函数
from functools import reduce
def chengfa(x, y): return x*y
a = 10
b = reduce(chengfa, range(1, a+1)) print(b)
方法 2:自己写个递归函数
def digui(n): if n == 1:
return 1
else:
return n*digui(n-1)
a = 10
print(digui(a))
方法 3:用 for 循环(不推荐!)
a = 10
s = 1
for i in range(1, a+1): s = s*i
print(s)
斐波那契数列
已知一个数列:1、1、2、3、5、8、13、。。。。的规律为从 3 开始的每一项都
等于其前两项的和,这是斐波那契数列。求满足规律的 100 以内的所以数据
a = 0
b = 1
while b < 100: print(b, end=",") a, b = b, a+b
幂的递归
计算 x 的 n 次方,如:3 的 4 次方 为 3*3*3*3=81
def mi(x, n):
'''计算x 的 n 次方''' if n == 0:
return 1
else:
return x*mi(x, n-1)
x = 3
num = 4 print(mi(x, num))
汉诺塔问题
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着 64 片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘
当只有一个盘子的时候,只需要从将 A 塔上的一个盘子移到 C 塔上。
当A 塔上有两个盘子是,先将 A 塔上的 1 号盘子(编号从上到下)移动到 B 塔上, 再将 A 塔上的 2 号盘子移动的 C 塔上,最后将 B 塔上的小盘子移动到 C 塔上。当A 塔上有 3 个盘子时,先将 A 塔上编号 1 至2 的盘子(共 2 个)移动到 B 塔上
(需借助 C 塔),然后将 A 塔上的 3 号最大的盘子移动到 C 塔,最后将 B 塔上的两个盘子借助 A 塔移动到 C 塔上。
当 A 塔上有 n 个盘子是,先将 A 塔上编号 1 至n-1 的盘子(共 n-1 个)移动到 B 塔上(借助 C 塔),然后将 A 塔上最大的 n 号盘子移动到 C 塔上,最后将 B 塔上的n-1 个盘子借助 A 塔移动到 C 塔上。
综上所述,除了只有一个盘子时不需要借助其他塔外,其余情况均一样(只是事件的复杂程度不一样)。
def hanoi(n, a, b, c):
'''汉诺塔问题''' if n == 1:
print(a, '-->', c) else:
hanoi(n - 1, a, c, b)
print(a, '-->', c)
hanoi(n - 1, b, a, c)
hanoi(5, 'A', 'B', 'C')
一般汉诺塔问题不会经常考,前面几个考的比较频繁
python 编程题-3
有写公司会要求能写一小段程序出来,如题:
写一个小程序:控制台输入邮箱地址(格式为 username@companyname.com), 程序识别用户名和公司名后,将用户名和公司名输出到控制台。
要求:
- 校验输入内容是否符合规范(xx@yy.com), 如是进入下一步,如否则抛出提示"incorrect email format"。注意必须以.com 结尾
- 可以循环“输入--输出判断结果”这整个过程
- 按字母 Q(不区分大小写)退出循环,结束程序
import re
# 判断邮箱.com 结尾
def is_mail_style(x):
a =
re.match(r'^[0-9a-zA-Z\\_\\-]*@[0-9a-zA-Z]+(\\.com)$', x) if a:
yhm = re.findall("^(.+?)@", x)
print("用户名:%s " %yhm[0])
gc = re.findall("@(.+?)\\.com", x)
print("公司名:%s " %gc[0]) return True
else:
print("incorrect email format") return False
a = input("请输入:")
while 1:
if a == "q" or a == "Q":
exit() else:
if is_mail_style(a): break
a = input("请输入:")
print("下一步!")
python 编程 4-遍历文件
如何遍历查找出某个文件夹内所有的子文件呢?并且找出某个后缀的所有文件
# coding:utf-8
import os
def get_files(path='D:\\\\xx', rule=".py"): all = []
for fpathe,dirs,fs in os.walk(path): # os.walk 是获取所有的目录
for f in fs:
filename = os.path.join(fpathe,f)
if filename.endswith(rule): # 判断是否是"xxx"
结尾
all.append(filename)
return all
if name == " main ":
b = get_files(r"D:\\test\\python2") for i in b:
print(i)
全套面试资料在博主的资源免费下载的哦1000道
感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
① 2000多本软件测试电子书(主流和经典的书籍应该都有了)
② 软件测试/自动化测试标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python编程语言、API接口自动化测试、web自动化测试、App自动化测试(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
在我的QQ技术交流群里(技术交流和资源共享,广告进来腿给你打断)
可以自助拿走,群号953306497(备注“csdn111”)群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。
以上是关于最新2021自动化测试面试宝典1000题的主要内容,如果未能解决你的问题,请参考以下文章