python面试必备问题有哪些?
1.用Python做多线程是个好主意吗?列举一些让一些Python代码并行运行的方法。
答:Python不允许真正的多线程。它有一个多线程包,但是如果你想使用多线程来加速你的代码,使用它通常不是一个好主意。Python有一个锁叫做全局解释器锁(Global
解释者
洛克(GIL))。GIL确保一次只能执行一个“线程”。一个线程获取GIL,做一点工作,然后将GIL传递给下一个线程。这种情况发生得非常快,因此在人眼看来,您的线程似乎是并行运行的,但它们实际上只是依次使用同一个CPU内核。所有这些GIL通行证增加了运行内存。这意味着如果你想让你的代码运行得更快,使用线程包通常不是一个好主意。
使用Python的线程包也是有原因的。如果你想同时运行一些东西,并且效率不是问题,那么它是完全没问题的。或者,如果您正在运行需要等待某些东西(比如一些IO)的代码,这可能是有意义的。但是线程库不会让你使用额外的CPU核心。
多线程可以外包给操作系统(通过多重处理),一些调用Python代码的外部应用程序(比如Spark或者Hadoop),或者一些Python代码调用的代码,比如你可以用你的Python代码调用一个C函数来完成昂贵的多线程事务。
2.这段代码输出了什么?
def f(x,l =[]):for I in range(x):l . append(I * I)print(l)f(2)f(3,[3,2,1])f(3)
答案:[0,1] [3,2,1,0,1,4] [0,1,0,1,4]
3.Python中如何管理内存?
Python中的内存管理是由Python私有堆空间管理的。所有Python对象和数据结构都位于私有堆中。程序员无权访问这个私有堆。Python解释器处理这个问题。Python对象的堆空间分配由Python的内存管理器完成。核心API为程序员编写代码提供了一些工具。Python还有一个内置的垃圾收集器,它可以回收所有未使用的内存,并使其可用于堆空间。
4.Range range&xrange有什么区别?
在大多数情况下,xrange和range在功能上是相同的。它们都提供了生成整数列表的方法,唯一的区别是range返回一个Python list对象,x range返回一个xrange对象。
这意味着xrange在运行时并不真正生成静态列表。它使用一种叫做让步的特殊技术来根据需要创造价值。这项技术与一个称为生成器的对象一起使用。所以如果你有一个非常大的列表,那么考虑xrange。
5.Python中help()和dir()函数的用法是什么?
Help()和dir()函数都可以从Python解释器中直接访问,并用于查看内置函数的合并转储。
Help()函数:help()函数用于显示文档字符串,还可以查看与模块、关键字、属性等相关的使用信息。
Dir()函数:dir()函数用于显示已定义的符号。
6.NumPy中有哪些函数操作Python list?
Python列表是高效的通用容器。它们支持(相当)有效的插入、删除、追加和连接,Python的列表派生使得它们易于构造和操作。
它们有一些限制:它们不支持像素化加法和乘法等矢量化操作,并且它们可以包含不同类型的对象这一事实意味着Python必须存储每个元素的类型信息,并且在对每个元素进行操作时必须执行类型调度代码。
NumPy不仅效率更高;也比较方便。可以免费得到很多向量和矩阵运算,有时候可以避免不必要的工作。它们也得到有效实施。
NumPy数组比较快,可以用NumPy,FFT,卷积,快速搜索,基本统计,线性代数,直方图等等。
这些内容依然重要。如果他们帮助你,请收养他们。谢谢你。