Вопросы с собеседований
Вопросы на собеседовании: Python
Python от junior до middle: типы, коллекции, генераторы, ООП и дескрипторы, asyncio, потоки и процессы, память, тесты, веб.
73вопроса
38Junior
33Middle
2Senior
Типы данных
3Коллекции
5Функции
9- Что такое *args и **kwargs?Junior
- Как передаются аргументы в функцию — по значению или по ссылке?Junior
- Что такое замыкание?Junior
- Что такое декоратор и как его написать?Junior
- Почему нельзя использовать изменяемый объект как значение аргумента по умолчанию?Junior
- Как работают области видимости в Python?Junior
- Как написать декоратор с параметрами и зачем нужен functools.wraps?Middle
- Что полезного есть в functools — lru_cache, cache, partial, singledispatch?Middle
- Почему лямбды, созданные в цикле, возвращают одно и то же значение?Middle
Итераторы и генераторы
5ООП
12- Что такое self и __init__ в классе?Junior
- Что такое магические методы? Чем __str__ отличается от __repr__?Junior
- Как работают наследование, super() и MRO?Junior
- Что такое @property и зачем он нужен?Junior
- Чем @staticmethod отличается от @classmethod?Junior
- Чем абстрактный базовый класс (ABC) отличается от Protocol?Middle
- Чем dataclass отличается от namedtuple и Pydantic-модели?Middle
- Что такое дескриптор и как на нём построены property и методы?Middle
- Как связаны __eq__ и __hash__ и что значит «хешируемый объект»?Middle
- Чем __getattr__ отличается от __getattribute__?Middle
- Чем __new__ отличается от __init__?Middle
- Что такое метакласс и когда он действительно нужен?Senior
Исключения и контекстные менеджеры
3Конкурентность
12- Как работают async и await?Junior
- Как запустить несколько корутин одновременно и получить их результаты?Junior
- Что такое GIL?Junior
- Чем отличаются threading, multiprocessing и asyncio?Junior
- Что будет, если внутри async-функции вызвать блокирующий код?Middle
- Как в asyncio работают отмена задач и таймауты?Middle
- Как устроен event loop в asyncio?Middle
- Чем asyncio.gather отличается от TaskGroup и как в них обрабатываются ошибки?Middle
- Как пользоваться concurrent.futures и чем ThreadPoolExecutor отличается от ProcessPoolExecutor?Middle
- Какие ограничения есть у multiprocessing и чем fork отличается от spawn?Middle
- Нужны ли блокировки в многопоточном Python-коде, если есть GIL?Middle
- Что меняет сборка Python без GIL (free-threaded)?Senior
Память и копирование
1Сложность и производительность
3Окружение и инструменты
7- Как подключить проверку типов mypy или pyright к проекту?Junior
- Зачем нужна конструкция if __name__ == "__main__"?Junior
- Что такое аннотации типов и проверяются ли они при выполнении?Junior
- Как аннотировать списки, словари, необязательные значения и объединения типов?Junior
- Зачем нужно виртуальное окружение и как управлять зависимостями?Junior
- Как работает импорт модулей и что делать с циклическими импортами?Middle
- Как в аннотациях Python описать обобщённые типы — TypeVar, Generic, Protocol?Middle
Внутреннее устройство
4Тестирование
3Веб-фреймворки
6- Как написать простой HTTP API на FastAPI?Junior
- Как работать с JSON в Python и что делать с датами и своими объектами?Junior
- Как правильно делать HTTP-запросы из Python — requests и httpx?Junior
- Как найти и исправить проблему N+1 запросов в Django ORM?Middle
- Как устроено внедрение зависимостей в FastAPI?Middle
- Чем WSGI отличается от ASGI?Middle
Партнёр платформы
Разбор собеседования
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.