Q: Python垃圾回收机制/内存管理机制?
A:总体来说,在Python中,主要通过引用计数进行垃圾回收;通过 “标记-清除” 解决容器对象可能产生的循环引用问题;通过 “分代回收” 以空间换时间的方法提高垃圾回收效率。Python垃圾回收机制
Q:__new__和__init__的区别?
A:__new__作为构造器,起创建一个类实例的作用。而__init__作为初始化器,起初始化一个已被创建的实例的作用。__new__和__init__的区别
Q:Python字典dict实现原理?
A:散列表是一个在时间和空间上做出权衡的经典例子。如果没有空间(内存)的限制,那么可以直接将键作为数组的索引。那么所有的查找时间复杂度为 O(1);如果没有时间的限制,那么可以直接用数组,这样只需要很少的内存。字典dict实现原理
Q:实现一个单例模式?
A:
class Singleton(object):
def __new__(cls, *args, **kwargs):
if not hasattr(cls, 'instance'):
cls.instance = super().__new__(cls, *args, **kwargs)
return cls.instance
if __name__ == '__main__':
s = Singleton()
print(id(s))
s2 = Singleton()
print(id(s2))
Q:实现一个装饰器?
A:
def log(func):
def wrapper(*args, **kwargs):
print('log')
return func(*args, **kwargs)
return wapper
def logging(v):
def log(func):
def wrapper(*args, **kwargs):
print('log', v)
return func(*args, **kwargs)
return wapper
return log
@logging('vvv')
def run(k):
print('run:%s' % (k))
run('1')
Q:并发和并行?
A:并发和并行