← SkillCueВсе роли

Вопросы на собеседовании Python-разработчика: 17 вопросов с разбором

Питоновские интервью для джунов и мидлов удивительно предсказуемы: структуры данных, «ловушки» языка, немного ООП и внутренностей. Ниже — самое частое, с ориентиром что хотят услышать.

Структуры данных

1. Список vs кортеж — разница и следствия?

Изменяемость: кортеж может быть ключом словаря, защищает данные, чуть экономнее. Хотят следствия, а не определение.

2. Как словарь работает внутри?

Хеш-таблица: hash ключа → слот, средний O(1), ключи — только хешируемые. Уточняющий: почему список не может быть ключом.

3. Множество (set): для чего и какова сложность операций?

Уникальность и быстрые проверки вхождения O(1); дедупликация, пересечения. Классика: убрать дубли из списка одной строкой.

4. Поверхностная vs глубокая копия?

copy() копирует контейнер, но не вложенные объекты; deepcopy — рекурсивно. Пример с list of lists, где правка «копии» меняет оригинал.

Ловушки и идиомы языка

5. Почему def f(x, acc=[]) — баг?

Default создаётся один раз и разделяется между вызовами; правильно acc=None. Вопрос-фильтр — на нём валятся чаще всего.

6. *args и **kwargs — зачем?

Произвольные позиционные/именованные аргументы; проброс аргументов в обёртках и декораторах. Свяжите с декораторами — двойной балл.

7. Что такое декоратор? Напишите простой.

Обёртка, добавляющая поведение: логирование, кэш, права. Уметь написать на доске с functools.wraps и объяснить, зачем wraps.

8. Генераторы и yield: чем лучше списка?

Ленивость: по одному элементу, без всей памяти; конвейеры обработки. Минус тоже назовите: одноразовость, нет len/индексации.

9. List/dict comprehension — когда это хорошо, а когда нечитаемо?

Краткие преобразования — да; тройная вложенность с условиями — уже цикл. Проверяют вкус к читаемости, не синтаксис.

ООП и внутренности

10. Что такое GIL? Потоки vs процессы?

Один поток исполняет байткод за раз: потоки — для I/O, multiprocessing — для CPU. Структура «что → на что влияет → чем обходить» звучит уверенно.

11. Магические методы: __init__, __repr__, __eq__ — зачем?

Протоколы языка: инициализация, отладочное представление, сравнение (+ __hash__ в паре с __eq__). Пример: зачем __repr__ в логах.

12. classmethod vs staticmethod?

classmethod получает класс (альтернативные конструкторы), staticmethod — просто функция в пространстве класса. Пример from_json() решает.

13. Как устроены исключения? try/except/else/finally.

Ловить конкретные типы, else — если не было исключения, finally — всегда. Красный флаг для интервьюера: голый except: pass.

14. Аннотации типов: зачем, если Python динамический?

Документация, IDE, mypy ловит ошибки до рана; в командах — стандарт. Достаточно рабочего опыта с ними, глубин дженериков не ждут от мидла.

Асинхронность и практика

15. asyncio: когда выбрать вместо потоков?

Много одновременного I/O (тысячи соединений) — корутины дешевле потоков; CPU-задачи asyncio не ускоряет. Пара слов про await и event loop — достаточно для мидла.

16. Как тестируете код? pytest, фикстуры, моки.

pytest, параметризация, фикстуры, unittest.mock для внешних зависимостей. Пример: как замокали HTTP-вызов.

Про вас

17. Самый интересный проект/задача на Python?

История: контекст → задача → решение → результат в цифрах. Подготовьте заранее, привяжите к стеку вакансии.

Это общий список. А что спросят именно на вашем собеседовании?

Пришлите текст вакансии — бесплатно вернём вероятные вопросы по ней, риски и слабые темы. А в приложении SkillCue — тренировка ответов и подсказки прямо во время созвона.

Разобрать мою вакансию бесплатно