Python задачи и вопросы
1.23K subscribers
426 photos
1 file
154 links
Задачи и вопросы с собеседований по python разного уровня сложности

По рекламе: @cyberJohnny
Download Telegram
Что делает subprocess.run (subprocess.run)(cmd, check=True)?

👾 — Печатает вывод в реальном времени
👍 — Бросает CalledProcessError, если код выхода ≠ 0
🥰 — Автоматически убивает процесс через 10 секунд
⚡️ — Включает shell=True по умолчанию

Библиотека задач по Python
Чем typing.Any отличается от object?

👾 — Any — то же самое, что object
👍 — Any совместим со всем и «протекает» проверки; object — верхний тип, но требует явных проверок/кастов для специфичных методов
🥰 — object запрещает присваивания переменных других типов
⚡️ — Any делает объект неизменяемым

Библиотека задач по Python
Что делает __all__ в модуле?

👾 — Управляет getattr при отсутствии атрибутов
👍 — Определяет, какие имена экспортируются при from module import *; прямой import module не затрагивает
🥰 — Полностью скрывает имена от любых импортов
⚡️ — Ускоряет импорт, пропуская «лишние» имена

Библиотека задач по Python
Что означает, если __exit__(exc_type, exc, tb) возвращает True?

👾 — Исключение пробрасывается дальше
👍 — Исключение подавляется, блок with не выбросит его наружу
🥰 — Контекстный менеджер перезапускает тело with
⚡️ — Тип исключения меняется на RuntimeError

Библиотека задач по Python
Что будет у functools.lru_cache, если аргумент не хешируемый (например, list)?

👾 — Автоматически скопирует и захеширует любой аргумент
👍 — Построит ключ из args/kwargs; при нехешируемом аргументе бросит TypeError на вызове
🥰 — Нехешируемые аргументы игнорируются при ключе
⚡️ — Учитывает только позиционные аргументы, kwargs игнорируются

Библиотека задач по Python
Что представляют собой генераторы в Python, как функционирует метод send() в этих генераторах и каким образом его можно применять для управления их поведением?

Генераторы в Python представляют собой функции, которые применяют оператор yield для возврата значений и временной приостановки выполнения. С помощью метода send() можно отправлять данные обратно в генератор, которые затем могут быть использованы при следующем возобновлении его работы. Это делает генераторы двусторонними, позволяя не только получать значения, но и передавать данные внутрь.

Библиотека задач по Python
В Django-приложении при росте нагрузки база данных начинает работать медленно из-за большого числа однотипных SQL-запросов. Какой подход наиболее правильный для оптимизации?

👾 — Использовать select_related / prefetch_related для снижения количества запросов
👍 — Переписать все запросы ORM на raw() SQL
🥰 — Увеличить таймаут подключения к базе
⚡️ — Добавить больше воркеров Gunicorn/Uvicorn, чтобы база обрабатывала запросы быстрее

Библиотека задач по Python
👍1