吐血给你们整的Python面试题合集

“金三银四”跳槽季近在眼前,给准备跳槽的朋友们准备一份面试指南,希望大家在涨薪和成长的路上多一点指引

Python2 和Python3区别?

  • Python3 使用 print 必须要以小括号包裹打印内容,比如 print('hi')

  • Python2 既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容,比如 print 'hi'

  • Python2 range(1,10)返回列表,python3中返回迭代器,节约内存

  • Python2 中使用 ascii 编码,python中使用 utf-8 编码

  • Python2 中 unicode 表示字符串序列,str 表示字节序列

  • Python3 中 str 表示字符串序列,byte 表示字节序列

  • Python2 中为正常显示中文,引入 coding 声明,python3 中不需要

  • Python2 中是 raw_input() 函数,python3 中是input()函数

Python代码中_args, *_kwargs 含义及用法?

args: arguments 的缩写,表示位置参数

kwargs: keyword arguments 的缩写,表示关键字参数

请阐述同步,异步,阻塞,非阻塞的概念?

  • 同步: 多个任务之间有先后顺序执行,一个执行完下个才能执行。

  • 异步: 多个任务之间没有先后顺序,可以同时执行,有时候一个任务可能要在必要的时候获取另一个同时执行的任务的结果,这个就叫回调!

  • 阻塞: 如果卡住了调用者,调用者不能继续往下执行,就是说调用者阻塞了。

  • 非阻塞: 如果不会卡住,可以继续执行,就是说非阻塞的。

同步异步相对于多任务而言,阻塞非阻塞相对于代码执行而言。

一. Python基础

字典推导式

 
 

d = {key:value for (key,value) in iterable}


反转字符串 "aStr"

 
 

print("aStr"[::-1])


将字符串 "k:1 |k1:2|k2:3|k3:4",处理成字典 {k:1,k1:2,...}

 
 

 回复:11 str1 = "k:1|k1:2|k2:3|k3:4" def str2dict(str1): dict1 = {} for iterms in str1.split('|'): key,value = iterms.split(':') dict1[key] = value return dict1 #字典推导式 d = {k:int(v) for t in str1.split("|") for k, v in (t.split(":"), )}


下面代码的输出结果将是什么

 
 

list = ['a','b','c','d','e'] print(list[10:])


代码将输出[],不会产生IndexError错误,就像所期望的那样,尝试用超出成员的个数的index来获取某 个列表的成员。例如,尝试获取list[10]和之后的成员,会导致IndexError。然而,尝试获取列表的切 片,开始的index超过了成员个数不会产生IndexError,而是仅仅返回一个空列表。这成为特别让人恶 心的疑难杂症,因为运行的时候没有错误产生,导致Bug很难被追踪到。


给定两个列表,怎么找出他们相同的元素和不同的元素

 
 

list1 = [1,2,3] list2 = [3,4,5] set1 = set(list1) set2 = set(list2) print(set1 & set2) print(set1 ^ set2)

合并两个列表并去除重复元素?

 
 

list1 = ['b','c','c','a','f','r','y','e','e'] list2 = ['t','y','x','y','z','e','f'] def merge_list(*args): s = set() for i in args: s = s.union(i) print(s) return s merge_list(list1,list2)

如何查询和替换一个文本中的字符串?

 
 

tempstr = "hello python,you,me,world" print(tempstr.replace("hello","python")) #还可以使用正则,有个sub() tempstr = "hello python,you,me,world" import re rex = r'(hello|Use)' print(re.sub(rex,"HELLO",tempstr))

对缺省参数的理解

缺省参数指在调用函数的时候没有传入参数的情况下,调用默认的参数,在调用函数的同时赋值时,所 传入的参数会替代默认参数。*args是不定长参数,它可以表示输入参数是不确定的,可以是任意多个。**kwargs是关键字参数,赋值的时候是以键值对的方式,参数可以是任意多对在定义函数的时候 不确定会有多少参数会传入时,就可以使用两个参数


生成器,迭代器的区别

迭代器是遵循迭代协议的对象。用户可以使用 iter() 以从任何序列得到迭代器(如 list, tuple, dictionary, set 等)。另一个方法则是创建一个另一种形式的迭代器 —— generator 。要获取下一个元 素,则使用成员函数 next()(Python 2)或函数 next() function (Python 3) 。当没有元素时,则引 发 StopIteration 此例外。若要实现自己的迭代器,则只要实现 next()(Python 2)或 next ()


生成器(Generator)只是在需要返回数据的时候使用yield语句。每次next()被调用时,生成器会返 回它脱离的位置(它记忆语句最后一次执行的位置和所有的数据值)


区别生成器能做到迭代器能做的所有事,而且因为自动创建iter()和next()方法,生成器显得特别简 洁,而且生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序 状态的自动方法,当发生器终结时,还会自动抛出StopIteration异常。

友友们,看完记得点赞哦!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值