Тестовые задания и сборник примерных вопросов на позицию python-разработчика в компании Gratio.
- SQL: Напишите простой запрос с JOIN. Объясните разницу между INNER JOIN и LEFT JOIN.
- ORM (например, Django ORM или SQLAlchemy): Слышали ли про проблему "N+1 (дополнительного) запроса", как избежать? В чем разница между отложенной (lazy) и жадной (eager) загрузкой?
- Миграции (Migrations): Что это такое и зачем нужны? Как вы работаете с миграциями в своем проекте?
- Индексы в БД: Что такое индекс и зачем он нужен? Как вы решаете, какие поля индексировать?
- Unit-tests: Что такое юнит-тест? В чем разница между unittest и pytest? Что предпочтете и почему?
- Фикстуры (Fixtures) и моки (Mocks): Что это такое и для чего используются? Приведите пример, когда вы использовали мок для тестирования функции, которая обращается к внешнему API.
- Покрытие кода (Code Coverage): Что означает "80% покрытия кода"? Всегда ли это хороший показатель?
- Виртуальные окружения (Virtual Environments): Зачем они нужны? Как вы ими управляете (venv, pipenv, poetry)?
- Форматирование кода и линтеры: Используете ли вы black, flake8, isort? Зачем они нужны?
- Система контроля версий (Git): Опишите ваш типичный workflow (например, Git Flow, GitHub Flow). Что такое rebase и в чем его отличие от merge?
- Контейнеризация (Docker): Работали ли с Docker? Что такое Dockerfile и docker-compose.yml?
- Принципы SOLID: С какими из них вы знакомы? Можете кратко объяснить один-два (например, SRP - Single Responsibility Principle)?
- Паттерны проектирования: Сталкивались ли с какими-либо паттернами? Можете привести пример использования Фабрики (Factory), Синглтона (Singleton) или Наблюдателя (Observer) в Python?
- API: Что такое REST? Какие HTTP-методы вы знаете? В чем разница между 401 Unauthorized и 403 Forbidden? Какие ещё виды API и клиент-серверного взаимодействия вообще вы знаете?
- Микросервисы vs Монолит: В чем плюсы и минусы каждого подхода? Когда что выбрать?
- Как вы подходите к код-ревью? На что вы обращаете внимание, когда ревьюите чужой код, и как вы реагируете на критику своего кода?
- Представьте, что вы обнаружили в проекте медленно работающий код. Как вы будете подходить к его оптимизации?
- Как вы оцениваете свои задачи и следите за сроками?