XTX Markets interview question

Explain how memory management works in Python. What is the GIL, and how does it affect multithreading? When should you use asyncio versus multiprocessing? How do generators work? What are iterators? What are decorators? What is a context manager? How does the garbage collector work? What is the difference between copy and deepcopy? What are mutable and immutable objects?