Вернуться в видеотеку

Тестовое Middle Python-интервью о GIL и конкурентности

Кандидат объясняет синхронный и асинхронный код, потоки, процессы, GIL и race condition. В записи также есть разбор кода и итоговая обратная связь.

Источник: boreesych

Открыть на YouTube

Таймлайн

Коротко о видео

Middle Python-кандидат проходит тестовое интервью, целиком посвящённое конкурентности. После представления интервьюер просит сравнить синхронный и асинхронный код, объяснить I/O-bound задачи и ожидание операций. Затем кандидат разбирает разницу потоков и процессов, общую память потоков, GIL и способы его обхода. Отдельно обсуждаются выбор между потоками, процессами и async/await, переключение в асинхронном коде и ситуации, где усложнение вообще не нужно. В финале кандидат отвечает о race condition и синхронизации общего состояния, разбирает код с подвохом и получает обратную связь по уровню ответов.

Затронутые темы

Что взять на заметку

  • Потоки одного процесса разделяют память, тогда как процессы имеют отдельные адресные пространства.
  • Для I/O-bound операций обычно используют потоки или асинхронный ввод-вывод; CPU-bound работу в CPython часто выносят в отдельные процессы с учётом ресурсов и результатов замеров.
  • В обычной сборке CPython GIL не позволяет нескольким потокам одновременно исполнять Python-байткод, но не мешает перекрывать I/O-ожидание.
  • Race condition возникает при некоординированном доступе к общему изменяемому состоянию; её предотвращают синхронизацией или отказом от такого состояния.

Рекомендуем посмотреть

1:45:17
BackendMiddle

Мок-собеседование Python Developer: конкурентность и код-ревью

Публичное мок-собеседование Python-разработчика: память и хеширование в Python, генераторы, asyncio, PostgreSQL и пагинация API. В код-ревью сервиса с SQLAlchemy обсуждают транзакции, N+1, блокирующие вызовы, CPU-bound задачи, SQL-инъекции и фоновые воркеры.