python面试题

风流意气都作罢 提交于 2020-02-26 14:17:36

Python面试(基础篇)

1.简述列举了解的编程语言及语言间的区别?

我了解python,java和c和go

简单的说,python省去了java和c 的大括号,分号

python使用时更加简洁,方便,和易阅读

python是解释型语言,不需要编辑,java和c 需要编译,但是开发周期长,python使用起来效率比java和c低,但如果不是特别注重延迟的项目,用python更加合适

python是开源的,应用广泛,可移植性强,是可嵌入的解释型编程语言

2.列举Python2和Python3的区别?

python3不兼容python2,但是python2.7都兼容

首先python2不支持中文用的是ASCII,python3支持,用的是utf8

python2和python3的range不同,2中返回一个列表,3中返回一个迭代器,更加节省内存

2中print不加括号,3中加括号

2中的raw_input函数是3中的input函数

 

3.看代码写结果

v1 = 1 or 2v2 = 3 and 7 or 9 and 0​10

4.比较一下值有什么不同?

v1 = [1,2,3]v2 = [(1),(2),(3)]v3 = [(1,),(2,),(3,)]​v1 = v2v3 是列表中套了三个元组

5.用一行代码实现数值交换

a = 1b = 2a,b = b,a

6.Python中单引号、双引号、三引号的区别?

单引号 == 双引号,里面写字符串内容

三引号里面写函数注释、文档注释

7.is和==的区别?

is代表的是两个比较的数据内存地址相同

==代表的两个数值相同

8.python里如何实现tuple和list的转化?

tuple(list列表)

list(tuple列表)

9.如何实现字符串name=老男孩的反转?

print(name[::-1])

10.两个set如何获取交集、并集、差集?

set1 = {1,2,3}set2 = {3,4,5}​# 交集set = set1 & set2# 并集set = set1|set2# 差集set = set1 ^ set2

11.哪些情况下,y != x-(x-y)会成立?

没有情况

12.python中如何拷贝一个对象

import copy​name = '老男孩'name1 = copy.deepcopy(name)

13.简述赋值、浅拷贝、深拷贝的区别?

赋值就是一个变量名对一个对象地址的引用

浅拷贝就是对一个对象的第一层的拷贝

深拷贝就是对一个对象的全部拷贝,独立于源数据

14.pass的作用

当写一个函数或者写一个类的时候,没有想好内部如何写,就用pass占位

15.阅读代码写结果

import copya = [1,2,4,5,['b','c']]b = ac = copy.copy(a)d = copy.deepcopy(a)​a.append(5)a[4].append('b')​print(b)print(c)print(a)​a = [1,2,4,5,['b','c','b'],5]b = [1,2,4,5,['b','c','b'],5]c = [1,2,4,5,['b','c','b']]d = [1,2,4,5,['b','c']]

16.用python实现9*9乘法表

for i in range(1,10):    for j in range(1,10):        print('{}{}={}'.format(i,j,i*j))

 

17.用python显示一个斐波那契数列

def func(n):    if n == 1:        return 1    return func(n-1) + func(n-2)

18.如何删除列表中重复的值

list = [1,1,1,2]set_list = set(list)

 

19.一个大小为100G的文件etl_log.txt,要读取文件中的内容,写出具体过程代码?

with open('etl_log.txt',r,encoding='utf-8')as f:    print(f.readline())

 

20.a = dict( zip( ('a','b','c','d','e') ,(1,2,3,4,5) ) )请问a是什么

字典中a对应的值为1

21.lambda关键字的作用?

almbda是匿名函数,用于一次性使用的函数

22.*args和**kwargs的作用?

*args用来接收剩余的位置参数

**kwargs用来接收剩余的关键字参数

23.如何在函数中设置一个全局变量

global 变量名

24.filter,map,reduce的作用

filter用于过滤数据

map是映射函数,将可迭代对象中的每个元素执行相应的操作

25.什么是匿名函数,匿名函数有什么作用?

匿名函数,顾名思义就是没有名字的函数,由于一些场景,只需要一次性使用函数,如果定义一个函数,会造成资源的浪费,所以需要使用一个匿名函数,用完之后就自动回收了

26.python递归的最大层数?

1000

27.什么是迭代器?什么是可迭代对象?

只要具有__iter__()方法的是就是一个可迭代对象具有__iter__()和__next__()两个方法的才是迭代器

 

28.什么是生成器?

迭代器python内置的

生成器是程序员写的一种迭代器

生成器有两种编写方式,一种是推导式方式和函数编写

 

29.什么是装饰器及应用场景?

开放封闭原则

  • 1.对扩展是开放的

  • 2.对修改是封闭的

在不修改源代码和调用方式的情况下,对函数进行扩展

 

30.什么是反射及应用场景?

反射通过字符串直接调用函数或者方法

31.写一个普通的装饰器

def times(func):    def foo():        print('装饰001')        func()        print('装饰002')​    return foo​@timesdef func1():    print("被装饰的函数1")

32.写一个带参数的装饰器

def func(func):    def foo(*args, **kwargs):        print('装饰001')        func(*args, **kwargs)        print('装饰002')    return foo​@funcdef func1(*args, **kwargs):    print(args,kwargs)    print('被装饰的函数1')

33.求结果

def num():    return [lambda x:i*x for i in range(4)]print([m(2) for m in num()])​​

 

34.def(a,b=[])这种写法有什么陷阱

开发中不这么写,如果没有特殊需求,这么写直接开掉

35.看代码写结果

def func(a,b=[]):    b.append(a)    return b    v1 = func(1)v2 = func(2,[10,20])v3 = func(3)print(v1,v2,v3)​[1][10,20,2][1,3]​

 

36.看代码写结果

def func(a,b=[]):    b.append(a)    return b    v1 = func(1)print(v1)v2 = func(2,[10,20])print(v2)v3 = func(3)print(v3)​[1][10,20,2][1,3]

37.请编写一个函数实现将ip地址转换成一个整数

如 10.3.9.12 转换规则为:    10          00001010    3           00000011    9           00001001    12          00001100​再将以上二进制拼接起来计算十进制结果:00001010   00000011   00001001 00001100 = ?​​

38.请查找一个目录下的所有文件(可能存在文件嵌套)。

 

39.求结果

import math    print(math.floor(5.5))​5

 

40.是否使用过functools中的函数?其作用是什么?

 

41.re的math和search的区别?

search 从任意位置开始查找,查找到结束,没有则返回空列表

match 从头开始查看,如果不符合就不继续查找了

42.用python匹配html tag的时候,<.>和<.?>有 什么区别?

 

43.如何生成一个随机数?

import randomprint(random.ranint(0,100))

44.super的作用?

super用来调用父类的方法或属性

45.双下划线和单下划线的区别?

双下划线的是自定义的方法

单下划线的是私有变量

46.@staticmethod 和@classmethod的区别?

 

47.实现一个单例模式(加锁)

48.栈和队列的区别?

 

49.以下代码输出是什么?请给出答案和解释。

class Parent(object):    x = 1class Child1(Parent):    pass​class Child2(Parent):    pass​print Parent.x, Child1.x, Child2.x1 1 1 ​Child1.x = 2print Parent.x, Child1.x, Child2.x1 2 1 ​Parent.x = 3print Parent.x, Child1.x, Child2.x3 2 3 

 

50.参考下面代码片段

class Context:    pass​with Content() as ctx :    ctx.do_something()请在Context类下添加代码完成该类的实现

 

进阶篇

1.如何获取列表中第二大的值?

 

2.简述python内容管理机制

 

3.简述python的垃圾回收机制

 

4.请用两个队列来实现一个栈

 

5.请用python实现一个链表

 

6.请用python实现链表的逆转

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!