Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 582новые вакансии за сутки·92 562вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 220
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 402 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 105
  • Облачные технологии14 068
  • QA вакансии3 460
  • Backend вакансии2 098
  • Инженер данных1 796
  • Продакт-менеджер1 248

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии979
  • AI вакансии951
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 544
  • Node.js2 018
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP683
  • C++571

DevOps и инфраструктура

  • Kubernetes7 761
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 259
  • CI/CD3 240
  • Мониторинг и Observability1 782
  • SRE565
  • Кибербезопасность450

Аналитика и данные

  • Data Scientist1 127
  • Бизнес-аналитик925
  • Аналитик данных845
  • Системный аналитик154

Другие направления

  • Проджект-менеджер611
  • UI/UX дизайн145
  • Ручное тестирование14

По регионам

  • Вакансии в США43 686
  • Вакансии в Европе23 668
  • Вакансии в Канаде4 413
  • Работа в России3 909

По формату

  • Удалённые вакансии73 889
  • Релокация в США43 686
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии42 236
  • Middle вакансии20 545
  • Junior вакансии6 653

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме PythonВсе вопросы
PythonMiddleТеория

Что такое циклические ссылки и как Python их собирает?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Циклические ссылки — когда объекты держат друг друга, а внешних ссылок нет. Refcount их не освободит; cyclic GC (модуль gc, generational, по поколениям 0/1/2) находит недостижимые группы и удаляет. Используйте weakref для parent-back-refs.

Пример

import gc
import weakref


class Node:
    def __init__(self, name: str):
        self.name = name
        self.next: Node | None = None

    def __del__(self):
        print(f"del {self.name}")


# Создаём цикл: a -> b -> a
a = Node("A")
b = Node("B")
a.next = b
b.next = a

# refcount A и B по 2 (внешняя ссылка + ссылка из соседа)
# del убирает внешние, остаётся цикл
del a, b
print("collected:", gc.collect())  # collected: 2 + сообщения del A / del B


# Решение: weakref для обратной ссылки
class Parent:
    def __init__(self):
        self.children: list[Child] = []


class Child:
    def __init__(self, parent: Parent):
        self.parent = weakref.ref(parent)  # не удерживает parent


p = Parent()
c = Child(p)
p.children.append(c)
del p
# parent умирает сразу по refcount = 0, без gc.collect()
print(c.parent())  # None

Что это

CPython управляет памятью двумя механизмами: reference counting (основной) и cyclic garbage collector (модуль gc) для случаев, которые refcount не вытянет. Циклическая ссылка возникает, когда объекты A и B держат друг друга (напрямую или через цепочку), и из программы на них уже нет ссылок. Refcount каждого больше нуля — refcount не освободит.

Как работает cyclic GC

  • GC отслеживает только container-объекты (списки, словари, классы, замыкания). Числа, строки, tuple из неконтейнеров не трекаются.
  • Generational: 3 поколения (0, 1, 2). Новые объекты идут в gen 0, выжившие — в старшие. Пороги: gc.get_threshold() == (700, 10, 10).
  • Алгоритм Колдер-Бэкона: GC временно вычитает «внутренние» ссылки внутри подозрительного подграфа и смотрит, остался ли у кого-нибудь refcount > 0. Если нет — группа недостижима, она освобождается.

Управление GC

  • gc.collect() — форсированный проход (можно по поколению).
  • gc.get_stats(), gc.get_objects(), gc.get_referrers(x) — диагностика.
  • gc.disable() в hot path и потом gc.enable() — иногда полезно (например, при массовой загрузке данных), но осторожно.
  • gc.set_debug(gc.DEBUG_LEAK) печатает несобираемые объекты.

Подводные камни

  • Двусторонние parent/child без weakref — типичный источник большого RSS у Django/SQLAlchemy сессий.
  • Замыкания в декораторах удерживают захваченные объекты, образуя циклы через self.
  • Раньше (до Python 3.4) __del__ у объектов в цикле приводил к gc.garbage — цикл не собирался. С PEP 442 это исправлено, но __del__ с побочными эффектами всё равно плохая идея.
  • Внешние ресурсы (файлы, сокеты, БД-соединения) лучше закрывать через with/contextlib.closing — не полагаться на GC.
  • Путать цикл и обычную утечку через глобальный список/кеш — GC не поможет, нужен weakref.WeakValueDictionary или явный evict.

Частые вопросы на собеседовании

  • Что такое truthy и falsy значения в Python?
  • Когда использовать threading?
  • Что такое type hints и зачем они нужны?
  • Как работает yield?

Типичные ошибки

  • Не показывать пример A -> B -> A.
  • Говорить, что refcount решает все случаи.
  • Не знать про weakref как инструмент.

Что проверяет интервьюер

  • Объясняет недостижимость извне.
  • Понимает роль gc.
  • Отличает цикл от удерживаемой ссылки.

Как вы знаете этот вопрос?

Проверить себя по теме Python →

Источники

  • https://docs.python.org/3/library/gc.html

Связанные темы

PythonDebuggingpython-internals

Вакансии с этим навыком

Python вакансии
  • AI Automation Architect
  • Managing Consultant, Databricks Data Engineering Lead
  • Data Scientist - Mechanicsburg, PA
  • Engineering Manager, Data Foundations
  • Software Developer – Analytics Data Platform (Data Reliability)