1574 вопроса по Python с технических собеседований
1574 вопроса1634 компании353 технологии
Что проверяют на интервью
Как устроена подборка
На странице собраны вопросы по Python — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: python, backend, database.
На Linux с systemd создайте отдельный service unit с пользователем, рабочим каталогом, абсолютным путём к Python и политикой перезапуска. Затем включите автозапуск через systemctl enable.
Проблема N+1 возникает, когда после выборки постов выполняется отдельный count для каждого. Посчитайте связанные строки агрегированным SQL-запросом, возвращая только числа.
Список по умолчанию создаётся один раз при определении функции и затем разделяется всеми вызовами без my_list. Поэтому элементы неожиданно накапливаются между вызовами.
В CPython подсчёт ссылок отвечает за освобождение многих объектов, а циклический GC обнаруживает недостижимые циклы контейнеров. Внутренний allocator управляет повторным использованием памяти.
Создайте отдельный словарь в замыкании декоратора и сохраняйте результат по ключу аргументов. Проверка наличия ключа, а не истинности результата, позволяет кешировать None, 0 и False.
Python управляет временем жизни объектов автоматически; конкретный механизм зависит от реализации. В CPython подсчёт ссылок дополняется сборщиком циклических ссылок и внутренними аллокаторами памяти.
Golden Signals — задержка, трафик, ошибки и насыщение ресурсов. Для Python-сервиса показывайте частоту запросов, p50/p95/p99, долю ошибок и признаки исчерпания CPU, памяти, пулов и очередей.
Нет: средняя O(1) у dict не исключает худшую O(n). Даже встроенные ключи могут иметь коллизии; рандомизация строковых хешей снижает некоторые атаки, но не отменяет теоретическую деградацию.
PyMalloc группирует небольшие выделения в блоки классов размеров, pools и arenas. Освобождение объекта часто возвращает блок внутреннему аллокатору, а не немедленно ОС.
Для CPU-профилирования подходят cProfile и sampling-профилировщики, для памяти — tracemalloc и специализированные инструменты. Выбор зависит от того, ищете ли вы CPU, I/O-ожидание или рост памяти.
Декоратор — вызываемый объект, который принимает функцию или класс и возвращает замену. Запись @decorator над функцией эквивалентна присваиванию func = decorator(func).
Duck typing ориентируется на поддерживаемые операции, а не на наследование от конкретного класса. Структурная статическая типизация выражает похожую идею через Protocol, но это не одно и то же.