Питоновские интервью для джунов и мидлов удивительно предсказуемы: структуры данных, «ловушки» языка, немного ООП и внутренностей. Ниже — самое частое, с ориентиром что хотят услышать.
Изменяемость: кортеж может быть ключом словаря, защищает данные, чуть экономнее. Хотят следствия, а не определение.
Хеш-таблица: hash ключа → слот, средний O(1), ключи — только хешируемые. Уточняющий: почему список не может быть ключом.
Уникальность и быстрые проверки вхождения O(1); дедупликация, пересечения. Классика: убрать дубли из списка одной строкой.
copy() копирует контейнер, но не вложенные объекты; deepcopy — рекурсивно. Пример с list of lists, где правка «копии» меняет оригинал.
Default создаётся один раз и разделяется между вызовами; правильно acc=None. Вопрос-фильтр — на нём валятся чаще всего.
Произвольные позиционные/именованные аргументы; проброс аргументов в обёртках и декораторах. Свяжите с декораторами — двойной балл.
Обёртка, добавляющая поведение: логирование, кэш, права. Уметь написать на доске с functools.wraps и объяснить, зачем wraps.
Ленивость: по одному элементу, без всей памяти; конвейеры обработки. Минус тоже назовите: одноразовость, нет len/индексации.
Краткие преобразования — да; тройная вложенность с условиями — уже цикл. Проверяют вкус к читаемости, не синтаксис.
Один поток исполняет байткод за раз: потоки — для I/O, multiprocessing — для CPU. Структура «что → на что влияет → чем обходить» звучит уверенно.
Протоколы языка: инициализация, отладочное представление, сравнение (+ __hash__ в паре с __eq__). Пример: зачем __repr__ в логах.
classmethod получает класс (альтернативные конструкторы), staticmethod — просто функция в пространстве класса. Пример from_json() решает.
Ловить конкретные типы, else — если не было исключения, finally — всегда. Красный флаг для интервьюера: голый except: pass.
Документация, IDE, mypy ловит ошибки до рана; в командах — стандарт. Достаточно рабочего опыта с ними, глубин дженериков не ждут от мидла.
Много одновременного I/O (тысячи соединений) — корутины дешевле потоков; CPU-задачи asyncio не ускоряет. Пара слов про await и event loop — достаточно для мидла.
pytest, параметризация, фикстуры, unittest.mock для внешних зависимостей. Пример: как замокали HTTP-вызов.
История: контекст → задача → решение → результат в цифрах. Подготовьте заранее, привяжите к стеку вакансии.
Пришлите текст вакансии — бесплатно вернём вероятные вопросы по ней, риски и слабые темы. А в приложении SkillCue — тренировка ответов и подсказки прямо во время созвона.
Разобрать мою вакансию бесплатно