Вернуться в видеотеку

Собеседование на позицию Senior Python Developer 4000-5000$ #11

Техническое интервью по Python/Django с вопросами по базам данных, Linux, Docker и языку Python. Завершается разбором Docker Compose и двух примеров кода на Python и Django.

Источник: Python собеседования

Открыть на YouTube

Таймлайн

Коротко о видео

Запись построена как техническое собеседование на позицию 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() и соответствие поведения функции её задаче.

Рекомендуем посмотреть