Python面试常见问题

Python
372
0
0
2022-04-19

什么是Python?

可以在回答中与其他语言进行对比。首先Python是一种解释型语言。与C语言和C的衍生语言不同,Python 代码在运行之前不需要编译。其他解释型语言还包括PHPRubyPython也是动态类型语言,指的是你在声明变量时,不需要说明变量的类型。Python非常适合面向对象的编程,因为它支持通过组合与继承的方式定义类。 在Python中一切皆为对象。

在回答完Python的特点后可以再说一下Python优势和劣势。

Python代码编写快,虽然运行速度比编译语言通常要慢,但是Python允许加入基于C语言编写的扩展,因此我们能够优化代码,消除瓶颈,numpy就是一个很好地例子。Python 用途非常广泛,不限于网络应用,自动化,科学建模,大数据应用等等。它也常 被用作“胶水语言”,帮助其他语言和组件改善运行状况。 同时Python 让困难的事情变得容易,因此程序员可以专注于算法和数据结构的设计,而不用处理底层的细节。

我们要明白面试官为什么提这个问题:如果你应聘的是一个Python开发岗位,你就应该知道这是门什 么样的语言,以及它为什么这么酷。以及它哪里不好。

什么是PEP8?

PEP8是一个编程规范,内容是一些关于如何让你的程序更具可读性的建议。

什么是pickling和unpickling?

Pickle模块读入任何Python对象,将它们转换成字符串,然后使用dump函数将其转储到一个文件中,这个过程叫做pickling

反之从存储的字符串文件中提取原始Python对象的过程,叫做unpickling。

Python是如何被解释的?

Python是一种解释性语言,它的源代码可以直接运行。Python 解释器会将源代码转换成中间语言,之后再翻译成机器码再执行。

Python是怎样管理内存的?

Python的内存管理是由私有 heap空间管理的。所有的Python对象和数据结构都在一个私heap 中。程序员没有访问该heap的权限,只有解释器才能对它进行操作。 为Pythonheap空间分配内存是由Python的内存管理模块进行的,其核心API会提供 一些访问该模块的方法供程序员使用。Python有自带的垃圾回收系统,它回收并释放没有被使用的内存,让它们能够被其他程序使用。

有哪些工具可以帮助debug或做静态分析?

PyChecker是一个静态分析工具,它不仅能报告源代码中的错误,并且会报告错误类型和复杂度。Pylint是检验模块是否达到代码标准的另一个工具。

数组和元组之间的区别是什么?

数组和元组之间的区别:数组内容是可以被修改的,而元组内容是只读的。另外,元组可以

被哈希,比如作为字典的关键字。

参数按值传递和引用传递是怎样实现的?

Python中的一切都是类,所有的变量都是一个对象的引用。引用的值是由函数确定的,因

此无法被改变。但是如果一个对象是可以被修改的,你可以改动对象。

什么是Python的命名空间?

Python中,所有的名字都存在于一个空间中,它们在该空间中存在和被操作,这就是

命名空间。它就好像一个盒子,每一个变量名字都对应装着一个对象。当查询变量的时候,会从该盒子里面寻找相应的对象。

Python中的lambda是什么?为什么lambda没有语句?

这是一个常被用于代码中的单个表达式的匿名函数。匿名函数lambda没有语句的原因,是它被用于在代码被执行的时候构建新的函数对象并且返回。

Python中的pass是什么?

Pass是一个在Python中不会被执行的语句。在复杂语句中,如果一个地方需要暂时被留白, 它常常被用于占位符。

Python中的docstring是什么?

Pytho中文档字符串被称为docstring,它在Python中的作用是为函数、模块和类注释生成文档。

Python 里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别)

赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。

浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式

修改其中一个对象,另外一个也会修改改变)

深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不

会改变)

单引号,双引号,三引号的区别

单引号和双引号是等效的,如果要换行,需要符号(\),三引号则可以直接换行,并且可以包含注释