导语
Python已经是现在最受欢迎的编程语言,随着这几年云计算,机器学习,人工智能等技术的发展,学习Python的人越来越多,职位的要求也越来越高,下面我收集了10个面试中经常被问到的问题和答案供大家参考学习。
1Python是如何运行的?
Python 程序运行时,会先进行编译,将 .py 文件中的代码编译成字节码(byte code),编译结果储存在内存的 PyCodeObject 中,然后由 Python 虚拟机解释运行。当程序运行结束后,Python 解释器会将 PyCodeObject 保存到 pyc 文件中。之后每一次运行时 Python 都会先寻找与文件同名的 pyc 文件,如果找到直接运行,否则重复上述过程。2什么是Python迭代器?什么又是生成器?
迭代器是可迭代对象的一个子集,它是一个可以记住遍历的位置的对象,它与列表、元组、集合、字符串这些可迭代对象的区别就在于next方法的实现,其他列表、元组、集合、字符串这些可迭代对象可以很简单的转化成迭代器
生成器是迭代器的子集,换句话说,生成器一定是迭代器,但是迭代器不全是生成器对象。而生成器使用更加简洁,实现和迭代器相同的功能。
3解释一下Python的继承
当一个类继承自另一个类,它就被称为一个子类/派生类,继承自父类/基类/超类。它会继承/获取所有类成员(属性和方法)。
继承能让我们重新使用代码,也能更容易的创建和维护应用。Python支持如下种类的继承:
单继承:一个类继承自单个基类
多继承:一个类继承自多个基类
多级继承:一个类继承自单个基类,后者则继承自另一个基类
分层继承:多个类继承自单个基类
混合继承:两种或多种类型继承的混合
4Python中是否需要缩进?
缩进是Python必需的。它指定了一个代码块。循环,类,函数等中的所有代码都在缩进块中指定。通常使用四个空格字符来完成。如果您的代码没有必要缩进,它将无法准确执行并且也会抛出错误。
5什么是Python中的类型转换?
类型转换是指将一种数据类型转换为另一种数据类型。int() - 将任何数据类型转换为整数类型float() - 将任何数据类型转换为float类型ord() - 将字符转换为整数hex() - 将整数转换为十六进制oct() - 将整数转换为八进制tuple() - 此函数用于转换为元组。set() - 此函数在转换为set后返回类型。list() - 此函数用于将任何数据类型转换为列表类型。dict() - 此函数用于将顺序元组(键,值)转换为字典。str() - 用于将整数转换为字符串。complex(real,imag) - 此函数将实数转换为复数(实数,图像)数。6Python中浅拷贝,深拷贝的区别
浅拷贝则是将一个对象的引用拷贝到另一个对象上,所以如果我们在拷贝中改动,会影响到原对象。
深拷贝就是将一个对象拷贝到另一个对象中,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象
7多线程好用吗?如何在Python中实现多线程?
Python没有真正意义上的多线程,不过有一个名为Global Interpreter Lock(GIL)的结构。GIL确保每次只能执行一个“线程”。一个线程获取GIL执行相关操作,然后将GIL传递到下一个线程。
虽然看起来程序被多线程并行执行,但它们实际上只是轮流使用相同的CPU核心。
所有这些GIL传递都增加了执行的开销。这意味着多线程并不能让程序运行的更快。
8如何在Python中管理内存?
Python中的内存管理由Python私有堆空间管理。所有Python对象和数据结构都位于私有堆中。程序员无权访问此私有堆。Python解释器负责处理这个问题。
Python对象的堆空间分配由Python的内存管理器完成。核心API提供了一些程序员编写代码的工具Python还有一个内置的垃圾收集器,它可以回收所有未使用的内存,并使其可用于堆空间。
9列表(list)和元组(tuple)有什么区别?
列表是可变的。创建后可以对其进行修改。
元组是不可变的。元组一旦创建,就不能对其进行更改。
列表表示的是顺序。它们是有序序列,通常是同一类型的对象。
元组表示的是结构。可以用来存储不同数据类型的元素。比如内存中的数据库记录。
10字典和列表的查找速度哪个更快
在列表中查找一个值需要O(n)时间,因为需要遍历整个列表,直到找到值为止。
在字典中查找一个值只需要O(1)时间,因为它是一个哈希表。
如果有很多值,这会造成很大的时间差异,因此通常建议使用字典来提高速度。但字典也有其他限制,比如需要唯一键。
当然,面试题可以一直刷,题目通过的几率是很大的,不过之后我们还需要看自身的发挥,打铁还要自身硬是吧,如果自身没有相应的水平,在之后的试用期阶段还是会被刷下去。
最后,希望大家能够找到自己理想的企业,面试成功!
End
![a904f5755d75d5334023a90dfb41aef0.png](https://i-blog.csdnimg.cn/blog_migrate/af5cacbacd707e77e6679fe0beaa1b4a.png)
![fe8b8fd967a66faf1094585f6c2f5add.png](https://i-blog.csdnimg.cn/blog_migrate/a80e6855edb0e1aeeb16b98fa3237236.png)