Вопросы на собеседовании Python-разработчика: разбор с ответами
Частые вопросы на собеседовании Python-разработчика в 2026 году: типы данных, ООП, GIL, генераторы, asyncio и декораторы — с короткими ответами и примерами по грейдам.
Собеседование на позицию Python-разработчика почти всегда строится по одной схеме: сначала вопросы по основам языка, потом — структуры данных и ООП, затем асинхронность и практика, и под конец задача на код. Ниже — разбор вопросов, которые реально задают на HH-вакансиях в 2026 году, с короткими ответами, по которым удобно готовиться. В конце — как получать больше приглашений на сами собеседования, а не только готовиться к ним.
Основы языка и типы данных
Чем список отличается от кортежа? Список (list) изменяемый, кортеж
(tuple) — нет. Кортеж хешируем, если все его элементы тоже хешируемы, поэтому
может быть ключом словаря или элементом множества; занимает чуть меньше памяти и
немного быстрее. Список — для изменяемых коллекций, кортеж — для фиксированных
наборов.
Какие типы изменяемые, а какие нет? Неизменяемые: int, float, str,
tuple, frozenset, bytes. Изменяемые: list, dict, set, bytearray.
Это влияет на то, что можно сделать ключом словаря, и на поведение аргументов по
умолчанию.
Чем is отличается от ==? == сравнивает значения (вызывает __eq__),
is — идентичность объектов в памяти (сравнение по id). С None всегда
используют is: if x is None.
Почему нельзя ставить изменяемый объект аргументом по умолчанию? Значение по
умолчанию вычисляется один раз при определении функции. Если это [] или {},
один и тот же объект разделяется между вызовами и накапливает данные. Правильно —
ставить None и создавать объект внутри функции.
Как устроен словарь и какая сложность доступа? Словарь — это хеш-таблица. Вставка, поиск и удаление в среднем за O(1). Начиная с Python 3.7 словарь сохраняет порядок вставки ключей.
Функции и ООП
Что такое *args и **kwargs? Это приём переменного числа аргументов:
*args собирает позиционные в кортеж, **kwargs — именованные в словарь. При
вызове ими же можно распаковывать коллекции в аргументы.
Что такое декоратор? Это функция (или класс), которая оборачивает другую
функцию, расширяя её поведение без изменения исходного кода — через замыкание.
Чтобы не терять метаданные обёрнутой функции, используют functools.wraps.
Декораторы применяют для логирования, кеширования, проверки прав, замера времени.
Чем @staticmethod отличается от @classmethod? staticmethod не получает
ни self, ни cls — это просто функция в пространстве имён класса.
classmethod получает cls (сам класс) и удобен для альтернативных
конструкторов вроде from_dict.
Что такое MRO? Method Resolution Order — порядок, в котором Python ищет метод
при множественном наследовании. Строится по алгоритму C3-линеаризации, доступен
через ClassName.__mro__.
Что такое dunder-методы? «Магические» методы вида __init__, __repr__,
__eq__, __len__, __iter__. Они задают, как объект ведёт себя со встроенными
операциями: создание, печать, сравнение, итерация, длина.
Что такое контекстный менеджер? Объект с методами __enter__ и __exit__,
который используют в блоке with. Гарантирует освобождение ресурса (файла,
блокировки, соединения) даже при исключении. Быстрый способ создать свой —
декоратор contextlib.contextmanager.
Структуры данных и генераторы
Чем генератор отличается от списка? Генератор ленивый: отдаёт элементы по
одному через yield и хранит в памяти только текущее состояние — O(1) памяти.
Список держит все элементы сразу. Генератор одноразовый: после прохода его нужно
создавать заново.
Что такое comprehension? Компактный синтаксис создания коллекций:
[x*x for x in data], аналогично для словарей и множеств. Читается лучше и
обычно быстрее цикла с append.
Какая сложность у операций со списком? Индексация — O(1), append
амортизированно O(1), вставка или удаление в середину — O(n), проверка x in list — O(n). Если нужны частые проверки вхождения, берут set (O(1) в среднем).
Асинхронность и многозадачность
Что такое GIL? Global Interpreter Lock — глобальная блокировка интерпретатора CPython, из-за которой байткод в один момент исполняет только один поток. Поэтому потоки не ускоряют CPU-bound вычисления.
Когда использовать threading, multiprocessing, asyncio? threading — для
IO-bound задач, где GIL освобождается на ожидании сети или диска.
multiprocessing — для CPU-bound: отдельные процессы обходят GIL и используют
несколько ядер. asyncio — для тысяч одновременных IO-операций на одном потоке
через кооперативную многозадачность.
Что такое корутина и async/await? Корутина — функция, объявленная через
async def. await приостанавливает её до готовности awaitable-объекта, а
событийный цикл в это время переключается на другие корутины. Так на одном потоке
обслуживают множество соединений.
Практика и инструменты
Как обрабатывают исключения? Через try / except / else / finally. Ловят
конкретные типы исключений, а не «голый» except. Свои исключения создают
наследованием от Exception. finally выполняется всегда — для очистки.
Что такое виртуальное окружение и зачем оно? Изолированное окружение
зависимостей проекта (venv, poetry, uv). Нужно, чтобы версии пакетов разных
проектов не конфликтовали между собой и сборка была воспроизводимой.
Чем deepcopy отличается от copy? copy.copy делает поверхностную копию:
вложенные объекты остаются общими по ссылке. copy.deepcopy рекурсивно копирует
всю структуру — изменения в копии не затрагивают оригинал.
Что спрашивают на разных грейдах
- Junior — синтаксис, типы данных, базовый ООП, структуры данных, умение написать простую функцию и разобрать чужой код.
- Middle — декораторы, генераторы, контекстные менеджеры, исключения,
асинхронность, тестирование (
pytest), работа с БД и ORM, типичные паттерны. - Senior — проектирование систем, оптимизация и профилирование, нюансы GIL и управления памятью, выбор архитектуры, code review, ответственность за решения.
Как получать больше собеседований, а не только готовиться к ним
Подготовка к вопросам бесполезна, если приглашений на собеседования мало. На плотном IT-рынке на одну Python-вакансию приходит 70–200 откликов, и решает скорость: рекрутёр читает первые 10–20 откликов, а не сотый.
Два рычага, которые реально влияют на количество приглашений:
- Резюме, которое видят. Если резюме плохо ранжируется в поиске HH, работодатели не находят вас сами. Помогает оптимизация под алгоритмы — подробно в статье «Прожарка резюме под алгоритмы HH.ru» и про ключевые слова в резюме.
- Скорость и охват откликов. Откликаться первым на свежие вакансии важнее, чем откликаться много. Как это автоматизировать без потери качества сопроводительных — в разборе «Автоотклик на HH.ru в 2026».
JobTurbo закрывает обе задачи: переписывает резюме под алгоритмы HH и сам откликается на подходящие вакансии с персональным AI-письмом под каждую. Первые отклики — бесплатно, без карты. Дальше готовитесь к собеседованиям, на которые вас уже позвали.
Частые вопросы
Что такое GIL в Python?
GIL (Global Interpreter Lock) — глобальная блокировка интерпретатора CPython, из-за которой в один момент времени байткод исполняет только один поток. Поэтому потоки не ускоряют CPU-bound задачи: для них берут multiprocessing, а для IO-bound — threading или asyncio, потому что на операциях ввода-вывода GIL освобождается.
Чем список отличается от кортежа в Python?
Список (list) изменяемый, кортеж (tuple) — нет. Кортеж хешируем, если все его элементы тоже хешируемы, поэтому может быть ключом словаря или элементом множества; занимает чуть меньше памяти и работает немного быстрее. Список используют для изменяемых коллекций, кортеж — для фиксированных наборов значений.
Чем is отличается от == в Python?
Оператор == сравнивает значения объектов (вызывает метод __eq__), а is — идентичность, то есть указывают ли два имени на один и тот же объект в памяти (сравнение по id). С None всегда используют is: `if x is None`.
Когда использовать threading, multiprocessing и asyncio?
threading — для IO-bound задач (сеть, диск), где GIL освобождается на ожидании. multiprocessing — для CPU-bound задач: отдельные процессы обходят GIL и используют несколько ядер. asyncio — для тысяч одновременных IO-операций на одном потоке через кооперативную многозадачность (async/await).
Какие вопросы задают Python-джуниору, а какие — сеньору?
Джуниора спрашивают про синтаксис, типы данных, базовый ООП и структуры данных. Миддла — про декораторы, генераторы, исключения, асинхронность, тестирование, работу с БД и ORM. Сеньора — про архитектуру, оптимизацию, нюансы GIL и памяти, проектирование систем и code review.
Запустите автоотклик бесплатно
Первые 10 откликов — без оплаты. AI напишет уникальное сопроводительное к каждой вакансии.
Подключить JobTurbo →