Вернуться в видеотекуСобеседование на позицию Senior Python Developer 4000-5000$ #11
Техническое интервью по Python/Django с вопросами по базам данных, Linux, Docker и языку Python. Завершается разбором Docker Compose и двух примеров кода на Python и Django.
- Направление
- Backend
- Формат
- Видео
- Грейд
- Senior
- Длительность
- 1 ч 12 мин
Коротко о видео
Запись построена как техническое собеседование на позицию Senior Python Developer: обсуждаются SQL и PostgreSQL, Linux, Docker, базовый Python, ООП, Django и инструменты экосистемы. В финале собеседующий проводит два code review: конфигурации Docker Compose, затем Python- и Django-кода с моделями пользователя и кошелька. В ответах кандидата и последующих уточнениях разбирают практические ошибки, включая ленивые QuerySet, блокировки, обработку отсутствующих ключей и неоднозначный поиск пользователя.
Затронутые темы
Что взять на заметку
- Для SQL стоит различать JOIN, подзапросы и UNION по их семантике, а медленные запросы искать по статистике выполнения и разбирать через EXPLAIN/EXPLAIN ANALYZE.
- Нужно уметь объяснить компромисс индексов: они ускоряют чтение, но добавляют стоимость вставок и обновлений; отдельно полезно знать транзакции, атомарность, SELECT FOR UPDATE и SKIP LOCKED.
- Для серверной диагностики пригодятся top/htop и PID, а также команды для памяти, диска и проверки слушающих портов; важно понимать разницу процессов и потоков.
- В Python надо уверенно разбирать изменяемые значения по умолчанию, хешируемость ключей словаря, Decimal для денежных расчётов, кодирование строк, timezone-aware datetime и точную обработку исключений.
- По Django ожидаются знания ленивого QuerySet, filter/count/exists/срезов, Q-объектов, маршрутизации views, миграций и middleware.
- В Docker Compose следует читать назначение services, env_file, healthcheck, depends_on и проброса портов, не смешивая порядок запуска сервисов с их фактической готовностью.
- На code review нужно проверять соответствие аннотаций фактическим возвратам, безопасный доступ к вложенным словарям, отсутствие кошелька у пользователя, уникальность поля для User.objects.get() и соответствие поведения функции её задаче.