Языки программирования

Вопросы на собеседовании: Python

22 урока · 6 разделов · бесплатно, без регистрации

Курс готовит к Python-секции технического собеседования. Здесь не зубрёжка определений, а понимание: каждый вопрос разобран по схеме «вопрос → чёткий ответ → запускаемый пример, доказывающий поведение». Вы разберёте модель памяти и изменяемость, тонкости функций и замыканий, ООП и магические методы, итераторы и генераторы, устройство GIL и сборки мусора, классические ловушки и типовые практические задачи. Все примеры на стандартной библиотеке Python — их можно запускать прямо в браузере и видеть точный вывод.

Курс «Вопросы на собеседовании: Python» состоит из 6 разделов и 22 уроков: Типы данных и модель памяти, Функции и области видимости, ООП в Python, Итераторы, генераторы, функциональщина, Внутреннее устройство и подводные камни и Практические задачи и структуры данных. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Типы данных и модель памяти

    1. Изменяемые и неизменяемые типы: list против tuple

      Чем mutable-типы (list, dict, set) отличаются от immutable (tuple, str, int) в Python и почему это спрашивают на собеседовании.

    2. is или ==: тождество против равенства и кеш малых int

      Разница между операторами is и == в Python, как работает кеширование малых целых чисел и почему is с числами обманчив.

    3. Копирование: ссылка, shallow copy и deep copy

      Разница между присваиванием, поверхностным (copy.copy) и глубоким (copy.deepcopy) копированием в Python на запускаемых примерах.

    4. Как устроены list, dict и set: сложность операций

      Внутреннее устройство списка, словаря и множества в Python и асимптотика основных операций — что спрашивают про Big-O на интервью.

  2. 2 Функции и области видимости

    1. *args и **kwargs: переменное число аргументов

      Что такое *args и **kwargs в Python, как они собирают и распаковывают аргументы и зачем нужны на практике.

    2. Ловушка изменяемого аргумента по умолчанию

      Почему изменяемый аргумент по умолчанию (target=[]) в Python создаётся один раз и копит состояние между вызовами — и как чинить.

    3. Замыкания и правило LEGB

      Как Python ищет имена по правилу LEGB, что такое замыкание, зачем нужны nonlocal и global на запускаемых примерах.

    4. Передача аргументов и lambda

      Как Python передаёт аргументы (по ссылке на объект), почему функция может изменить список, но не число, и что такое lambda.

  3. 3 ООП в Python

    1. Классы, экземпляры и виды методов

      Класс против экземпляра, роль self, атрибуты класса и экземпляра, а также разница между обычным методом, classmethod и staticmethod.

    2. __init__ против __new__

      Чем __new__ отличается от __init__ в Python: кто создаёт объект, кто его настраивает и когда переопределять __new__.

    3. Наследование, MRO и магические методы

      Как работает наследование и порядок разрешения методов (MRO) в Python и зачем нужны __str__, __eq__, __hash__.

    4. property и __slots__

      Зачем нужен декоратор property для управляемого доступа к атрибутам и как __slots__ экономит память в Python.

  4. 4 Итераторы, генераторы, функциональщина

    1. Итераторы и протокол итерации

      Что такое итератор и итерируемый объект в Python, как работают __iter__ и __next__ и что под капотом у цикла for.

    2. Генераторы и yield: ленивость и экономия памяти

      Как работают генераторы и yield в Python, почему они ленивые и экономят память по сравнению со списком.

    3. Comprehensions и встроенные map, filter, zip, enumerate

      List/dict/set comprehension в Python и встроенные функции map, filter, zip, enumerate — что спрашивают и как они работают.

    4. Декораторы и functools.wraps

      Как устроены декораторы в Python, почему это функция, оборачивающая функцию, и зачем нужен functools.wraps.

  5. 5 Внутреннее устройство и подводные камни

    1. GIL, память и сборка мусора

      Что такое GIL в CPython и почему потоки не ускоряют CPU-задачи, как работают подсчёт ссылок и сборщик циклических ссылок.

    2. Классические подвохи: итерация, поздняя привязка, деление

      Три частых ловушки Python: изменение списка во время итерации, поздняя привязка в замыканиях и целочисленное деление.

    3. Контекстные менеджеры: with, __enter__ и __exit__

      Как работает оператор with в Python, что делают __enter__ и __exit__ и почему ресурс закрывается даже при исключении.

  6. 6 Практические задачи и структуры данных

    1. Строковые мини-задачи: разворот, анаграммы, палиндром

      Частые задачи про строки на собеседовании Python: перевернуть строку, проверить анаграмму и палиндром с запускаемыми решениями.

    2. collections: Counter, defaultdict, deque и дедупликация

      Подсчёт частоты через Counter, группировка через defaultdict, очередь deque и удаление дубликатов с сохранением порядка.

    3. Сортировка по ключу, распаковка и вопросы про сложность

      Сортировка с параметром key, распаковка через звёздочку и типичные вопросы про Big-O на собеседовании Python.