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

Мок-собеседование Senior Python-разработчика: multiprocessing и типизация

Вторая часть тестового технического мок-собеседования на позицию Senior Python Developer. Кандидат отвечает на вопросы о производительности CPython и PyPy, GIL, multiprocessing, shared memory, объектной модели и typing; также обсуждают Saga-транзакции и MVCC PostgreSQL. В конце интервьюеры дают развёрнутую обратную связь.

Источник: Python Mentor

Открыть на YouTube

Таймлайн

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

Вторая часть тестового технического мок-собеседования на позицию Senior Python Developer. Ведущие проверяют подход кандидата к ускорению CPU-bound кода: профилирование, алгоритмическую сложность, GIL, C-расширения, Cython и PyPy/JIT. Затем обсуждают регрессию CPU после релиза, ограничения ThreadPool и ProcessPool, стоимость сериализации, батчирование и shared memory. Вопросы по языку охватывают хешируемость, атрибуты класса и экземпляра, метаклассы, typing.overload, MRO и __getattribute__/__getattr__. Отдельно рассматриваются Saga, MVCC PostgreSQL, type hints в FastAPI, generics и вариантность; финал посвящён обратной связи и месту вопросов-ловушек и LeetCode в найме.

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

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

  • Оптимизацию CPU-bound Python-кода начинайте с профилирования и улучшения алгоритма; затем сравнивайте Cython, C-расширения, PyPy и процессы на своей нагрузке.
  • В ProcessPool учитывайте цену pickle и IPC: батчирование уменьшает число передач, а shared memory требует подходящего представления данных и аккуратной синхронизации.
  • Кортеж хешируем только тогда, когда хешируемы все его элементы; наличие list делает hash(tuple) невозможным.
  • typing.overload описывает варианты сигнатур для статических анализаторов и сам по себе не создаёт runtime-диспетчеризацию функций.
  • При разборе MRO опирайтесь на C3-линеаризацию и различайте всегда вызываемый __getattribute__ с резервным __getattr__.
  • Для распределённых бизнес-транзакций различайте Saga с оркестрацией и хореографией, а также компенсирующие действия при сбоях.

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