Python: техническое собеседование Senior-разработчика
Запись технического интервью Senior Python/Backend-разработчика. После вопросов о Flask, asyncio, CI/CD, Terraform, Kubernetes, брокерах сообщений и базах данных кандидат выполняет задачу на рефакторинг и ускорение Python-функции.
- Опубликовано на YouTube:
- Просмотры на YouTube: 1,6 тыс.
- Лайки на YouTube: 37
Таймлайн
Коротко о видео
Техническое интервью начинается с разбора опыта кандидата: выбора Flask, asyncio и uvloop, CI/CD и Terraform, Kubernetes/EKS, облаков, Celery и брокеров сообщений, типизации, баз данных и Grafana/ClickHouse. Затем обсуждаются GIL, потоки и процессы, Ruff и способы взаимодействия сервисов. Во второй половине кандидат разбирает функцию на экране и проверяет гипотезы по её ускорению: ищет лишние выделения памяти и повторные вычисления, меняет код и сверяет результат с замерами. В конце затрагиваются PyPy и Cython как варианты дальнейшей оптимизации.
Затронутые темы
Что взять на заметку
- Обосновывайте выбор фреймворка контекстом проекта, требованиями и состоянием экосистемы на момент решения, а не только личным предпочтением.
- Разделяйте I/O-bound и CPU-bound задачи: GIL в CPython ограничивает параллельное выполнение Python-байткода, но потоки остаются полезны для I/O и расширений, освобождающих GIL.
- Не смешивайте Celery и брокер сообщений: Celery — система очередей задач, использующая брокер, например RabbitMQ, Redis или SQS.
- В оптимизации сначала фиксируйте замеры и профиль: перенос инвариантных вычислений из цикла и отказ от ненужных промежуточных списков могут помочь, но каждую микрооптимизацию нужно проверять бенчмарком.
- Выбирайте синхронные HTTP/RPC-вызовы или асинхронный обмен сообщениями по требованиям к ответу, задержке и надёжности доставки.