python面试总结

python多线程能用多个cpu吗?

python的多线程不能利用多核CPU,原因是python解释器使用了GIL(全局解释器锁),在任意时刻只允许单个python线程运行。无论系统有多少个CPU核心,python程序都只能在一个CPU上运行。

python的垃圾回收机制

python的垃圾回收机制是以:引入计数器为主,标记清除分代回收为辅。
方式1:引入计数:每个对象内部都维护了一个值,该值记录此对象被引用的次数,如果次数为0,则python垃圾回收机制会自动清除此对象。
方式2: 标记-清除(Mark-Sweep):被分配对象的计数值与被释放对象的计数值之间的差异累计超过某个阈值,则python的收集机制就会启动。
方式3:当代码中主动执行gc.collect()命令时,python解释器就会进行垃圾回收

迭代器和生成器的区别

生成器

  1. 生成器本身是一种特殊的迭代器;
  2. 生成器会自动实现迭代器协议,也就是说只要我们yield后,自动就生成了next对象包括StopIteration等结构;
  3. 生成器使用yield语句返回一个值,yield语句挂起该生成器函数的状态,保留足够的信息。对生成器函数的第二次调用,跳转到函数上一次挂起的位置。生成器不仅“记住”了它的数据状态,生成还记住了程序执行的位置。
    区别
  4. 迭代器是访问容器的一种方式,也就是说容器已经出现。我们是从已有元素拓印出一份副本,只为我们此次迭代使用。而生成器则是自己生成元素的。
  5. 在用法上生成器只需要简单函数写法,配合yield就能实现。而迭代器真正开发中很难使用到。
  6. 生成器能够很好的节约内存

装饰器

装饰器可以实现,在不改变函数或类的内部代码与调用方式的情况下,使其拥有额外功能。
应用场景:插入日志,性能测试,事务处理,缓存,权限校验

python set低层实现

散列表

python字典和set()区别

  1. 字典是一系列无序的键值对的组合;集合里的元素不是键值对,是单一的一个元素
  2. 从python3.6以后,字典有序;集合无序
  3. 字典键不能重复;集合元素不能重复

怎么对字典的值进行排序

方法一:转化为元组,用sorted()函数进行排序

from random import randint
d = {x:randint(60,101) for x in "abcdxyz"}
print(d)
z = zip(d.values(),d.keys())
# z = zip(d.itervalues(), d.iterkeys()) #省空间
s = sorted(z)

方法二:设置sorted() 中key的参数的值

a = d.items()
s = sorted(a, key=lambda x:x[1])

__init__和__new__和__call__的区别

  1. init 是初始化方法
  2. new 实例化对象
  3. call 允许一个类的实例像函数一样被调用。实质上说,这意味着x()与x.call()是相同的

python的lamda函数

它是一个单独的表达式匿名函数,通常用作内联函数
匿名函数可以在程序中任何需要的地方使用,但是这个函数只能使用一次,即一次性的。因此Python lambda函数也称为丢弃函数,它可以与其他预定义函数一起使用。相对于我们定义的可重复使用的函数来说,这个函数更加简单便捷。

Python的内存管理

python的内存管理机制可以从三个方面来讲:

  1. 垃圾回收
  2. 引用计数
  3. 内存池机制

python中类方法和静态方法的区别

python类方法和实例方法相似,它最少也要包含一个参数,只不过类方法中通常将其命名为cls,Python会自动将该类本身绑定给cls参数。也就是说,我们在调用类方法时,无需显式为cls参数传参。
静态方法没有类似self,cls这样的特殊参数,因此python解释器不会对它包含的参数做任何类或对象的绑定。类的静态方法中无法调用任何类属性和类方法

python多线程怎么实现

python提供多线程编程的模块有以下几个:

  1. _thread
  2. threading
  3. Quene
  4. multiprocessing

python的传参是传值还是传值

说传值或者传引用都不准确,非要安一个确切的叫法的话,叫传对象

当退出python时是否释放所有内存分配?

答案是否定的,哪些具有对象循环引用或者全局命名空间引用的变量,在python退出时往往不会被释放。另外不会释放C库保留的部分内容

Python中的is和==有什么区别?

is比较的是两个对象的id值是否相等,也就是比较两个对象是否为同一个实例对象,是否指向同一个内存地址。==比较的是两个对象的内容是否相等

gbk和utf8的区别

GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准。GBK编码专门用来解决中文编码的,是双字节的

UTF-8编码是用以解决国际上字符的一种多字节编码,它对英文使用8位,中文使用24位来编码,对于英文字符较多的论坛则用utf-8节约空间。

range在python2和python3里的区别

在py2中,range得到的是一个列表
在py3中,range得到的是一个生成器,节约内存

init.py文件的作用以及意义

这个文件定义了包的属性和方法,它可以什么也不定义;可以只是一个空文件,但是必须存在。如果__init__.py不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入或者包含其他的模块和嵌套包
或者可以这样理解,当我们导入这个包的时候,init.py文件自动运行,帮我们导入了这么多个模块,我们就不需要将所有的import语句写在一个文件里了,也可以减少代码量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python 面试手册是一本关于Python编程语言的面试指南。它旨在帮助面试者准备Python相关的面试,并提供了一系列常见的面试问题和答案。 这本手册通常分为几个主题,每个主题都涵盖了不同的Python概念和知识点。主题可能包括数据类型、函数、类、模块、异常处理、文件处理、数据库、网络编程等等。对每个主题,手册提供了一些常见的面试问题,例如如何声明和使用变量、如何定义和调用函数、如何创建类、如何导入和使用模块等等。 手册还提供了详细的答案解释,解释了每个问题的正确答案和相关概念。这些解释通常提供了代码示例,以帮助读者更好地理解和记忆。 对于那些希望通过面试的人来说,这本手册是一个宝贵的资源。它不仅提供了一些建议和技巧,以帮助他们在面试中更好地回答问题,还提供了一个全面的参考,以帮助他们复习和巩固他们在Python方面的知识。 然而,需要注意的是,手册只是一个指导,面试者还应该根据自己的实际经验和理解来回答问题。在面试中,重要的是能够清晰、简洁地表达自己的思想,并展示自己的编程技能和解决问题的能力。掌握了手册中的知识只是一个开始,面试者还应该能够将其灵活应用于实际问题中。 总的来说,Python面试手册是一个有价值的资源,可以帮助面试者准备和复习Python编程相关的知识和技能,提高他们在面试中的竞争力。 ### 回答2: 《Python面试手册》是一本专门针对Python面试而编写的参考书籍。该手册涵盖了Python基础知识、面向对象编程、常用数据结构和算法、数据库操作、网络编程、多线程与多进程、正则表达式、异常处理等内容。 首先,该手册详细介绍了Python的基础知识,包括变量、数据类型、运算符、控制流等。读者可以通过这部分内容掌握Python的基本语法和常用语法特性。 接着,手册重点介绍了Python的面向对象编程。读者将学习到类的定义与继承、实例化、属性和方法的概念以及面向对象的设计原则。这部分内容对于理解Python中的类和对象非常重要。 此外,手册还提供了常见的数据结构和算法的实现,如列表、字典、集合、堆排序、二分查找等。这些内容对于面试者在解决实际问题时非常有帮助。 手册还涵盖了数据库操作、网络编程、多线程与多进程、正则表达式和异常处理等高级话题。这些内容有助于提高读者在这些领域的技能。同时,手册还提供了一些实际的面试题和解析,帮助读者更好地准备面试。 总的来说,该手册是一本系统地总结Python知识和技巧的参考书籍。它可以帮助读者更好地掌握Python编程,提升面试竞争力。无论是初学者还是有一定经验的Python开发者,都可以从中受益匪浅。 ### 回答3: Python面试手册是一本关于Python编程的参考书籍,用于帮助面试者准备Python相关的面试问题和考察重点。 这本面试手册首先对Python的基础知识进行了梳理,包括数据类型、变量、运算符、控制流语句等,帮助读者加深对Python语法和基本概念的理解。 其次,面试手册还介绍了Python的常用模块和库,如NumPy、Pandas、Matplotlib等,这些库在数据分析和可视化等领域广泛应用。通过学习这些模块和库的使用方法,读者可以更好地应对相关的面试问题。 此外,面试手册还包含了Python的面向对象编程(OOP)的相关内容,包括类、对象、继承、封装等。虽然OOP在Python编程中起到了重要作用,但在面试中也是经常被问到的重点内容。 最后,面试手册还提供了一些常见的 Python 面试题,帮助读者熟悉面试过程和题型,并提供了答案和解析,以帮助读者更好地理解和掌握这些问题。这些问题涵盖了 Python 的各个知识点,有助于读者全面提升自己的面试技巧和应试能力。 总的来说,Python面试手册是一本全面而系统的面试参考书,可以帮助读者准备Python相关的面试,提供了Python的基础知识、常用模块和库、面向对象编程以及常见面试题等内容。通过阅读和学习这本手册,读者可以更好地应对Python面试,提高自己的竞争力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值