🐍 Python  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Сложный  · 

Эффективность и память

Учит оценивать сложность, избегать лишних копий и находить узкое место измерениями. Вопросы требуют проследить выполнение, сравнить близкие варианты и заметить условие, которое меняет результат в блоках «Сложность», «Память объектов», «Профилирование» и «Оптимизация». Все задания рассчитаны на CPython 3.12; отличия других реализаций или версий учитываются только там, где это прямо оговорено.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Версия: CPython 3.12. Выберите один ответ из четырёх. На 20 вопросов отведено не меньше 40 минут; код лучше читать построчно. После завершения вы увидите общий процент, четыре тематические шкалы и объяснение каждого ответа.
Вопрос 1 из 20
Какова сложность проверки in?
Вопрос 2 из 20
Почему генератор экономит память?
Вопрос 3 из 20
Какие данные соберёт `cProfile.run("work()")` при выполнении функции `work`?
Вопрос 4 из 20
Нужно выбрать проектный порядок оптимизации программы. Что следует улучшать первым?
Вопрос 5 из 20
В алгоритме дедупликации допущена ошибка выбора структуры: проверка идёт по растущему списку. Почему код становится квадратичным?
Вопрос 6 из 20
Что создаёт лишнюю копию?
Вопрос 7 из 20
Когда timeit уместнее cProfile?
Вопрос 8 из 20
Что выведет sys.getsizeof?
Python
import sys
a=[0]*1000
print(sys.getsizeof(a)>sys.getsizeof(iter(a)))
Вопрос 9 из 20
Почему множество ускоряет дедупликацию, но не всегда заменяет список?
Вопрос 10 из 20
Что быстрее по порядку роста?
Вопрос 11 из 20
Как найти утечку памяти Python-объектов?
Вопрос 12 из 20
Почему конкатенация строк в цикле может быть дорогой?
Вопрос 13 из 20
Что важнее при оптимизации веб-запроса, который 95% времени ждёт базу?
Вопрос 14 из 20
Как помогает __slots__?
Вопрос 15 из 20
Почему кэш может ухудшить систему?
Вопрос 16 из 20
Перед `sum` построено списковое включение со всеми квадратами. Где возникает дополнительный пик памяти?
Вопрос 17 из 20
На очень маленьком наборе данных алгоритм с лучшей асимптотикой оказался медленнее. Что объясняет этот граничный результат?
Вопрос 18 из 20
Что измеряет разность двух вызовов `time.perf_counter()` вокруг операции?
Вопрос 19 из 20
Профиль показывает: в цикле по миллиону записей выполняется `item.id in blocked_ids`, где `blocked_ids` — список из десятков тысяч значений. Как снизить асимптотику без изменения результата?
Вопрос 20 из 20
Список используется как очередь и часто выполняет `pop(0)`. Какая работа скрыта за каждым удалением?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу