Встречается на 1% собеседований по Python
Как решается кольцевая зависимость в сборщике мусора (Garbage collector)
В Python используется алгоритм подсчёта ссылок (reference counting) для управления памятью, но он не может обнаружить циклические ссылки. Для этого применяется дополнительный сборщик мусора (gc module), который использует алгоритм mark-and-sweep:
- Mark: Обходит все объекты, помечая достижимые (те, на которые есть ссылки из корневых объектов)
- Sweep: Удаляет все непомеченные объекты (циклические ссылки без внешних связей)
Пример циклической ссылки:
python
class Node:
def __init__(self):
self.ref = None
a = Node()
b = Node()
a.ref = b
b.ref = a # Циклическая ссылкаКак решить:
- Вручную разорвать ссылки (
a.ref = None) - Использовать
weakrefдля слабых ссылок - Положить на сборщик мусора (gc.collect())

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы