Перейти к содержимому
На этой странице

Веб-разработка и API

Все темы Python Developer

Для чего Pydantic используют на границе API?

Pydantic применяют на недоверенной границе: модель описывает форму запроса или ответа, преобразует поддерживаемые представления, валидирует поля и выдает структурированные ошибки. После проверки код получает типизированный объект и сериализует его по явным правилам. API-модель не обязана совпадать с ORM-сущностью или доменной моделью: отдельные формы не дают внешнему клиенту случайно управлять внутренними полями. На внешней границе дополнительно ограничивают размер, время и права, а ошибки переводят в стабильный контракт ответа.


Что такое ASGI и чем он отличается от WSGI?

WSGI задает синхронный интерфейс Python-веб-приложения вокруг HTTP-запроса и ответа. ASGI описывает асинхронный обмен событиями и поддерживает долгоживущие соединения, включая WebSocket, а также обычный HTTP. ASGI не делает синхронный код неблокирующим: вызов блокирующей библиотеки внутри async def задержит event loop. WSGI-приложение можно адаптировать, но оно сохранит свою модель выполнения. На внешней границе дополнительно ограничивают размер, время и права, а ошибки переводят в стабильный контракт ответа.


Как middleware обрабатывает запрос и ответ в FastAPI?

HTTP middleware оборачивает следующий слой: выполняет код до call_next(request), получает ответ и выполняет код после него. Так добавляют correlation ID, метрики, общие заголовки и сквозную аутентификационную подготовку. Порядок регистрации определяет вложенность обработки и ошибок. Тяжелая бизнес-логика и блокирующий I/O в middleware увеличивают задержку каждого подходящего запроса; зависимости конкретного endpoint лучше выразить через Depends. На внешней границе дополнительно ограничивают размер, время и права, а ошибки переводят в стабильный контракт ответа.


Как работает Depends в FastAPI и чем он отличается от middleware?

Depends строит граф зависимостей конкретной операции: получает пользователя, сессию БД или сервис, переиспользует вложенные зависимости и позволяет подменить их в тесте. Зависимость с yield выполняет cleanup после запроса. Middleware охватывает поток запросов на уровне ASGI и подходит сквозным задачам. Проверку, нужную только выбранным endpoint, обычно задают зависимостью, а не условием в глобальном middleware. На внешней границе дополнительно ограничивают размер, время и права, а ошибки переводят в стабильный контракт ответа.


Когда выбрать WebSocket вместо обычного HTTP API?

WebSocket выбирают для частого двустороннего обмена с малой задержкой, когда сервер должен отправлять события без нового HTTP-запроса. Обычный HTTP проще масштабировать, кэшировать и повторять; keep-alive и HTTP/2 уже уменьшают стоимость многих запросов. WebSocket требует отдельной авторизации соединения, heartbeat, ограничения буферов, обработки разрыва и протокола восстановления пропущенных событий. Для односторонних обновлений иногда достаточно SSE. На внешней границе дополнительно ограничивают размер, время и права, а ошибки переводят в стабильный контракт ответа.

Собеседования: Python

Смотри записи интервью, узнай, какие вопросы задают и как отвечают кандидаты.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Python-разработчик, Backend-разработчик на Python. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.