面试题-Python 进阶

Posted 小小菜_v

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题-Python 进阶相关的知识,希望对你有一定的参考价值。

Python 进阶(共 47 题)

1、Python 中类方法、类实例方法、静态方法有何区别?
https://blog.csdn.net/qq_42352516/article/details/117998792

2、Python 的内存管理机制及调优手段?
内存管理机制有:引用计数、垃圾回收、内存池。
调优的话只能自己手动垃圾回收,或者调高垃圾回收的阈值
https://blog.csdn.net/qq_37832564/article/details/88563326

3、内存泄露是什么?如何避免?
内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。
内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控 制,从而造成了内存的浪费。
有函数的对象间的循环引用是导致内存泄露的主凶。
不使用一个对象时使用: del object 来 删除一个对象的引用计数就可以有效防止内存泄露问题。
通过Python扩展模块gc 来查看不能回收的对象的详细信息。
可以通过sys.getrefcount(obj) 来获取对象的引用计数,并根据返回值是否为0来判断是否内存泄露

4、Python 函数调用的时候参数的传递方式是值传递还是引用传递?
https://blog.csdn.net/weixin520520/article/details/105487592

5、对缺省参数的理解? 缺省参数 定义函数时,可以给某个参数指定一个默认值,具有默认值的参数就叫做缺省参数
调用函数时,如果没有传入缺省参数的值,则在函数内部使用定义函数时指定的默认参数值。
函数的缺省参数,将常见的值设置为参数的缺省值,从而简化函数的调用

6、为什么函数名字可以当做参数用?
Python中一切皆对象,函数名是函数在内存中的空间,也是一个对象
对象的一般特征:
运行时创建
将变量或者元素赋值在一个数据结构中
可以作为一个参数传递给一个函数
可以作为函数的结果返回

7、Python 中 pass 语句的作用是什么?
在编写代码时只写框架思路,具体实现还未编写就可以用 pass 进行占位,使程序不报错,不会进行任何操作。

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

9、是否使用过functools中的函数?其作用是什么?
https://www.optbbs.com/forum.php?mod=viewthread&tid=13053007

10、json序列化时,默认遇到中文会转换成unicode,如果想要保留中文怎么办?
在序列化时,中文汉字总是被转换为unicode码,在dumps函数中添加参数ensure_ascii=False即可解决。

11、什么是断言?应用场景?
https://blog.csdn.net/weixin_33915554/article/details/93408938

12、有用过with statement吗?它的好处是什么?
https://blog.csdn.net/qq_42352516/article/details/118021463

13、简述 Python 在异常处理中,else 和 finally 的作用分别是什么? else 如果一个Try -
exception中,没有发生异常,即exception没有执行,那么将会执行else语句的内 反之,如果触发了Try -
exception(异常在exception中被定义),那么将会执行exception中的内容,而不执行else中的内容 finally
如果try中的异常没有在exception中被指出,那么系统将会抛出Traceback(默认错误代码),并且终止程序,接下来的所有代码都不会被执行,但如果有Finally关键字,则会在程序抛出Traceback之前(程序最后一口气的时候),执行finally中的语句。这个方法在某些必须要结束的操作中颇为有用,如释放文件句柄,或释放内存空间等。

14、map 函数和 reduce 函数?
https://blog.csdn.net/qq_42352516/article/details/117135987
https://blog.csdn.net/qq_42352516/article/details/117135747

15、递归函数停止的条件? 递归函数停止的条件一般定义在递归函数内部,在递归调用前要做一个条件判断,根据判断的结果选择是继续调用自身,还是
return 返回,停止递归。递归函数停止的条件: 判断递归的次数是否达到某一限定值 判断运算的结果是否达到某个范围等,根据设计的目的来选择

16、回调函数,如何通信的?

17、 setattr_,_getattr,__delattr函数使用详解?
https://blog.csdn.net/sinat_38682860/article/details/99729134

18、请描述抽象类和接口类的区别和联系?

19、请描述方法重载与方法重写?

20、什么是 lambda 函数? 有什么好处? https://www.cnblogs.com/lmh001/p/9790378.html

21、单例模式的应用场景有哪些?
https://blog.csdn.net/aaaaaaaa123321222/article/details/78953757

22、什么是闭包?
https://zhuanlan.zhihu.com/p/59968665

23、什么是装饰器?
https://blog.csdn.net/qq_42352516/article/details/118223231

24、函数装饰器有什么作用?
https://blog.csdn.net/qq_42352516/article/details/118223231

25、生成器、迭代器的区别?
https://blog.csdn.net/liangjisheng/article/details/79776008

26、多线程交互,访问数据,如果访问到了就不访问了,怎么避免重读?
创建一个已访问数据列表,用于存储已经访问过的数据,并加上互斥锁,在多线程访问数据的时候
先查看数据是否已经在已访问的列表中,若已存在就直接跳过。

27、Python 中 yield 的用法?
https://blog.csdn.net/liangjisheng/article/details/79776008

28、谈下 python 的 GIL? GIL
是python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。

多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大
https://zhuanlan.zhihu.com/p/194990821

29、Python 中的可变对象和不可变对象?
https://blog.csdn.net/xiongchengluo1129/article/details/78770095

30、一句话解释什么样的语言能够用装饰器?
函数可以作为参数传递的语言,可以使用装饰器

31、Python 中 is 和==的区别?
https://www.cnblogs.com/lilz/p/9410319.html

32、谈谈你对面向对象的理解?
https://www.cnblogs.com/raichen/p/5741872.html

33、Python 里 match 与 search 的区别?
match()和search()两者都是测试正则表达式与字符串是否匹配。不同的是,match()
如果在字符串的开头有0个或更多个字符,符合正则表达式模式,返回相关匹配的实例对象,如果字符串不符合正则表达式模式则返回None;
而search()则不同,扫描整个字符串,如果产生了一个匹配正则模式就寻找到这个位置,返回相关匹配的对象。如果没有位置能够匹配这个模式则返回None。

34、用 Python 匹配 HTML g tag 的时候,<.> 和 <.?> 有什么区别?
(.)是贪婪匹配,会把满足正则的尽可能多的往后匹配
(.
?)是非贪婪匹配,会把满足正则的尽可能少匹配

35、Python 中的进程与线程的使用场景?
多进程适合在CPU密集操作(cpu操作指令比较多,如位多的的浮点运算)。
多线程适合在IO密性型操作(读写数据操作比多的的,比如爬虫)

36、解释一下并行(parallel)和并发(concurrency)的区别?
https://blog.csdn.net/hayaqi0504/article/details/80004484

37、如果一个程序需要进行大量的 IO 操作,应当使用并行还是并发?
并行

38、如果程序需要进行大量的逻辑运算操作,应当使用并行还是并发?
并发

39、在 Python 中可以实现并发的库有哪些?

40、Python 如何处理上传文件?
https://blog.csdn.net/qq_42352516/article/details/118361879

41、请列举你使用过的 Python 代码检测工具? Pylint
https://www.cnblogs.com/shanghongyun/p/10545076.html

42、python 程序中文输出问题怎么解决? 用encode和decode

43、Python 如何 copy 一个文件?
shutil copy() 方法
os.open(“cmd”)

44、如何用Python删除一个文件?

45、如何用 Python 来发送邮件?
https://blog.csdn.net/qq_42352516/article/details/117925972

46、当退出 Python 时,是否释放全部内存?
进程退出后操作系统会回收进程所占用的全部内存。这和GC没有关系。Python都退出了,GC当然一起退出了,退出以后由于循环引用、malloc申请的内存导致GC没清理干净的,会由操作系统统一回收,
确保资源不会泄漏

47、什么是猴子补丁?
https://blog.csdn.net/kyle1314608/article/details/100589492

以上是关于面试题-Python 进阶的主要内容,如果未能解决你的问题,请参考以下文章

最强面试题整理第二弹:Python 进阶面试题(附答案)

最强面试题整理第二弹:Python 进阶面试题(附答案)

面试题-Python 进阶

面试题-Python 进阶

Python面试大全PDF(245道Python面试题)

Python面试重点(进阶篇)