Python: вопросы и ответы с собеседований
100+ вопросов
Содержание
Предупреждение
Последний раз данная статья обновлялась 11.05.2022, информация может быть устаревшей.
Общие вопросы
- Принципы программирования?
- Отличия процедурной и объектно-ориентированной парадигмы программирования?
- Основные принципы ООП?
- Что такое множественное наследование?
- Что такое @property?
- Что такое инженерия и процесс разработки в целом?
- Основные методологии разработки (жизненный цикл продукта)?
- Методология Agile. Различия Kanban и Scrum подходов.
- Методы HTTP-запросов и какая между ними разница?
- Как выглядят HTTP-request/response?
- Что такое авторизация и как она работает?
- Что такое cookies?
- Что такое веб уязвимость?
- Какие знаете классические базы данных?
- Как читать спецификацию в конкретном языке (например, PEP8 в Python)?
- Как происходит взаимодействие клиента и сервера?
- Какие есть подходы к проектированию API?
- Как масштабировать API?
- Паттерны проектирования и как они используются?
- Что такое Acceptance Testing и зачем его используют?
- Что такое модульные и интеграционные тесты, API-тесты?
- Как писать unit-тесты?
- Какие есть best practices в написании автотестов?
- Какие базовые команды системы контроля версий?
- Как использовать Git?
- В чем разница между хешированием и шифрованием?
- Ориентируетесь ли в *nix, можете ли написать скрипты/автоматизацию для себя и коллег?
- Что такое многопоточность?
- Что такое архитектура веб сервисов?
- Как работает современное нагруженное веб приложение (нарисовать и обсудить примерную архитектуру, например, Twitter или Instagram)?
- Что нужно для сайта/сервиса среднего размера (redis, celery, кэш, логирование, метрики)?
- Как написать, задеплоить и поддерживать (микро) сервис?
- Как проводить Code review?
- Что такое абстрактная фабрика, как ее реализовать и зачем ее применяют?
- Что такое цикломатическая сложность?
- Каким образом можно запустить код на Python параллельно?
- Как работать с stdlib?
- Какие задачи решали с помощью метаклассов?
- Что такое дескрипторы?
Python
- Какие есть изменяемые и постоянные типы данных?
- Какие есть типы данных и какая разница между list и tuple, зачем они?
- Как использовать встроенные коллекции (
list
,set
,dict
)? - В чем заключается сложность доступа к элементам
dict
? - Что такое область видимости переменных?
- Что такое introspection?
- В чем заключается разница между операторами
is
и==
? - Как создается объект в Python. Разница между
__init__
и__new__
? - В чем разница между потоками и процессами?
- Какие есть виды импорта?
- Что такое итератор и генератор. В чем между ними разница?
- Что такое сопрограммы (corutines) и как они реализованы в Python?
- Что такое метакласс, переменная цикла?
- В чем разница между
staticmethod
иclassmethod
? - Как работают контекстные менеджеры?
- Как работают декораторы?
- Можно ли использовать несколько декораторов для одной функции?
- Можно ли создать декоратор из класса?
- Как работают dict comprehension, list comprehension и set comprehension?
- Какие есть основные популярные пакеты (requests, pytest, etc)?
- Что такое lambda-функции?
- Что означает
*args
,**kwargs
и как они используются? - Как передаются аргументы функций в Python (by value or reference)?
- Что такое exceptions,
<try-except>
? - Что такое PEP (Python Enhancement Proposal), какие из них знаете (PEP8, PEP484)?
- Что знаете из модуля
collections
, какими еще built-in модулями пользовались? - Как Python работает с HTTP-сервером?
- Что происходит, когда создается виртуальная среда?
- Async Python: как работает, зачем, что под капотом?
- Что такое модель памяти Python?
- Принципы работы и механизм Garbage collection, reference counting?
- Как работает thread locals?
- Что такое
__slots__
? - Что такое type annotation? Какие преимущества дает Variable Annotations?
- Для чего используют нижние подчеркивания в именах объектов?
- Статические анализаторы: Flake8, Pylint, Radon.
Django
- N+1 проблема и как решить?
- Что такое SQLAlchemy (Core и ORM частей) и какие есть альтернативы?
- Что такое шаблонизатор и как в нем выполнять базовые операции (объединять участки шаблона, выводить дату, выводить данные с серверной стороны)?
- Что такое миксины?
- Как провалидировать данные в сериализаторе?
- Методы
create
,update
в серилизаторе. - Как передать в запросе лист
id
так, чтобы создался объект сразу сm2m
связими? - Что такое
lt
,gt
,gte
,lte
в ORM? or
в Django ORM.- Напишите
hello-world
сервис, используя один из фреймворков. - Сравнить асинхронные web-фреймворки.
Базы данных
- Какие есть базовые методы работы с SQL-базой данных в Python?
- Что такое SQL-транзакция?
- Как сделать выборку из SQL-базы с простой агрегацией?
- Как выглядит запрос, который выполняет JOIN между таблицами и к самим себе?
- Как отправлять запросы в SQL-базу данных без ORM?
- Индексация в базе данных sql
- Разница между SQL и NoSQL?
- Как оптимизировать SQL-запросы?
- Какие есть уровни изоляции транзакций?
- Какие есть виды индексов?
DevOps
- Рассказать про Docker, Docker Compose и Docker Swarm
- Объяснить основные термины K8s (кластер, pod, node, deployment, service), что такое Kibana?
- Как зайти на внешний сервер, работать с пакетами, настроить среду и выполнять операции?
Data Science
- Как работать с пакетами для обработки и визуализации данных (NumPy, Pandas и другие)?
Алгоритмы
- Что такое временная сложность алгоритма (time complexity)?
- Что такое Big-O notation?
- Какие есть базовые алгоритмы сортировки?
- Что такое Bubble Sort и как это работает?
- Что такое линейная сложность сортировки?