Библиотека собеса по Python | вопросы с собеседований
6.05K subscribers
682 photos
14 videos
562 links
Вопросы с собеседований по Python и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/6587aafa

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Как избежать «висячих» задач и утечек при отмене в asyncio?

Используйте TaskGroup и asyncio.timeout, всегда await-ьте созданные задачи; при отмене ловите CancelledError, делайте cleanup в finally, закрывайте ресурсы (aclose/async with), а shield применяйте только к коротким критическим секциям.

Библиотека собеса по Python
4
Как реализовать контролируемый параллелизм и backpressure в asyncio, если внешние ресурсы (БД/HTTP) ограничены?

Ограничивайте конкуренцию asyncio.Semaphore/пулами соединений, очередьйте работу через asyncio.Queue с фиксированным размером и воркерами, ставьте явные таймауты (asyncio.timeout) и прокидывайте отмену. Не запускайте «тысячи gather»; используйте TaskGroup для структурированной конкуренции, rate-limit (токен-бакет) и ретраи.

Библиотека собеса по Python
👍4
⚡️ Механизм запущен, часики тикают

Прямо сейчас кто-то уже купил курс со скидкой 40%, открыл первый урок и уже на пути к MacBook Pro 14.

А ты всё ещё читаешь этот пост...

Дедлайны не ждут:

31 октября — скидка 40% сгорает
15 ноября — розыгрыш MacBook

🎯 Правила участия:

→ купить любой курс до 31 октября
→ отучиться 2 недели
→ написать #розыгрыш куратору

🕊️ Не упусти свой шанс
Как выполнять CPU-bound работу, не блокируя event loop, и масштабироваться по ядрам?

Не гоняйте CPU в asyncio: выносите в ProcessPoolExecutor/multiprocessing или нативные модули, которые освобождают GIL. Для кратких задач — loop.run_in_executor, для долгих — отдельные процессы с пулом и ограничением конкуренции. Учитывайте стоимость сериализации: пакуйте данные в memoryview/shared memory, а не в гигантские pickles.


Библиотека собеса по Python
👍2
Как работать с большими строками/байтами без лишних копий и перерасхода памяти?

Не конкатенируйте по одному кусочку; для строк используйте ''.join(...)/io.StringIO, для байтов — bytearray/io.BytesIO/memoryview (срезы без копий). Стримьте по чанкам, для файлов подойдёт mmap. Помните: срез bytes копирует, memoryview — нет.

Библиотека собеса по Python
Halloween Special — последний день магии! 👻

Успевай сегодня купить курсы со скидкой 40%!

А также участвуй в розыгрыше MacBook Pro 14 💻

После полуночи останется только тыква 🎃

🔮 Открой портал и выбери курс
Как работать с большими строками/байтами без лишних копий и перерасхода памяти?

Не конкатенируйте по одному кусочку; для строк используйте ''.join(...)/io.StringIO, для байтов — bytearray/io.BytesIO/memoryview (срезы без копий). Стримьте по чанкам, для файлов подойдёт mmap. Помните: срез bytes копирует, memoryview — нет.

Библиотека собеса по Python
1
Когда выбирать typing.Protocol вместо ABC и какие есть ограничения?

Protocol — для структурной типизации («утиная» совместимость) без наследования: достаточно совпадения сигнатур. Работает на уровне тайпчекера; для рантайм-проверок нужен @runtime_checkable и только isinstance/issubclass. Не хранит состояние и не навязывает реализацию — идеален для плагинных интерфейсов.

Библиотека собеса по Python
👍31
Разница между Django OneToOneField и ForeignKey Field?

Оба они являются наиболее распространенными типами полей, используемых в Django. Единственное различие между ними заключается в том, что поле ForeignKey состоит из параметра on_delete вместе с классом модели, поскольку оно используется для отношений «многие к одному», тогда как, с другой стороны, OneToOneField реализует только отношение «один к одному» и требует только класс модели.

Библиотека собеса по Python
Что делает функция scandir?

Функция os.scandir() в Python предназначена для получения итератора объектов os.DirEntry, которые представляют записи в указанном каталоге. Записи возвращаются в случайном порядке, при этом специальные записи '.' и '..' всегда будут находиться в начале списка.

Библиотека собеса по Python
Что такое old-style и new-style классы и в чем их различия?

— Old-style классы наследуются напрямую от класса type, тогда как new-style классы имеют наследование от класса object.

— New-style классы предлагают дополнительные функции, такие как дескрипторы, свойства и слоты, которые недоступны в old-style классах.

— В new-style классах метод __init__ вызывается при наследовании, в отличие от old-style классов.

— New-style классы являются предпочтительными, так как они полностью поддерживают принципы объектно-ориентированного программирования. Большинство библиотек требуют именно их использование.

Рекомендуется применять new-style классы, унаследованные от object, поскольку они обладают расширенными возможностями и лучше интегрируются с другими объектами.


Библиотека собеса по Python
Как реализовать корректный graceful shutdown в asyncio-сервисе без потери данных?

Ловите SIGTERM/SIGINT (Unix — loop.add_signal_handler), ставьте общий флаг/Event, отменяйте воркеры через TaskGroup/cancel(), ждите их в try/except CancelledError/finally. Давайте тайм-аут на дренаж очередей и завершение in-flight операций, корректно закрывайте пулы (БД/HTTP). В ASGI используйте lifespan-хуки (startup/shutdown).

Библиотека собеса по Python