1.1、概述
在python的面向对象中,利用new方法创建对象, 然后把这个创建的对象传递到init函数中,以第一个参数进
1.2、详细描述
1.3、应用场景
2.1、概述lambda 创建匿名函数的语法。 pass 空语句。
2.2、详细描述
1、pass的作用不做任何事情,一般用做占位语句, 为了保证程序的完整性。
2.3、应用场景
3.1、概述is 比较 的是两个实例对象是不是同一个对象,也就是说这两个对象的地址,通过id()函数可以获取,是不是相同。 == 比较的是两个实例对象的值是否相等,比较的是内存中存放的内容,可以不是同一个对象,只要内容一样就可以了。
3.3、应用场景
is常用的地方是: 和None值进行比较 a is None 或者 a is not NoneNone 在 Python 语言中是一个单例对象, 如果你要判断某个变量是否为 None 时,记得使用 is而不是 ==,因为只有 is才能在严格意义上表示某个变量是否是 None。
1.1、概述:
分别代表元组和字典的两种形式, 他们可以作为形式参数存在也可以作为实际参数存在。作为形式参数存在被称为打包,作为实际参数存在被称为拆包
1.2、详细描述:
作为形式参数(打包):将位置的实际参数打包到元组中, 将关键字的实际参数打包到字典中。
def 函数名字(*args): #打包位置实际参数放在元组中
pass
函数名字(实际参数1,实际参数2)
def 函数名字(**kwargs): # 打包关键字实际参数放在字典中
pass
函数名字(关键字1=实际参数1,关键字2=实际参数2)
作为实际参数(拆包): 将元组或者字典展开作为实际参数传给形式参数:
def 函数名字(形式参数1,形式参数2):
pass
元组 = (数据1,数据2)
函数名字(*元组) #将元组中的元素一一对应传递给形式参数
def 函数名字(name,age):
pass
字典 = {name:数据1,age:数据2}
函数名字(**字典) #将字典中的元素按照键一一对应传递给形式参数
1.3、应用场景:
在实现装饰器时,为了可以对任意的函数都能进行装饰, 内置的闭包函数就会用*args,**kwargs来处理。
定义未知个数的形式参数。
2.1、概述:
filter() 函数用于过滤序列,过滤掉不符合条件的元素, 返回由符合条件元素组成的新列表。
map() 会根据提供的函数对指定序列做映射
reduce() 函数会对参数序列中元素进行累积。
2.2、详细描述:
filter()函数
1.语法:
filter(function, iterable)
该接收两个参数,第一个为函数,第二个为序列, 序列的每个元素作为参数传递给函数进行判,然后返回True 或 False,最后将返回 True 的元素放到新列表中。
2.案例: 得到列表中的奇数
def is_odd(n):
return n % 2 == 1
newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
for n in newlist:
print(n)
1.语法:
map(function, iterable, …)
第一个参数 function 以参数序列中的每一个元素调用 function 函数, 返回包含每次 function 函数返回值的新列表。
1.语法:
reduce(function, iterable[, initializer])
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作: 用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素 进行操作, 得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。python3中将 reduce 放在functools模块中了
2.3、应用场景:
面试题: 分别使用map, reduce,filter函数完成下面的任务
1、计算1-100的和
from functools import reduce
result = reduce(lambda x, y: x + y, range(1, 101))
print(result)
2、1-10,对每个数字的平方
result = map(lambda x:x**2,range(1,11))for n in result:print(n)
result = filter(lambda x: “c” in x, {“a”, “ab”, “abc”, “bc”, “cd”})for n in result:print(n)
3、Python的可变类型和不可变类型包含哪些?
3.1、概述:
可变类型 包含: 列表(List)、字典(Dict)、集合(Set)。
不可变类型 包含: 字符串(String)、 整数(int)、小数(Float) 布尔(Bool)、元组(Tuple)
3.2、详细描述:
3.2.1可变数据类型的特点
里面的值发生改变时不会新生成一个变量.内存地址不变. 因为改变的数据会发生在内存中.
3.2.2不可变数据类型的特点
只要值发生了改变.就会重新开辟一个内存空间. 内存地址也发生了改变, 如果元组中的元素是可变数据类型, 该元素中的值是可以改变的。
values = (“张飞”, [“刘备”])
values[1][0] = “刘玄德”
print(values) #(‘张飞’, [‘刘玄德’])
答:
super 用于继承父类的方法、属性。super 是新式类中才有的,所以 Python2 中使用时,要在类名的参数中写 Object。Python3 默认是新式类,不用写,直接可用。 使用 super 可以提高代码的复用性、可维护性。修改代码时,只需修改一处。代码举例:
答:所有的结果都是生成器表达式, 不调用它,不从里面取值,就不干活。附上我的推导过程:
答:HTML、JavaScript 代码
Vue 代码编写:
答:list(set(L))、
答:空列表(当时有点紧张, 一直在“空列表”和“索引超出范围”两个答案之间徘徊)。
答:注意,个人觉得这个题有坑,列表的元素不是字符串,所以不能 ‘’.join(L) 。
以下是过程:
答:一般都是问列表和元组有什么不同。 (1)获取元素的方式不同。列表通过索引值获取,字典通过键获取。 (2)数据结构和算法不同。字典是 hash 算法,搜索的速度特别快。 (3)占用的内存不同。
答:(1)调用 terminate 方法。 (2)使用 subProcess 模块的 Popen 方法。使用简单,具体用法,这里不展开。
答:(1)区别:
① 地址空间和其它资源(如打开文件):进程之间相互独立,同一进程的各线程之间共享。某进程内的线程在其它进程不可见。 ② 通信:进程间通信 IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。③ 调度和切换:线程上下文切换比进程上下文切换要快得多。④ 在多线程操作系统中,进程不是一个可执行的实体。 (2)使用场景:同时操作一个对象的时候,比如操作的是一个全局变量,我用线程,因为全局变量是所有线程共享的。
答:
ORM 框架可以将类和数据表进行对应,只需要通过类和对象就可以对数据表进行操作。通过类和对象操作对应的数据表,类的静态属性名和数据表的字段名一一对应, 不需要写 SQL 语句。ORM 另外一个作用,是根据设计的类生成数据库中的表。11、写一段代码,ping 一个 ip 地址,并返回成功、失败的信息。
答:使用 subProcess 模块的 Popen 方法(使用简单,具体用法,这里不展开)。
答:(1)流程:获取接口文档, 依据文档设计接口参数,获取响应,解析响应,校验结果,判断测试是否通过。 (2)request 内容:
答:Selenium Grid。
答:守护精灵,和 Python 并发编程中的 daemon 原理一样,父进程/父线程的代码执行完毕,它就终止, 要写在 start 方法前面。另外,要找到配置文件,注释掉两行代码。
答:一口气,劈里啪啦说了 10 多个。
答:用的不深入,说了基本操作,比如定时构建执行代码。
答:小步快跑,拥抱变化。测试中, 可以通过行为驱动测试,有个框架 lettuce 可以用。
答:了解,没用过。然后说了下对 Docker 大概的认识、优势。
答:此处省略 n 个字。
答:此处省略 n 个字。
答:此处省略 n 个字。
答:此处省略 n 个字。
在自动化测试、测试开发岗面试中,编程知识、Linux 都是必问的。测试开发人员的知识面既要有一定的广度,同时还要有扎实的编码基础。
路漫漫其修远兮,我还有很长的路要走。接下来的规划,进一步提升自己的实力。整理不易还请动动发财手点个赞哦 ~~
我整理了一份216页软件测试大厂面试题,以及2021推荐最新的简历模板,送给小伙伴们,关注公众号软件测试小dao自行领取,和一些小伙伴建立一个技术交流群,一起探讨技术,分享技术资料,旨在共同学习进步,如果感兴趣就加入我们吧!1033482984
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!