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

Мок-интервью Python-разработчика: копирование, транзакции и async

Публичное мок-собеседование по Python: кандидат анализирует фрагменты кода, объясняет их поведение и реализует учебный контекстный менеджер транзакции. Вопросы охватывают shallow copy и общие изменяемые объекты, аргументы по умолчанию, retry-декораторы, исключения, кэширование coroutine, asyncio, гонки при ленивой загрузке и отмену задач.

Источник: ШОРТКАТ — менторская программа

Открыть на YouTube

Таймлайн

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

Публичное Python-мок-собеседование построено как последовательность задач на чтение и правку кода. Кандидат разбирает ссылки после shallow copy и dict.fromkeys, эффект аргументов по умолчанию, пишет параметризованный retry-декоратор и выясняет разницу между синхронным и async wrapper. Далее рассматриваются bare raise, кэширование coroutine через lru_cache, потеря хвоста при zip, безопасная реализация __eq__, контекстный менеджер transaction с commit/rollback, гонка в ленивом async-кэше и поведение asyncio.shield при timeout. Интервьюер даёт наводящие вопросы и краткий фидбэк; после технической части идёт презентация программы.

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

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

  • Поверхностное копирование отделяет только верхний уровень, а dict.fromkeys с изменяемым значением даёт всем ключам одну и ту же ссылку.
  • Значение аргумента по умолчанию вычисляется при определении функции; для времени создания объекта обычно используют None и вычисляют datetime.now() внутри.
  • Обёртка декоратора для async-функции должна await-ить результат; нельзя повторно await-ить один и тот же уже завершённый объект coroutine, закэшированный через lru_cache.
  • Голый raise допустим только внутри активного except; иначе Python возбуждает RuntimeError.
  • Контекстный менеджер транзакции должен выполнять rollback при исключении и commit только при нормальном выходе из блока.
  • asyncio.shield сохраняет внутреннюю задачу при отмене внешнего ожидания, но timeout или отмена всё равно приходят вызывающему коду.
  • Чтобы loader не запускался дважды для одного ключа, используют синхронизацию по ключу или общую задачу загрузки; единый lock без необходимости сериализует разные ключи.

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

1:19:11
BackendMiddle

Мок-интервью Python-разработчика: ссылки, исключения и конкурентность

Кандидат с многолетним IT-опытом разбирает Python-код и отвечает на вопросы о коллекциях, исключениях и конкурентности. В финале интервьюер даёт фидбэк о подготовке к реальному рынку.

1:35:29
BackendMiddle

Мок-интервью Middle Python-разработчика: блокировки и асинхронность

Кандидат рассказывает о логистическом проекте и проектирует конкурентный доступ к ресурсам. Интервьюер проверяет блокировки базы данных, FastAPI, асинхронные драйверы и подход к использованию AI на собеседовании.