python常见面试题整理

1. 列举 Python2 和 Python3 的区别?

(1).浮点数除法操作符/和//区别:
Python2:/是整数除法,//是小数除法
Python3:/是小数除法,//是整数除法。
(2).Python2中存在老式类和新式类的区别
Python3统一采用新式类。新式类声明要求继承object,必须用新式类应用多重继承。
(3).print

print不再是语句,而是函数,比如原来是 print ‘abc’ 现在是 print(‘abc’)

(4).long整数类型被Python3废弃,统一使用int

2. 简述 Python 的深浅拷贝以及应用场景?

浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝指拷贝数据集合的所有层。所以对于只有一层的数据集合来说深浅拷贝的意义是一样的,比如字符串,数字,还有仅仅一层的字典、列表、元祖等.

对于 数字 和 字符串 而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。

3. 能否解释一下 *args 和 **kwargs?

Python 允许你在 list 或 tuple 前面加一个 * 号,当传入了更多实参的时候*args会把多出来的位置参数转化为tuple
而**kwargs会把关键字参数转化为dict

4. 简述 生成器、迭代器、可迭代对象 以及应用场景?

迭代器是访问集合元素的一种方式,可以被next()函数调用,迭代器只能往前不会后退;
带有 yield 的函数在 Python 中被称之为 generator(生成器),生成器其实是一种特殊的迭代器
可以直接作用于for循环的对象,可以返回一个迭代器的对象都可称之为可迭代对象

5. 请说明 yield 关键字的工作机制。

如果函数里面有yield关键字, 这个函数的返回值是生成器
如果遇到yield, 函数停止执行, 当再次调用next方法时, 从停止的地方继续执行;

6. 请简单谈谈装饰器的作用和功能。

装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的
前提下增加额外的功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,
比如:插入日志、性能测试、事务处理、缓存、权限校验等应用场景。

7. Python 中如何读取大数据的文件内容?

Python 将文本文件的内容读入可以操作的字符串变量非常容易。文件对象提供了三个“读”方法: .read()、.readline() 和 .readlines()。
.read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。然而.read() 生成文件内容最直接的字符串表示,但对于连续的面向行的处理,它却是不必要的,并且如果文件大于可用内存,则不可能实现这种处理。
另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。

8. Python 中的模块和包是什么?

在Python中,模块是搭建程序的一种方式。
模块是非常简单的Python文件,单个Python文件就是一个模块,两个文件就是两个模块。
包将有联系的模块组织在一起,有效避免模块名称冲突问题,让应用组织结构更加清晰。

9. python 是如何进行内存管理的(python 是如何实现垃圾回收机制的)?

python采用的是引用计数机制为主,标记-清除和分代收集两种机制为辅的策略

10. 谈谈你对面向对象的理解?

面向对象是按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的办法。
特点:封装、继承、多态

11. Python 面向对象中的继承有什么特点?

单继承、多继承 ,即子类有多个父类,并且具有它们的特征

12. 面向对象中 super 的作用?

super() 函数是用于调用父类(超类)的一个方法。super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。

13. 面向对象深度优先和广度优先是什么, 并说明应用场景?

经典类多继承搜索顺序(深度优先算法):先深入继承树左侧查找,然后再返回,开始查找右侧。
新式类多继承搜索顺序(广度优先算法):先在水平方向查找,然后再向上查找。

14. 请简述__init__和__len__这两个魔术方法的作用

init 。通过此方法我们可以定义一个对象的初始操作。__init__只是将传入的参数来初始化类的实例。
len(self) 返回容器长度。

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值