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:併發和並行