Что делает флаг -O при запуске Python (python -O main.py)?
Флаг -O удаляет assert и код, зависящий от истинности __debug__; это не универсальное ускорение программы. -OO дополнительно удаляет docstring.
Читать ответПодготовка к интервью
Разбирайте реальные вопросы, сверяйтесь с подробными ответами и готовьтесь по технологиям и компаниям.
Проверьте, насколько резюме подходит выбранной позиции, и получите рекомендации по улучшению.
Каталог
Флаг -O удаляет assert и код, зависящий от истинности __debug__; это не универсальное ускорение программы. -OO дополнительно удаляет docstring.
Читать ответGIL — блокировка обычной сборки CPython, позволяющая одному потоку исполнять Python-код в интерпретаторе в данный момент и упрощающая защиту его внутренних структур.
Читать ответДиректорию удобно создавать через pathlib.Path.mkdir(). Параметр parents=True создаёт родителей, а exist_ok=True разрешает уже существующий каталог.
Читать ответcompile(source, filename, mode) создаёт объект кода, но не выполняет его. exec/eval с отдельными globals не образуют безопасную песочницу для недоверенного Python и не предотвращают RCE.
Читать ответВ традиционной GIL-сборке CPython базовый заголовок содержит счётчик ссылок ob_refcnt и указатель типа ob_type; на обычной 64-битной платформе это суммарно 16 байт. Но это не весь размер объекта.
Читать ответПоддерживайте скользящее окно с максимум одним нулём. Его длина минус один — кандидат ответа, поскольку удалить нужно ровно один элемент, даже если все элементы окна равны единице.
Читать ответВ Bash без явной проверки ошибка копирования обычно не мешает следующему rm; в Python необработанное исключение копирования прервёт поток до удаления. Итог зависит от конкретной конструкции скрипта.
Читать ответПоиск, вставка и удаление в dict обычно имеют ожидаемую O(1) стоимость, но при плохих коллизиях возможен O(n). Полный обход и копирование требуют O(n) времени.
Читать ответДля Python list доступ по индексу — O(1), append и pop с конца — амортизированно O(1), вставка и удаление в середине — O(n). Поиск значения и проверка in также линейны.
Читать ответPyMalloc группирует небольшие выделения по классам размеров: arena содержит pools, а pool разбит на blocks одного размера. Освобождённый block обычно переиспользуется, а не немедленно отдаётся ОС.
Читать ответC-расширение — нативный модуль, работающий с объектами Python через C API. Старый код часто полагается на GIL как защиту общего состояния, поэтому отключение GIL требует аудита и синхронизации.
Читать ответФункция ищет минимальную подстроку, содержащую все различные символы a, но игнорирует их кратность. При пустом a она ошибается, а копирование каждого лучшего среза ухудшает сложность.
Читать ответ