Вернуться в видеотекуСобеседование на позицию Senior Python Developer 5000$ #12
Разбор ответов кандидата на техническом интервью по Python backend: concurrency, Redis, Celery, нагрузка и масштабирование баз данных. В конце обсуждается пример миграции связанных таблиц с сохранением ссылок.
- Направление
- Backend
- Формат
- Техническое собеседование
- Грейд
- Senior
- Длительность
- 21 мин
Коротко о видео
Техническое интервью на Senior Python Developer охватывает асинхронность и многопоточность, выбор механизма для параллельной загрузки файлов в S3, Redis Pub/Sub и Celery. Далее кандидат отвечает о нагрузочном тестировании, шардировании и репликации БД, а также о причинах долгих запросов и подходе к сложной миграции данных с внешними ключами. Часть ответов сформулирована кандидатом как практический опыт или собственное мнение.
Затронутые темы
Что взять на заметку
- Для I/O-задач обсуждаются asyncio, потоки и multiprocessing; в примере с десятью загрузками в S3 кандидат предпочитает потоки, а для большего объёма — асинхронность.
- Redis Pub/Sub подходит для обновлений в реальном времени, где потеря отдельного сообщения приемлема, например для свежей геопозиции транспорта; сообщения не сохраняются для отключённого подписчика.
- Для гарантированной доставки кандидат предлагает рассматривать RabbitMQ с семантикой at-least-once или Kafka, где потребитель может перечитывать сообщения.
- Celery полезен прежде всего для отложенных и периодических задач: самостоятельная реализация потребует хранения задач, фонового чтения и собственного планировщика.
- Нагрузочное тестирование следует строить на реалистичных сценариях: число пользователей, частота запросов к популярному endpoint и доступные ресурсы помогают выбрать размер инфраструктуры.
- При оптимизации БД стоит проверять кэширование, корректность и тип индексов, профилировать SQL и сериализацию, а для отчётов рассматривать денормализацию. При шардировании важно предотвращать перекос нагрузки на «горячих» ключах.