python面试常见知识点整理,你遗漏了几个?

版权声明:CSDN 博主刘康康 https://blog.csdn.net/liiukangkang/article/details/82898355

                              python面试常见知识点整理,你遗漏了几个?


Python是一个面向对象的解释型的交互式高级脚本语言:Python被设计成一种高可读性的语言,因为它大量地使用了英语中的单词作为关键字,而且不像其他语言使用标点符号构成复杂的语法结构,Python的语法结构非常少。

Python是一种面向对象的语言:即Python是支持面向对象的,支持在对象中进行代码封装。

Python是一种解释型语言:即Python程序是在运行时由解释器解释执行的,因而不用事先编译源程序。这一点和Perl和PHP类似。

Python是一种交互式语言:即你能够在Python提示符下直接交互式地编写你的程序。

Python是初学者的语言:Python是一种非常适合初学者的语言,它支持多种类型的应用程序的开发,如简单的文本处理、www浏览器应用程序开发、游戏开发等等。

01

什么是Python?使用Python的优点有哪些?缺点有哪些?

Python是一种面向对象的解释性的交互式语言,带有对象、模块、线程、异常和内存自动管理的机制。

使用Python的优点有:简单、易学、轻便可移植、可扩展、可读性、具有多种内建数据类型、开源等等。

扫描二维码关注公众号,回复: 3690542 查看本文章

使用Python的缺点有:运行速度慢,代码不能加密(解释性语言,发布python应用只能发布源代码,不像C发布编译后的应用文件)

02

什么是PEP 8

PEP 8是一种编码规范,是一系列关于如何让Python代码更加具有可读性的编码建议。

03

什么是序列化(pickling)和反序列化(unpickling?

序列化:将在内存中的变量转为可存储或传输的过程。应用JSON传输,序列化为统一格式json

反序列化:与序列化的过程相反

Pickle模块允许我们将Python对象转换成一个string表示的信息,并且可以使用dump函数将其保存到一个文件中去,这样的过程称为序列化。而使用文件中保存的对象信息重构Python对象的过程称为反序列化。

04

Python是如何被解释执行的?

Python是一种解释型语言,它可以直接从源代码运行程序。程序员编写的源代码首先转变成一种中间语言代码,然后再被转换成能够直接执行的机器语言代码。

05

Python是如何进行内存管理的?

Python内存空间是以Python私有堆的形式进行管理的。所有的Python对象和数据结构都存放在一个私有堆中。解释器可以访问私有堆,而程序员不可以。

将Python堆空间中的内存分配给Python对象的工作是由Python内存管理器完成的。而内核API则会提供给程序员一些相关的工具来完成涉及到内存的编码工作。

Python还内置垃圾回收器,从而进行回收释放内存到堆空间。

06

能够找到程序中的bug进行静态分析的工具有哪些?

PyChecker是一种能够发现Python源代码中的bug并对其中的代码风格和复杂度进行警告的静态分析工具。另外一种工具是Pylint,它能够验证模块是否满足编码标准。

07

什么是Python装饰器?

用来装饰一个函数从而使这个函数在不修改本身的函数定义外,动态产生额外的功能;装饰函数的入参为需要被装饰的函数。装饰器本质上是一个返回函数的高阶函数

一个Python装饰器是我们在符合Python语法的同时又方便地对函数做的一些特定的修改。

08

列表、元组、集合、字典的区别是什么?

列表:元素可变(任何数据类型),有序(可索引),append/insert/pop;

元组:元素不可变,但元素中的可变元素是可变的;有序(可索引);而且元组可以被散列,例如作为字典的键。

集合:无序(不可被索引)、互异

字典:无序,键值对(key:value),key唯一不可重复

09

怎样理解字典和列表?

它们是一种用来创建可变对象的语法结构,数据容器。

dic插入、查找速度比list快,不会随key的增加而增加,但list会随着元素的增加而增加(偏移量)

10

参数是如何通过值或者引用传递的?

python中确切说应该是“传对象引用”的方式,引用对象传递。一切皆对象,参数皆引用

如果函数收到的是一个可变对象(比如列表、字典)的引用,则可修改对象的原始值==相当于“引用传递”方式;

如果函数收到的是一个不可变对象(比如数字、字符、元组),就不能直接修改原始对象指向的值==相当于“值传递”方式; 

11

Python提供哪些内置类型?(原文有语法错误,根据个人理解翻译)

分为可变类型和不可变类型。

可变类型:

列表

集合

字典

不可变类型:

字符串

元组

数字

12

Python中的命名空间是什么?

名字到对象的一个映射;

一个对象拥有一个ID(内存地址)、一个类型、一个值,但可以有不同的名字,比如:a=1,b=a,a和b指向同一个对象;

命名空间就是用来映射这个关系的;

13

Python中的lambda表达式是什么?

lambda表达式是一个匿名函数,省去了对函数命名,所以叫匿名函数。通常用作代码行内的嵌入函数。

14

为什么Python中的lambda表达式没有声明?

Python中的lambda表达式没有声明是因为它只是用来创建一个新的函数对象,并且在运行时才返回值给对象。 

15

Python中的pass是什么意思?

pass是Python中的空操作语句,或者说,它是一个复杂语句中的一个空间占位符,只是用来表示空白,什么都不用写。

16

Python的迭代器是什么?

迭代器是用来迭代可迭代对象的,比如包含一组元素的列表。 iter()生成迭代器对象,next()依次访问迭代器对象的下一个值 

17

Python中的unittest是什么?

unittest是Python中的单元测试框架。它支持共享的测试建立、自动测试、关闭测试、聚集测试等等。

18

什么是切片?

从一组序列中截取一段序列的机制,比如列表、元组、字符串等类型中选择一个范围中的元素。

19

Python中的生成器是什么?

一种特殊的迭代器,用关键字yield表示,它特殊的地方在于运用在函数中函数体没有return返回,而是使用关键字yield返回值,yield每返回一次,函数状态挂起 。这种函数叫做生成器函数,被调用时返回一个生成器对象;

20

Python中的docstring是什么?

docstring是一个py文件、函数、类开头部分的用'''编写的一段注释文档和说明,通过help函数可查看该文档说明。

docstring是Python中产生文档的方式,它可以为Python中的函数、模块和类产生说明文档。

21

Python中如何拷贝一个对象?

使用标准库的copy模块:copy.copy()浅拷贝,copy.deepcopy()深拷贝

copy.copy()浅拷贝:拷贝了对象,但拷贝对象的值仍然是指向原对象的值(相当于引用),修改拷贝对象的元素,则被拷贝对象的值也会被修改

copy.deepcopy()深拷贝: 不仅拷贝了对象,同时也拷贝了对象中的元素,获得了全新的对象,与被拷贝对象完全独立;但这需要牺牲一定的时间和空间。

22

Python中负的索引是什么意思?

Python中可以使用整数和负数进行索引。对于正索引,0是第一个,1是第二个,以此类推。对于负索引,-1是最后一个,-2是倒数第二个,以此类推。

23

怎样将一个数字转换成字符串?

使用内置函数str()即可。如果想要八进制或者十六进制的形式,可以使用oct或者hex函数。

24

xrangerange的区别是什么?

xrange返回一个xrange生成器对象,而range返回一个list对象。

生成很大数列的时候,range会使用和其范围大小相同的内存;相比xrange的性能要高很多

25

Python中的模块和包是什么?

在Python中,模块就是一种构建程序的方式。每一个Python程序文件都是一个模块,这个文件还可以引入其他模块如对象和属性等。

包就是一个带有__init__.py文件的文件夹,里面可包含多个模块

26

@property@staticmethod@classmethod:

@property:特性,被其装饰过的方法(函数),可以当成属性一样去调用和访问。如:a()是一个方法==》c.a(对象.属性)调用

@staticmethod:静态方法,被其装饰的函数中不含self参数,相当于类外面的方法,但会在类中被调用(跟类有关系但在运行时又不需要实例和类参与)。通过类名调用

@classmethod:类方法,通过类名调用(一般类中的方法是实例方法,通过实例调用),使用时将类作为方法的第一个参数传入,如:

@classmethod

def test(cls):

    print(cls,cls.x)

27

如何理解self

self为类中方法的默认第一个参数,self指向创建的实例本身。调用时self不需要传,Python解释器自己会把实例变量传进去

有作为                                                                                         数倍薪资                                                                                        据为己有

                

猜你喜欢

转载自blog.csdn.net/liiukangkang/article/details/82898355