Мок-интервью Python-разработчика: asyncio, декораторы и память
Кандидат решает задачи о копировании, коллекциях и замыканиях, затем отвечает на вопросы об asyncio, декораторах и сборке мусора. Интервьюер даёт фидбэк по Python Core и обсуждает уровень кандидата.
- Опубликовано на YouTube:
- Просмотры на YouTube: 1,3 тыс.
- Лайки на YouTube: 9
Таймлайн
Коротко о видео
Открытое мок-интервью с Python-кандидатом начинается с задач на списки, ссылки и поверхностное копирование. Затем интервьюер проверяет выбор коллекций, поведение lambda-замыканий, итераторы и GIL. Существенный блок посвящён asyncio: корутинам, блокирующим операциям, asyncio.sleep, Semaphore, TaskGroup, shield и запуску блокирующего кода через отдельные потоки или процессы. Кандидат пишет декоратор с параметрами и разбирает async wrapper, генераторы, контекстные менеджеры, __del__ и сборку мусора при циклических ссылках. После технической части интервьюер отмечает сильную базу Python Core; итоговая оценка звучит как Middle- от ведущего и Middle от интервьюера. В финальной части записи есть реклама программы и общение со зрителями.
Затронутые темы
Что взять на заметку
- Поверхностная копия контейнера сохраняет ссылки на вложенные объекты, поэтому для независимых вложенных данных нужен другой подход.
- При выборе set, dict, list и tuple нужно соотносить свойства коллекции с операцией поиска, хранением связей и изменяемостью.
- asyncio не помогает, если корутина вызывает блокирующую операцию; её нужно заменить неблокирующей или вынести из event loop.
- Если декоратор выполняет действия вокруг вызова async-функции, его wrapper должен быть async и await-ить исходную функцию.
- Одного подсчёта ссылок недостаточно для циклических ссылок: в CPython их обнаруживает циклический garbage collector.