引言
面试Python开发岗位时,不仅仅要会手撸代码,还要对Python的原理以及整体的架构有一个了解。下面整理了面试时常问的Python问题。
常见问题
1、python的垃圾回收机制
- Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用的问题。通过“分代回收”(generation collection)以空间换取时间来进一步提高垃圾回收的效率。
- 引用计数
原理:当一个对象的引用被创建或者复制时,对象的引用计数加1;当一个对象的引用被销毁时,对象的引用计数减1;当对象的引用计数减少为0时,就意味着对象已经没有被任何人使用了,可以将其所占用的内存释放了。
优点:简单,实时
缺点:
1、维护引用计数消耗资源
2、循环引用——致命弱点。(两个对象相互调用)时无法清理内存,发生内存泄露(无法及时清理内存造成系统浪费)。因此有下面两个方法的出现。 - 标记-清除
『标记清除(Mark—Sweep)』算法是一种基于追踪回收(tracing GC)技术实现的垃圾回收算法。它分为两个阶段:第一阶段是标记阶段,GC会把所有的『活动对象』打上标记,第二阶段是把那些没有标记的对象『非活动对象』进行回收。
对象之间通过引用(指针ÿ