有趣的公司笔试题!!!

1.使用列表生成一个10*10的二维list,每一项的值都为0,再将该列表0行0列到位置0设为1

list = [ [0 for col in range(10)] for row in range(10)]

for i in list:

    if i[0]==0;

        i[0]=1

print(list)

2.解释下列情况中“*”代表什么含义?

1.def fun(*args,**kwargs):

    pass

2._, *r, _= range(100)

3.fun(*a)

4,fun(a,**b)

5,fun(a ** b)

*args,**kargs都是可变长度参数,*args可以当作可容纳多个变量组成的list,**kwargs可以当作容纳多个key和value的dict

*a *它可以拆开数列"list"的数值作为位置参数,并把这些位置参数当作参数传递给函数来使用

fun(*l)等价于fun(1,2,3)

使用”**”调用函数,这种方式我们需要一个字典.注意:在函数调用中使用”*”,我们需要元组;在函数调用中使用”**”,我们需要一个字典

>>> d={'b':5, 'c':7}

>>> fun(1, **d)1 5 7

a ** b 表示a的b次方

3.哪些数据类型可以作为dict的键部分,哪些可以作为dict的value部分,如何删除一个键值对?

key作为键是不可以重复的,字典的键必须是不可变类型,string,元组,int

value作为值可以选取任意类型

del dict['Tom'#删除某一个条目

4.使用Python如何调用系统命令,并返回命令调用结果

output = commands.getstatusoutput('ps aux')  

5.使用sort方法为如下数据按accuracy_rate字段数值大小升序排序(accuracy_rate相等时按照value值降序)

data = [{'name':'Linux','value':12,'accuracy_rate':'44'},{'name':'Windows','value':21,'accuracy_rate':'76'},{'name':'Android','value':8,'accuracy_rate':'90'},{'name':'Os','value':32,'accuracy_rate':'90'}]

data.sort(key=operator.itemgetter('accuracy_rate'), reverse = False)  #默认为升序, reverse=True为降序

print (data)

6使用正则匹配在单引号或者双引号中任意文本的方法(注:单引号里可能存在双引号,双引号里也可能存在单引号)

a="我是一个超级'级'chang'的'字'符'串"

res = "".join(re.findall(r"\w+",a))

print(res)#我是一个超级chang的字符串

使用"".join(re。findall。。。。)方法可以实现此功能。

7,对于以下函数哪些传参是正确的?(A,B,D,F)多选题

def f(a,b,c="1",d="2",*args,**kwargs):

    pass

A.f(1,2,)

B.f(b=1,a=2)

C.f(a=1,2,c=1)

D.f(1,2,d=3,f=4)

E,f(*(1,2),**{"c":1,"d":2,"a":5})

F.f(*(1,),**{"c":1,"d":2,"b":5})

8.下面的代码输出什么?

list = [1,2,3,4,5]

print(list[10:])

#输出一个[]列表

9.考虑以下Python代码,如果运行结束,命令中的运行结果是什么?

l=[]

for i in range(10):

    l.append({'num':i})

 print(l)     #[{'num': 0}, {'num': 1}, {'num': 2}, {'num': 3}, {'num': 4}, {'num': 5}, {'num': 6}, {'num': 7}, {'num': 8}, {'num': 9}]

在考虑以下代码,运行结果是什么?

l=[]

a={'num':0}

for i in range(10):

    a['num']=i

     l.append(a)

print (l) #  [{'num': 9}, {'num': 9}, {'num': 9}, {'num': 9}, {'num': 9}, {'num': 9}, {'num': 9}, {'num': 9}, {'num': 9}, {'num': 9}]

原因是列表添加了多个字典,i每增加1,num的值会改变,list列表的num值都会发生改变,多个num的指向的是一个内存地址

10.请简述你对单元测试的理解并列举Python单元测试相关的库和工具

单元测试是用来对一个类,函数,或者一个模块进行正确性验证工作,Python有自带的单元测试模块unittest

11.请给出下面代码片段的输出并阐述涉及的Python相关机制

def dict_updater(k,v,dict=[]):

    dict[k]=v

    print (dict)

dict_updater('one',1)

dict_updater('two',2)

dict_updater('three',3,{})

输出:{'one': 1}
         {'one': 1, 'two': 2}

         {'three': 3}

12.请列举你所知道的Python代码检测工具以及他们的区别?

PyFlakes:静态检查Python代码逻辑错误的工具。

Pep8: 静态检查PEP8编码风格的工具。

NedBatchelder’s McCabe script:静态分析Python代码复杂度的工具。

13.请给出下面代码片段的输出内容,

def  say_hi(func):

       def wrapper(*args,**kwargs):

                print("hi")

            ret=func(*args,**kwargs)

            print(“bye”)

            return ret

    return wrapper

def  say_yo(func):

       def wrapper(*args,**kwargs):

            print(“yo”)

            return func(*args,**kwargs)

    return wrapper


@say_hi

@say_yo

def func():

    print(“Rock&Roll")

func()




14.请简述functools.wraper的作用


15.给出下列代码的输出

def test():
    try:
        raise ValueError('something wrong')
    except ValueError as e:
        print('error,occurred')
     
        return
    finally:
        print('Done')

test()   #error,occurred   Done

16,给出下面代码输出:

class Singleton:
    _instance=None
    def __new__(cls,*args, **kwargs):
        print('New')
        if cls._instance is None:
            print('repeat')
            cls._instance=super().__new__(cls,*args, **kwargs)
        return cls._instance
    def __init__(self):
        print('Initialize')


        self.prop=None

s1=Singleton()

s2=Singleton()

#New
#repeat
#Initialize
#New
#Initialize














你可能感兴趣的:(有趣的公司笔试题!!!)