python面试必备问题有哪些?

给你一个千峰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,卷积,快速搜索,基本统计,线性代数,直方图等等。

这些内容依然重要。如果他们帮助你,请收养他们。谢谢你。