Длинное техническое Python-собеседование на архитектурную позицию. Интервьюер последовательно проверяет системное мышление кандидата — от ОС и языка до БД, сетей, Kafka и процессов разработки.
Запись представляет собой техническое собеседование на позицию Python-архитектора: кандидат кратко описывает опыт и отвечает на последовательные вопросы интервьюера. Обсуждаются архитектурные решения, процессы и потоки, контейнеризация и виртуализация, Python-конкурентность, фреймворки, Go, микросервисы, базы данных, сети, Kafka, тестирование и релизный процесс. В конце кандидат приводит пример проекта по обработке геномных данных в AWS и заявляет, что удалось снизить ежемесячные расходы примерно со 150 до 20–30 тысяч долларов; дальнейшую судьбу проекта он не знает, поскольку работу остановили из-за политики хранения данных.
Для архитектурных решений полезно уметь обосновать итеративный и командный подход: один человек задаёт фундамент, а детали корректируются командой по мере разработки.
Нужно различать процессы, потоки, ядро ОС, виртуальные машины, контейнеры, WSL и Hyper-V; в собеседовании отдельно проверяют не только определения, но и связи между этими понятиями.
Стоит подготовить объяснение конкурентности в Python: `asyncio`, потоки, GIL, блокирующий I/O, а также роль сборщика мусора и циклических ссылок.
Кандидата спрашивают о практических компромиссах Django, Flask и FastAPI, а также о том, когда начинать с монолита и когда оправданы микросервисы.
Важно уверенно объяснять контекстные менеджеры, декораторы, замыкания, ООП, функциональные элементы Python, изменяемые и неизменяемые структуры данных.
По базам данных проверяют выбор SQL и NoSQL по модели данных, различие sharding и replication, ORM и проблему N+1, транзакции, индексы, connection pool и диагностику медленных запросов.
Для распределённых систем нужны базовые знания HTTPS/TLS, Kafka и RabbitMQ, подтверждения обработки сообщений, а также CI-пайплайнов, unit- и интеграционных тестов, code review и релизного процесса.