面试找工作时,企业为了能够快速筛选出更加专业的人才,会针对我们的个人情况询问一些专业问题,因此来进行初步判断面试人员是否符合企业标准。那么Python面试常问的问题有哪些?本文为大家准备了一些Python基础面试题,来考考你们,看看你们都答对了吗!
1、Python数据结构有哪些?
整数int、浮点float、字符串str、布尔bool、列表list、元组tuple、字典dict、集合set。
2、Python中列表和元组的区别是什么?
列表:list是可变类型、数据可以动态变化
元组:是不可变类型,大小固定
3、什么是生成器和迭代器?
迭代器
作用:简化循环的代码并可以节约内存。
是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter()、next()。
生成器
作用:节约大量内存
使用了yield的函数被称为生成器、生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
原理:在调用生成器运行的过程中,每次遇到yield的函数会暂停并保存当前所有的运行信息,返回yield的值,并在下一次执行next()方法时从当前位置继续运行。
4、什么是匿名函数?用匿名函数有什么好处?
匿名函数:使用lambda创建的函数,所谓匿名,意即不再使用def语句这样标准的形式定义一个函数。
好处:
①使用Python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
②对于一些抽象的,不会别的地方再复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。
③使用lambda在某些时候让代码更容易理解。
应用场景:经常与一些内置函数相结合使用,比如说:map()、filter()、sorted()、reduce()等。
表达式格式:lambda 参数列表: lambda体
5、如何提高Python运行效率?
使用生成器优化内存
循环的优化:多个if elif条件判断,可以把最有可能先发生的条件放到前面写,这样可以减少程序判断的次数,提高效率
优化算法时间:算法的时间复杂度对程序的执行效率影响最大,在Python中可以通过选择合适的数据结构来优化时间复杂度,如list和set查找某一个元素的时间复杂度分别是O(n)和O(1)。
6、深拷贝和浅拷贝
浅拷贝:改变原始对象中为可变类型的元素的值,会同时影响拷贝对象;改变原始对象中为不可变类型的元素的值,不会影响拷贝对象。
深拷贝:除了顶层拷贝,还对子元素也进行了拷贝。经过深拷贝后,原始对象和拷贝对象所有的可变元素地址都没有相同的了。
7、例举8个常用模块
os模块:提供了不少操作系统相关联的函数
sys模块:通用工具脚本经常调用命令行参数
re模块:为高级字符串处理提供了正则表达式工具。对于复杂的匹配和处理,正则表达式提供了简洁、优化的解决方案
random模块:提供了生成随机数的工具
json模块:提供Python解析json数据的方法,和Python格式相互转化的方法
time模块:Python中用于处理时间的模块
logging模块:Python中关于日志处理的模块
xml模块:Python爬虫中用于定位html标签的模块