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

По рекламе: @cyberJohnny
Download Telegram
У вас есть высоконагруженное Django-приложение. Пользователи жалуются на медленные отклики при работе с ORM-запросами. Какой из подходов будет наиболее правильным для оптимизации?

👾 — Использовать select_related и prefetch_related для оптимизации запросов и уменьшения количества обращений к базе
👍 — Заменить все ORM-запросы на чистый SQL, так как он всегда быстрее
🥰 — Увеличить таймаут подключения к базе данных
⚡️ — Отключить транзакции, чтобы ускорить коммиты

Библиотека задач по Python
Вы случайно закоммитили секретные данные (пароль/ключ API) в публичный репозиторий. Какой из подходов наиболее правильный для удаления этой информации из истории?

👾 — Выполнить git reset --hard и закоммитить снова
👍 — Удалить файл локально и сделать новый коммит с исправлением
🥰 — Использовать git filter-repo (или git filter-branch) для переписывания истории и удалить секреты из всех прошлых коммитов
⚡️ — Просто добавить секрет в .gitignore, чтобы он больше не попадал в коммиты

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

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

Библиотека задач по Python
Можно ли объявить несколько присваиваний в одном выражении?

На изображении представлены оба варианта. В первой строке переменные a, b и c получают значения 3, 4 и 5 соответственно, а во второй строке все переменные устанавливаются в значение 3.

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

Варианты ответа:
👾 — Использовать readlines() для чтения всего файла в список
👍 — Читать файл построчно через итератор (for line in file:)
🥰 — Сначала загрузить файл в pandas.DataFrame, а затем обрабатывать
⚡️ — Использовать json.load() для загрузки файла в память

Библиотека задач по Python
Ваш Python-сервис должен обрабатывать большое количество одновременных HTTP-запросов. Вы замечаете, что при использовании потоков прироста производительности почти нет. Какой подход наиболее правильный?

👾 — Увеличить количество потоков в ThreadPoolExecutor, чтобы нагрузить CPU
👍 — Перейти на asyncio или uvloop, чтобы эффективно обрабатывать I/O-bound задачи без блокировок
🥰 — Использовать multiprocessing, создавая процесс на каждый запрос
⚡️ — Запускать gc.collect() вручную чаще, чтобы ускорить выполнение потоков

Библиотека задач по Python
Какой язык шаблонов используется по умолчанию в Django?

👾 — Django Template Language
👍 — HTML
🥰 — Jinja
⚡️ — XML

Библиотека задач по Python
Вы обрабатываете большие массивы числовых данных в Python, и профилирование показывает, что большинство времени тратится на циклы for со встроенными типами. Какой подход наиболее правильный для оптимизации?

👾 — Разбить массивы на списки поменьше и обрабатывать их по частям
👍 — Использовать специализированные библиотеки (например, NumPy), которые выполняют векторные операции вне GIL
🥰 — Переписать цикл на вложенные list comprehension
⚡️ — Принудительно запускать gc.collect() после каждой итерации

Библиотека задач по Python
Ваш Python-сервис обрабатывает большое количество сетевых запросов. При профилировании видно, что он простаивает, ожидая I/O. Какой подход наиболее правильный для повышения производительности?

👾 — Увеличить количество потоков в ThreadPoolExecutor
👍 — Перейти на asyncio/uvloop и использовать асинхронные драйверы для работы с I/O
🥰 — Запускать каждый запрос в отдельном процессе через multiprocessing
⚡️ — Чаще вызывать gc.collect() для освобождения памяти

Библиотека задач по Python
🙌🙌🙌🙌 30 документов для тех, кто в диджитал

В преддверии новой активности мы собрали в одну папку 30 Telegram-каналов известных профессионалов и попросили их авторов подготовить для вас документы, которые помогут:

🔴Провести исследование через ИИ;
🔴Сдавать работы и получать акт день в день;
🔴Контролировать сроки и качества проектов;
🔴Отслеживать упоминания бренда в нейропоиске;
🔴Провести аудит HR-процессов;
🔴и еще много много всего!

❗️ Сохранив единожды папку «Документы для тех, кто в диджитал», вы сможете спокойно пройтись по всем каналам и скачать множество авторских документов, которые точно пригодятся в работе.

Также они проводят розыгрыш с топовыми призами:
🥇Главный приз — MacBook Air (M2)
🥈2 место: Яндекс Станция Лайт 2
🥉3 место: Наушники HUAWEI Freebuds 5i

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

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

До встречи 25 сентября — дата объявления победителя!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2🎉2
Что выведет код?

👾 — False
👍 — True
🥰 — Error

Библиотека задач по Python
В Python-сервисе нужно обрабатывать большое количество CPU-bound задач (например, шифрование или обработку изображений). Вы используете ThreadPoolExecutor, но прироста производительности почти нет. Какой подход будет правильным?

👾 — Увеличить количество потоков в пуле до числа ядер × 10
👍 — Использовать ProcessPoolExecutor или multiprocessing, чтобы обойти GIL
🥰 — Переписать задачи на asyncio, чтобы они выполнялись конкурентно
⚡️ — Вставить вызовы gc.collect() внутри цикла, чтобы ускорить потоки

Библиотека задач по Python
👎1
Uvicorn/FastAPI-сервис использует asyncio и сторонние библиотеки, под капотом создающие потоки. Для CPU-bound задач вы подключили multiprocessing, но периодически ловите подвисания/краши при старте воркеров. Какой способ старта процессов корректнее выбрать?

👾 — fork — самый быстрый, поэтому всегда лучший выбор на Linux
👍 — spawn — запуск чистого интерпретатора, безопасен при наличии потоков/мьютексов у родителя
🥰 — forkserver — ничего не меняет относительно потоков, просто сложнее
⚡️ — Любой — способы эквивалентны на Linux

Библиотека задач по Python
В FastAPI вы кладёте correlation-id в contextvars.ContextVar в middleware. В логах он есть в хэндлерах, но иногда пропадает в коде, который выполняется через run_in_executor и в фоновых задачах asyncio.create_task(...). Что делать правильно?

👾 — Заменить ContextVar на глобальную переменную с мьютексом
👍 — Создавать фоновые задачи после установки ContextVar, а для run_in_executor запускать функцию через contextvars.copy_context().run(func, *args) для переноса контекста
🥰 — Перейти на threading.local(), он автоматически работает и в потоках, и в тасках
⚡️ — Включить uvloop — он сам перенесёт контекст в фоновые задачи и executor

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

👾 — [1, 1, 1, 1]
👍 — [0, 1, 1, 0]
🥰 — [1. 1. 1. 0]
⚡️ — Error

Библиотека задач по Python
Сервис создаёт миллионы однотипных небольших объектов (несколько фиксированных полей). Память растёт, GC давит. Что изменить в моделях, чтобы существенно снизить footprint и ускорить доступ к атрибутам?

👾 — Отключить GC через gc.disable()
👍 — Хранить данные в dict вместо объектов
🥰 — Использовать slots или @dataclass(slots=True) для моделей
⚡️ — Увеличить sys.setrecursionlimit()

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

👾 — 9
👍 — 6
🥰 — 4
🤔 — Error

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

👾 — 100 200 10 200
👍 — 10 200 10 200
🥰 — 100 100 10 20
⚡️ — 100 200 100 200

Библиотека задач по Python
В асинхронном сервисе (Python ≥ 3.11) нужно запустить группу независимых корутин и при первой ошибке гарантированно отменить остальные с корректной агрегацией исключений. Что выбрать?

👾 — asyncio.gather(*cors, return_exceptions=True)
👍 — asyncio.TaskGroup()
🥰 — loop.run_until_complete() по одной корутине в цикле
⚡️ — создать asyncio.create_task на каждую и игнорировать исключения в фоне

Библиотека задач по Python
This media is not supported in your browser
VIEW IN TELEGRAM
📅 24 сентября в 19:00 МСК — бесплатный вебинар с Максимом Шаланкиным.

Тема: «ИИ-агенты: новая фаза развития искусственного интеллекта».

🔹 Почему все говорят про ИИ-агентов и куда вливаются миллиарды инвестиций.
🔹 Чем они отличаются от ChatGPT и обычных ботов.
🔹 Как работает цикл агента: восприятие → планирование → действие → обучение.
🔹 Живое демо простого агента.
🔹 Потенциал для бизнеса: автоматизация процессов и ROI до 80%.

Не придёшь — будешь потом рассказывать, что «агенты — это как чат-боты», и ловить косые взгляды от коллег 😏

👉 Регистрируйтесь через форму на лендинге (https://clc.to/webinarAI)
🔥1