Сколько занимает в памяти `{i: i for i in range(1_000_000)}` примерно? И `[i for i in range(1_000_000)]`?
Pythonhardsenior
Проверяет знание Python и pandas для анализа данных.
memorydictlistsys.getsizeofpython
Варианты ответа
dict ~50 MB, list ~8 MB. Dict хранит hash-table с buckets под расширение (load factor ≈ 2/3), list — компактный массив из 8-байтных PyObject указателей
dict ~100 MB, list ~30 MB. Dict хранит дубли key+value в двух местах для O(1) lookup, list использует skip-list для оптимизации операций insert/delete
Оба ~16 MB. Python использует одинаковую memory-layout стратегию для всех container-типов начиная с Python 3.7, разница только в methods и API
dict ~8 MB, list ~50 MB. List резервирует место под expansion с capacity-doubling, dict хранит компактнее через open addressing и оптимизации dict.clear()
Как разобрать этот вопрос на собеседовании
Подумай, какая структура данных и какой инструмент pandas решают задачу с наименьшей сложностью: векторизация вместо циклов, groupby/merge вместо ручных склеек, корректная работа с NaN и типами. Интервьюер смотрит на читаемость кода и на то, понимаешь ли ты, что происходит «под капотом» — копия или вью, сложность операции, утечки памяти на больших данных.
Это вопрос продвинутого уровня — на собеседовании по нему обычно идут уточняющие follow-up вопросы, поэтому держи в голове крайние случаи и альтернативные решения.
Тема вопроса — «Python». Чтобы подготовиться к похожим задачам, отрабатывай их на практике: python-тренажёр помогает довести навык до автоматизма, а раздел вопросов — увидеть формулировки, которые реально встречаются на интервью аналитика данных.
Разбор ответа
Подробный разбор с объяснением «почему правильный ответ верный» и почему остальные неверны — после регистрации.
3000+ вопросов с разбором, quiz-режим с проверкой, AI-собес и подготовка к интервью аналитика.