最近python常见面试题精华整理

1、list和tuple的一些区别

区别一:语法差异

1、使用方括号[]创建列表,而使用括号()创建元组

区别二:是否可变

2、列表是可变的,而元组是不可变的,这标志着两者之间的关键差异。

我们可以修改列表的值,但是不修改元组的值

列表是可变的,我们不能将列表用作字典中的key。 但可以使用元组作为字典key

区别三:重用与拷贝

 元组无法复制。 原因是元组是不可变的

区别四:大小差异

与列表相比,元组的内存更小。 当你拥有大量元素时,元组比列表快

区别五:同构与异构

元组和列表都是容器对象,都可以存放不同类型的数据内容

元组多用于用于存储异构元素,异构元素即不同数据类型的元素,比如(ip,port)。 另一方面,列表用于存储异构元素,这些元素属于相同类型的元素,比如[int1,in2,in3]

 2、列表与字典的区别

(1)获取元素的方式不同。列表通过索引值获取,字典通过键获取

(2)数据结构和算法不同。字典是 hash 算法,搜索的速度特别快

(3)占用的内存不同

3、列举常见的内置函数

map,filter(当返回值为正数时才返回函数结果进入下个元素的计算),zip,len,bin,oct,hex,int,float,bool,sum,min,max,str,list,tuple,dict,range,next,hash,help,id…
enumerate,reduce,eval,format

4、至少列举8个常用模块都有那些

os,sys,time,random,re,hashlib,logging,json,pickle…

os模块提供了不少与操作系统相关联的函数.
sys通用工具脚本经常调用命令行参数.
re模块为高级字符串处理提供了正则表达式工具。对于复杂的匹配和处理,正则表达式提供了简洁、优化的解决方案:
random提供了生成随机数的工具。
re的match和search区别?
match:从字符串的开头位置匹配,必须以此为开头
search:从开头开始查,找到符合的就返回结果

python进阶

1、深拷贝和浅拷贝的区别是什么?

深拷贝是将对象本身复制给另一个对象。这意味着如果对对象的副本进行更改时不会影响原对象。
浅拷贝是将对象的引用复制给另一个对象。因此,如果我们在副本中进行更改,则会影响原对象。

2、Python垃圾回收机制?(知道即可)

python采用的是引用计数机制为主,标记-清除和分代收集(隔代回收、分代回收)两种机制为辅的策略

1
2
1、回收计数引用为0的对象,释放其占用空间
2、循环垃圾回收器。释放循环引用对象

计数机制
Python的GC模块主要运用了引用计数来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”解决容器对象可能产生的循环引用的问题。通过分代回收以空间换取时间进一步提高垃圾回收的效率。

标记-清除:
标记-清除的出现打破了循环引用,也就是它只关注那些可能会产生循环引用的对象
缺点:该机制所带来的额外操作和需要回收的内存块成正比。

隔代回收
原理:将系统中的所有内存块根据其存活时间划分为不同的集合,每一个集合就成为一个“代”,垃圾收集的频率随着“代”的存活时间的增大而减小。也就是说,活得越长的对象,就越不可能是垃圾,就应该减少对它的垃圾收集频率。那么如何来衡量这个存活时间:通常是利用几次垃圾收集动作来衡量,如果一个对象经过的垃圾收集次数越多,可以得出:该对象存活时间就越长。

 

posted @ 2021-06-26 23:34  软件开发技术修炼  阅读(110)  评论(0编辑  收藏  举报