下面我会详细讲解“Python工程师必考的6个经典面试题”的完整攻略。
1. 实现单例模式
单例模式指的是一个类只能创建一个实例。在Python中,实现单例模式有多种方法,包括使用装饰器、使用元类等。以下是使用装饰器的实现代码示例:
def singleton(cls):
instances = {}
def wrapper(*args, **kwargs):
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return wrapper
@singleton
class MyClass:
pass
在这个示例中,我们先定义了一个装饰器singleton
,它的作用是将某个类变成一个单例。当我们对MyClass
这个类应用这个装饰器时,MyClass
就成为了一个单例类。在调用MyClass
时,只会得到一个对于该类的实例对象。
2. 多线程交替打印
多线程交替打印指的是多个线程交替执行,每个线程执行完打印一个数字或字母,直到全部打印完毕。以下是使用锁的实现代码示例:
import threading
class PrintThread(threading.Thread):
def __init__(self, char, lock, condition):
super(PrintThread, self).__init__()
self.char = char
self.lock = lock
self.condition = condition
def run(self):
for i in range(10):
with self.lock:
print(self.char, end='')
self.condition.notify_all()
self.condition.wait()
if __name__ == '__main__':
lock = threading.Lock()
condition = threading.Condition()
threads = [PrintThread('A', lock, condition), PrintThread('B', lock, condition)]
with lock:
condition.notify_all()
for thread in threads:
thread.start()
for thread in threads:
thread.join()
print('\nDone.')
在这个示例中,我们定义了一个PrintThread
类继承自threading.Thread
,并重写了其run
方法,来实现交替打印的逻辑。在多个线程并行执行时,我们需要使用锁来保证线程安全,同时使用condition
来进行交替通知。最后,所有线程执行完毕后会输出Done.
作为结束标志。
以上就是将 Python 工程师必考的6个经典面试题完整攻略的讲解,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python工程师必考的6个经典面试题 - Python技术站