Какие типы являются изменяемыми (list, dict, set) и какие — неизменяемыми (числа, строки, tuple и др.)? В чём их различие? (ссылочная модель данных, присваивание, copy vs deepcopy)
В чём разница между list и tuple?
Какова скорость поиска в списке, множестве и словаре? (O(n) vs O(1))
Как работает словарь (хеш-таблица)? Что такое хеш-функция и коллизии? Как с ними бороться?
Что может быть ключом словаря?
Может ли кортеж или экземпляр класса быть ключом словаря?
Как устроен list? Какова сложность append и __getitem__?
Какие методы есть у кортежа и какова их сложность?
Как устроен set? Какова сложность union и intersection?
Какой метод должен реализовать кастомный класс, чтобы стать ключом словаря или элементом множества?
Что будет, если добавить в множество одно и то же значение несколько раз?
Операторы и конструкции
Какие условные операторы вы знаете? (if, else, elif, тернарный оператор)
Какие циклы существуют? (for, while)
Для чего служат конструкции try, except, else, finally?
В чём разница между == и is?
Как заставить функцию выбросить исключение, а не просто вывести сообщение об ошибке?
Декораторы и контекстные менеджеры
Что такое декоратор? Для чего он нужен?
Какие виды декораторов вы знаете? (@classmethod, @staticmethod, @property и др.)
Как устроен декоратор внутри? Что он принимает на вход и что возвращает?
Реализуйте простой декоратор.
Что такое менеджер контекста? Зачем он нужен?
Как работают методы __enter__ и __exit__?
Реализуйте простой контекстный менеджер.
Как написать контекстный менеджер через генератор? Какой декоратор используется и какую роль играет yield?
Как сделать асинхронный контекстный менеджер? Какие методы нужны вместо __enter__ / __exit__?
Что произойдёт с именем и сигнатурой функции после декорирования? Как сохранить метаданные оригинальной функции?
Как параметризовать декоратор (например, retry с числом попыток и задержкой)? Почему «просто добавить аргументов» не сработает?
Функции и методы
В чём отличие функции от метода?
Что такое lambda-функция? Чем она отличается от обычной функции и когда создаётся?
Что такое магические методы? Почему они нужны и какие вы знаете? (например, __str__, __repr__)
Что такое итератор? Как создать класс-итератор? (методы __iter__ и __next__)
Что такое генератор? Чем он отличается от итератора? (функция с yield vs класс)
Верно ли, что любой генератор является итератором?
Реализуйте итератор, который возводит значения в квадрат.
Реализуйте итератор для чисел Фибоначчи.
Классы и ООП
Что такое ООП и его основные принципы?
Что такое класс? Как объявить и использовать?
Что такое super? Когда и зачем его применять?
В чём разница между @classmethod и @staticmethod?
Что такое @dataclass? Зачем нужен?
Как проверить, есть ли у объекта атрибут? (getattr, setattr, delattr)
Чем отличаются методы __str__ и __repr__?
Что такое инкапсуляция, сокрытие методов и property?
Что такое __slots__ и декораторы?
Асинхронность и многопоточность
Как работает асинхронность в Python? Что такое корутина?
Что такое event loop и оператор await?
Для каких задач эффективна асинхронность?
Что такое GIL и почему Python называют однопоточным?
Чем отличается многопоточность от мультипроцессинга?
В чём различие между потоком и процессом?
Какие проблемы возникают при многопоточности?
Как организовать обмен данными между процессами?
Что такое ссылочная модель в Python?
В чём разница между copy и deepcopy?
Как выбирать между корутинами, AsyncIO и multiprocessing?
Какие виды многозадачности существуют в Python?
Как можно обойти или отключить GIL (несколько интерпретаторов, флаги интерпретатора, C-расширения, free-threaded сборки)?
Если GIL отключён и потоки работают с общей памятью, какие примитивы синхронизации нужны?
Работа с памятью
Как работает память в Python и сборщик мусора?
Когда и как объекты удаляются сборщиком мусора?
Как происходит управление памятью при использовании multiprocessing?
Продвинутое использование Python
Как организовать передачу информации между двумя приложениями на Python?
Как скачать и обработать датасет изображений через API сервиса?
Что такое Type Hints и как они используются?
Алгоритмы и задачи
Напишите функцию для умножения матрицы на вектор.
Объедините два отсортированных списка в один без использования внешних библиотек.
Напишите функцию для проверки, является ли массив арифметической прогрессией (массив не отсортирован).
Как отсортировать файл размером 100 GB при ограничении RAM 120 GB?
Как найти медиану, если в SQL или Python нет встроенной функции для этого?
Реализуйте функцию подсчёта recall для двух NumPy-массивов.
Что нужно, чтобы отсортировать список элементов в Python? Какова сложность встроенной сортировки?
Напишите функцию, определяющую максимальную высоту, достигнутую велосипедом (задача с высотой).
Найдите максимальную длину монотонного подмассива и верните его индексы.
В чём разница между графом и деревом?
Реализуйте RLE-сжатие строки. При недопустимых символах функция должна завершаться с ошибкой.
Напишите алгоритм поиска дубликатов в списке, включая изменяемые объекты.
Дана строка S и символ C. Верните для каждого символа расстояние до ближайшего C.
Дано множество точек. Определите, существует ли вертикальная ось симметрии. Как вычислить центр симметрии без проблем с точностью float?
Тестирование
Как работают фикстуры и параметризация в pytest?
Веб-фреймворки
Чем FastAPI отличается от Flask? Что для каких задач лучше подходит?
Что такое Depends в FastAPI и как работает инъекция зависимостей?