Здесь собраны вопросы, которые задают на собеседовании.
Базовые типы данных в Python
Изменяемые и неизменяемые типы
Разница между list и tuple
dict и особенности ключей
*args и **kwargs
List comprehension
Генератор vs список
Декораторы — концепция
Контекстный менеджер и with
Обработка исключений
GIL в Python
Итератор и итерируемый объект
Разница между __init__ и __new__
Разница между shallow и deep copy
LEGB — области видимости
Назначение виртуального окружения
Основы asyncio
Разница между == и is
lambda-функции
List, set, dict — асимптотика операций
Переменные и присваивание
Базовые типы данных
int и float
Строки и индексация
Срезы строк
Список: создание и базовые операции
Кортеж vs список
Словарь (dict)
Множество (set)
Условный оператор if/elif/else
Цикл for
Цикл while
Функция range
Функция len
Ввод данных input
Определение функции
Параметры по умолчанию
Докстрока (docstring)
List comprehension
enumerate
zip
Импорт модуля
Создание виртуального окружения
Обработка исключений try/except
Некоторые типы исключений
Явный вызов исключения raise
Чтение из файла
Запись в файл
Контекстный менеджер with
f-строки
__name__ == "__main__"
Простой класс и __init__
Методы класса и self
Метод __str__
Простое наследование
Что такое None
Булевый тип и truthy/falsy
Оператор in
Срезы списков
Изменяемые и неизменяемые типы
Разница между == и is
Локальные и глобальные переменные
Комментарии в коде
PEP 8
pip и установка пакетов
dir() и help()
Обработка списка с помощью map и filter
sorted и параметр key
Передача функции как аргумента
Простейший модуль
GIL и многопоточность в CPython
Разница между процессами и потоками
Модель памяти и изменяемость объектов
Разница между `is` и `==`
Дескрипторы в Python
Метаклассы и их применение
Контекстные менеджеры и протокол `with`
Продвинутые декораторы
Протокол итератора и генераторы
Асинхронность и `asyncio`
Отмена корутин и обработка отмены
Типизация: Protocol и duck typing
Dataclasses vs обычные классы
Модель исключений и дизайн API
Оптимизация по памяти: `__slots__`
Семантика контекста менеджера блокировок
Работа сборщика мусора и циклические ссылки
Ленивые вычисления и генераторные выражения
Интернирование строк и малых целых
Продвинутый `logging`
Контракт итерабельности и протокол последовательностей
Иммутабельные dataclass-ы и `frozen=True`
Распаковка аргументов и flexible API
Сложность операций со списком, словарём и множеством
Детали работы `functools.lru_cache`
Виртуальные окружения и изоляция зависимостей
Пакетирование и `pyproject.toml`
Семантика `yield from`
Разница между `classmethod` и `staticmethod`
ABC и интерфейсы
Сериализация сложных объектов
Тонкости `==` и `__eq__` / `__hash__`
Производительность: профилирование
Асинхронные веб-фреймворки и блокирующий код
Инициализация модулей и побочные эффекты
Замыкания и утечки ссылок
Разделяемое состояние в многопроцессной среде
Тестирование асинхронного кода
Идиоматичный код и `EAFP`
Декларирование неизменности через типы
Разница между `__getattr__` и `__getattribute__`
Реализация прокси-объектов
Тонкости работы с временем и временными зонами
Устойчивый к ошибкам парсинг и валидация
Обработка частичных отказов во внешних сервисах
Слои приложения и разделение ответственности
Инструменты статического анализа
Безопасность: инъекции и сериализация
Миграции схемы данных и эволюция моделей
Роль Senior Python разработчика