Python: ETL держит в памяти 20 млн объектов Point(x, y) и упирается в RAM. Коллега предлагает добавить `__slots__ = ("x", "y")`. Что это даст и какой ценой?
Pythonmediummiddle
Проверяет знание Python и pandas для анализа данных.
pythonslotsmemoryperformance
Варианты ответа
Сэкономит RAM только если объекты заморожены: `__slots__` работает как frozen dataclass и запретит менять x и y после `__init__`, что сломает текущий код
Память не изменится: `__slots__` ускоряет только создание объекта, а `__dict__` всё равно выделяется лениво при первом обращении к любому атрибуту инстанса
Память на инстанс заметно упадёт (у объектов исчезнет `__dict__`), доступ к атрибутам чуть ускорится; зато атрибут нельзя добавить на лету и усложнится multiple inheritance
Поможет только на Python 3.12+: в более ранних версиях `__slots__` игнорируется интерпретатором и работает лишь как подсказка для статических анализаторов
Как разобрать этот вопрос на собеседовании
Подумай, какая структура данных и какой инструмент pandas решают задачу с наименьшей сложностью: векторизация вместо циклов, groupby/merge вместо ручных склеек, корректная работа с NaN и типами. Интервьюер смотрит на читаемость кода и на то, понимаешь ли ты, что происходит «под капотом» — копия или вью, сложность операции, утечки памяти на больших данных.
На собеседовании по такому вопросу важно не только назвать ответ, но и кратко объяснить, почему он верный.
Тема вопроса — «Python». Чтобы подготовиться к похожим задачам, отрабатывай их на практике: python-тренажёр помогает довести навык до автоматизма, а раздел вопросов — увидеть формулировки, которые реально встречаются на интервью аналитика данных.
Разбор ответа
Подробный разбор с объяснением «почему правильный ответ верный» и почему остальные неверны — после регистрации.
3000+ вопросов с разбором, quiz-режим с проверкой, AI-собес и подготовка к интервью аналитика.