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

По рекламе: @cyberJohnny
Download Telegram
Чем корректно отдавать большой поток данных?

👾 — Response с JSON
👍 — StreamingResponse
🥰 — FileResponse всегда загружает весь файл в память
⚡️ — HTMLResponse

Библиотека задач по Python
Что выведет код сверху?

👾 — Ошибок нет
👍 — Деление на ноль!
🥰 — ZeroDivisionError
⚡️ — Ничего

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

👾 — 9
👍 — [9, 1, 3]
🥰 — [3, 6]
⚡️ — Error
Библиотека задач по Python
👎1
Что даёт asyncio.TaskGroup по сравнению с gather?

👾 — Запускает задачи параллельно и скрывает исключения
👍 — При первом исключении отменяет остальные, дожидается их и выбрасывает ошибку после with
🥰 — Выполняет задачи строго последовательно
⚡️ — Требует вручную вызывать cancel() для каждой задачи при ошибке
Библиотека задач по Python
Как корректно задать мутируемый дефолт в dataclass?

👾 — items: list[str] = []
👍 — items: list[str] = field(default_factory=list)
🥰 — items как tuple, а в post_init конвертировать в list
⚡️ — Общая для всех экземпляров переменная класса items = []
Библиотека задач по Python
👍1
Зачем использовать contextvars.ContextVar вместо threading.local в async-коде?

👾 — Потому что быстрее при тех же семантиках
👍 — Даёт изоляцию на задачу: значение «течёт» через await внутри Task, но не между задачами/потоками; threading.local изолирует только по потоку и протекает между корутинами
🥰 — Автоматически сериализует состояние между процессами
⚡️ — Разрешает безопасно менять глобальные переменные
Библиотека задач по Python
Что делает __slots__ в классе?

👾 — Делает экземпляры неизменяемыми и хешируемыми
👍 — Убирает dict у экземпляров и запрещает произвольные атрибуты, оставляя только перечисленные слоты (меньше памяти)
🥰 — Превращает класс в dataclass
⚡️ — Включает GIL-оптимизации для всех операций
Библиотека задач по Python
Как в Python 3.11+ выполнить блокирующую функцию из async-кода без доступа к loop?

👾 — await func()
👍 — await asyncio.to_thread(func, *args)
🥰 — time.sleep() внутри корутины
⚡️ — await asyncio.sleep(0) перед вызовом
Библиотека задач по Python
Как перезагрузить импортированный модуль?

Чтобы перезагрузить импортированный модуль в Python, вы можете использовать функцию reload() из модуля importlib.

Замените module_name на фактическое имя модуля, который вы хотите перезагрузить.
Это может быть полезно при разработке и тестировании модулей, но не рекомендуется использовать в производственном коде без серьезных причин.

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

👾 — ['Hello', 'World']
👍 — ['HELLO', 'WORLD']
🥰 — ['None', 'None']

Библиотека задач по Python
👍1🎉1
Что выведет код сверху?

👾 — 20
👍 — 45
🥰 — 54
⚡️ — 4.5

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

👾 — Обе делают глубокую копию
👍 — copy копирует только контейнер, вложенные объекты — по ссылке; deepcopy рекурсивно копирует всё
🥰 — Обе лишь увеличивают счётчик ссылок
⚡️ — deepcopy быстрее, поэтому всегда лучше

Библиотека задач по Python
👍2
Что делает yield from subgen?

👾 — Просто вызывает подгенератор и возвращает список
👍 — Делегирует итерацию/send/throw/close подгенератору и получает его return как результат (PEP 380)
🥰 — Запускает подгенератор параллельно в другом потоке
⚡️ — Гарантирует выполнение в отдельном процессе

Библиотека задач по Python
Что даёт @dataclass(frozen=True)?

👾 — Глубоко делает неизменяемыми и все вложенные объекты
👍 — Запрещает присваивания атрибутов (иммутабельность на уровне класса) и при eq=True по умолчанию делает экземпляр хешируемым
🥰 — Автоматически копирует все мутируемые аргументы
конструктора
⚡️ — Включает slots и уменьшает память

Библиотека задач по Python
Что делает asyncio.gather(..., return_exceptions=True)?

👾 — Отменяет все задачи при первом исключении
👍 — Возвращает исключения как элементы результата, не прерывая остальные задачи
🥰 — Полностью скрывает исключения и возвращает None
⚡️ — Автоматически перезапускает упавшие задачи

Библиотека задач по Python
Зачем нужен from __future__ import annotations?

👾 — Включает проверку типов в рантайме и кидает ошибки при несоответствии
👍 — Откладывает вычисление аннотаций (хранятся как строки), упрощая forward refs и циклические импорты
🥰 — Автоматически импортирует typing и делает аннотации обязательными
⚡️ — Превращает аннотации в комментарии и удаляет их из annotations

Библиотека задач по Python
Почему нельзя вызывать asyncio.run() внутри уже работающего event loop (например, в Jupyter/ASGI)?

👾 — Потому что asyncio.run требует Python 3.12+
👍 — У него свой цикл событий; внутри активного цикла бросит RuntimeError. Нужно await корутину или создавать задачу (asyncio.create_task)
🥰 — Он автоматически вкладывает циклы друг в друга
⚡️ — Это всего лишь алиас loop.run_until_complete

Библиотека задач по Python
Как внутри вложенной функции изменить переменную из внешней (но не глобальной) области?

👾 — global x
👍 — nonlocal x
🥰 — Просто x = ... — изменит замыкание автоматически
⚡️ — locals()['x'] = ...

Библиотека задач по Python
Чем functools.cached_property отличается от @property?

👾 — Всегда вычисляет заново при каждом доступе
👍 — Вычисляет один раз на экземпляр и кеширует; можно сбросить del obj.attr
🥰 — Делит кеш между всеми экземплярами класса
⚡️ — Автоматически кэширует результаты корутин

Библиотека задач по Python
Кризис в диджитал

Все говорят о кризисе: бюджеты режут, рынок сжимается, конкуренция растёт. В digital это ощущается сильнее всего – давление на эффективность и сроки стало нормой. Но паника ничего не меняет.

Мы видим ситуацию иначе. Когда рынок штормит, выигрывают не те, у кого больше ресурсов, а те, кто умеет быстро перестраиваться, усиливать процессы и работать точнее.

Мы знаем, как проходить спад: что оптимизировать, что автоматизировать, какие метрики реально важны, что помогает удерживать клиентов, а что – только создаёт иллюзию контроля.

В итоге несколько авторов digital-каналов решили объединиться и собрать всё полезное в одну папку — «Документы для тех, кто в digital»

🔴 Там 30 файлов, которые помогают выстроить управление, аналитику и внутренние процессы:

– Мотивация сотрудников в IT,

– Контроль сроков диджитал-проекта,

– Шаблон CSI,

– Фреймворк для проведения исследований через ИИ,

– Как создать продающее КП.

📂 Ссылка на папку: https://t.iss.one/addlist/mUVeZHwtrzc0NWYy

А чтобы добавить немного азарта — среди подписавшихся разыграют:

🥇 iPhone Air;
🥈 Яндекс Станцию Лайт 2;
🥉 HUAWEI Freebuds 5.

Как участвовать:

1. Подпишись на папку: https://t.iss.one/addlist/mUVeZHwtrzc0NWYy
2. Подтверди участие в боте

🗓 Итоги — 25 ноября.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Зачем в multiprocessing на Windows нужен if __name__ == "__main__":?

👾 — Чтобы было быстрее
👍 — Чтобы избежать рекурсивного спавна: Windows использует spawn и повторно импортирует модуль; гард не даст выполнить модульный код в дочернем процессе
🥰 — Нужен для совместимости с Python 2
⚡️ — Он отключает GIL в дочерних процессах

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