Встречается на собеседованиях • сегодня
Как решается кольцевая зависимость в сборщике мусора (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
интервью вопросы и ответы