自动化测试面试题

1:一行代码实现1--100之和

print(sum(list(range(1,101))))

2:如何在一个函数内部修改全局变量

  global  修改全局变量

         局部作用域只能调用全局作用域的变量,但是不熊修改全局作用域的变量,如果想要修改全局作用域的变量需要global一下

3:列出5个python标准库

  re

  sys

  time

  os

  random

  math

  datetime

  subprocess

4:字典如何删除键和合并两个字典

  del dict[key]  pop dict[key]    删除

  update  +  dict(dict1.items()+dict2.items())  +  dict(dict_a,dict_b)  

5:谈下python的GIL

  GIL 是python的全局解释器锁,

  同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),
  使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,
  则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行

  多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大

6:python实现列表去重的方法   先把列表转set集合,再转成list列表 

  set(list())

7:fun(*args,**kwargs)中的*args,**kwargs什么意思?
  *args, 可变数量参数  接收位置参数自动封装成元组
  **kwargs 关键字可变数量参数  接收关键字参数会自动封装成字典、

8:python2和python3的range(100)的区别
  python2返回列表,python3返回迭代器,节约内存

9:一句话解释什么样的语言能够用装饰器? 

  函数名可以当成参数传递的语言

10:python内建数据类型有哪些 

  int

  float

  str

  list

  set

  布尔

  ddictionary

  tuple元组

11:简述面向对象中__new__和__init__区别  

  __init__  参数self,构造函数,初始化方法,创建对象后,就立刻被默认调用了,可接收参数,

  __new__  参数cls,必须有返回值,py3默认继承父类object的new方法,类名实例化后会返回一个实例

  自己重构__new__方法的时候注意,一把需要把父类object的new函数生成的实例return出来

   __init__  的参数self,就是__new__返回的实例,实例化一个对象的时候__new__方法先调用

    调用后返回一个self实例, 

  如果__new__创建的是当前类的实例,会自动调用__init__函数,通过return语句里面调用的__new__函数的第一个参数是cls来保证是当前类实例,
    如果是其他类的类名,;那么实际创建返回的就是其他类的实例,其实就不会调用当前类的__init__函数,也不会调用其他类的__init__函数。

12:简述with方法打开处理文件帮我我们做了什么?   

    打开文件在进行读写的时候可能会出现一些异常状况,如果按照常规的f.open写法,我们需要try,except,finally,  

    做异常判断,并且文件最终不管遇到什么情况,都要执行finally f.close()关闭文件,

    with方法帮我们实现了finally中f.close

    open的话打开文件代码gg不会自动关闭文件,with open会

13:列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数,最终输出[16,25]    

list_a=[1,2,3,4,5]
res=map(lambda x:x**2,list_a)
rep=[i for i in res if i >10]
print(rep)

14:python中生成随机整数、随机小数、0--1之间小数方法

  random.random  随机返回0-1

  random.randint(1,10)  返回0-1随机小数

  np.random.randn(5)   返回5个随机小数

15:避免转义需要给字符串加哪个字母表示原始字符串?       r

16:<div class="nam">中国</div>,用正则匹配出标签里面的内容(“中国”),其中class的类名是不确定的 

  div class="nam">(.*?)</div>

17:python中断言方法举例

  assert

  assrtin

  assertnotin

  assertequal

  assertenotqual

  ssertTrue

  assertFalse

  assertIsNone

  assertIsNotNone

18:数据表student有id,name,score,city字段,其中name中的名字可有重复,需要消除重复行,请写sql语句

   select distinct name from student       distinct name  把搜索出来的neme数据distinct去重    

19::10个Linux常用命令 

  cat  vi  tail  header  echo  mkdir  netstat  touch  df

  clear  mount  ls  ll  cp

20:python2和python3区别?列举5个  

  1:print  2没括号,3有括号

  2:py3默认文件编码是utf8,默认字符集编码是unicode,py2默认ascll

  3:/  py3默认除法,py2默认乘除

  4:range(),map等内置函数,py3默认返回迭代器,py2默认返回列表

  5:py3类默认继承objct新式类,py2。7默认是经典类

  6:py3是input  py2是raw_input

21:列出python中可变数据类型和不可变数据类型,并简述原理

  可变:list列表,set集合,dictionary字典

  不可变:int  str  tuple元组

  不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,

    在内存中则只有一个对象(一个地址),如下图用id()方法可以打印对象的id

  允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,

    而不会新建一个对象,变量引用的对象的地址也不会变化,

22:s = "ajldjlajfdljfddd",去重并从小到大排序输出"adfjl"

s = "ajldjlajfdljfddd"
res=list(set(s))
res.sort()
print("".join(res))

23:用lambda函数实现两个数相乘 

func=lambda x,y:x*y

24:字典根据键从小到大排序dict={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}

dict={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}
res=sorted(dict)
ret={i:dict[i] for i in res}
print(ret)

sort 是应用在 list上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作

25:利用collections库的Counter方法统计字符串每个单词出现的次数"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"

from collections import Counter
str_a="kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
res=Counter(str_a)
nun_1=Counter(str_a).most_common(3)     #取前三位
print(nun_1)

26:字符串a = "not 404 found 张三 99 深圳",每个词中间是空格,用正则过滤掉英文和数字,最终输出"张三 深圳"

a = "not 404 found 张三 99 深圳"
import re
res=re.findall('[^\x00-\xff]{2}',a)
ret="".join(res)
print(ret)
#表达式
表示的是0- 255 的ASCII码值

27:filter方法求出列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def func(x):
    if x %2 !=0:
        return x
res=filter(func,a)
print(list(res))    #[1, 3, 5, 7, 9]

28:列表推导式求列表所有奇数并构造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]   

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
res=[i for i in a if i%2!=0]
print(res)

29:正则re.complie作用   

    一个正则表达式如果很长而且需要经常使用的话使用re.compile是将正则表达式编译成一个对象,加快速度,并重复使用

30:a=(1,)b=(1),c=("1") 分别是什么类型的数据? 

      a=(1,)    元组

    b=(1)     int数字类型

    c=("1")    str字符串

31:请写一个函数reverse,参数是一个列表,该函数将列表中的所有元素倒序排列并返回

def reverse_func(lis):
    alist=[]
    for i in range(0,len(lis)):
        nun=lis.pop()
        alist.append(nun)
    return alist
print(reverse_func([1,2,3,4]))

reverse是list的内置方法,reversed是个函数  list_num.reverse()#此处相当于把list_num 逆置了
  reverse是改变原来的list,
reversed的对象可以是列表和字符串,返回一个反转后的迭代器,但必须要转化成list(),不然不能使用
s1=['a','b','c']s2="abc"print(reversed(s1))print("s1:",list(reversed(s1)))print("s2:",list(reversed(s2)))print("s2:",str(reversed(s2)))

32:请写一个函数reverse,参数是一个列表,该函数返回一个新的列表, 新列表中元素是参数列表的倒序。

   

 

 

 

 

 

 

 

 

 

 

[^\x00-\xff]
posted @ 2021-03-11 02:33  至高无上10086  阅读(564)  评论(0编辑  收藏  举报