Этот конспект не сохранится

Закроешь вкладку — потеряешь. Зарегистрируйся — и он будет в библиотеке навсегда.

Telegram

Ваш конспект

YouTubeРеальное Собеседование в X5 на Middle Python разработчика

🎯 Собеседование в X5 Tech: ключевые вопросы по Django

Ключевые тезисы:

  • Вопросы на собеседовании часто касаются практического применения Django и его компонентов.
  • Важен не заученный ответ, а понимание принципов работы и опыт решения задач.
  • Основные темы: валидация, админка, ORM, работа с базами данных и производительность.

🔍 Метод clean() в моделях Django

Это "умная" проверка перед сохранением объекта.

  • Принцип работы: Проверяет целостность данных и логические противоречия между полями модели.
  • Примеры использования:
    • Проверка дат: дата вылета обратно не может быть раньше даты вылета туда.
    • Проверка скидки: значение не может превышать 100%.
  • Результат: При обнаружении противоречия метод выбрасывает ошибку и не позволяет сохранить объект.

🛠️ Django Admin

Панель администратора для управления данными проекта.

  • Настройка: Производится через код в файле admin.py (регистрация моделей, добавление поиска, фильтров).
  • Преимущества:
    • Управление данными без написания SQL-запросов (работает через ORM).
    • Возможность настройки ролей доступа и создания пользователей.

🔗 Ссылочные переходы в Django Admin

Задача: Сделать поле-ссылку для перехода на связанный объект.

  • Пример: В списке заказов отображается ID клиента. Кликая на него, администратор попадает на страницу этого клиента.
  • Реализация: В кастомном ModelAdmin можно переопределить метод list_display или создать собственный метод, который возвращает HTML-ссылку.

⛓️ Связи между моделями в разных базах данных

  • Ограничение Django ORM: Не поддерживает ForeignKey между таблицами из разных физических баз данных, так как это нарушает целостность данных.
  • Обходное решение: Хранить не внешний ключ, а UUID или числовой ID. Связь устанавливается логически: сначала получить ID из одной таблицы, затем найти запись с таким ID в другой.

⏱️ Таймауты (Timeouts)

Защита от "подвисающих" запросов.

  • Проблема: Долгий запрос (например, более 10 секунд) может заблокировать пул соединений к БД, что приведёт к падению производительности сайта.
  • Принцип: "Быстрая ошибка лучше долгой загрузки". Таймаут принудительно завершает запрос, если он выполняется дольше заданного времени.
  • Способы установки:
    • Для всех запросов: Через настройки базы данных в settings.py (параметр 'OPTIONS': {'statement_timeout': 5000}).
    • Для конкретного запроса: Использовать декоратор, замеряющий время выполнения.

💡 Выводы и рекомендации

  • Главный урок: Для успешного прохождения собеседований критически важен практический опыт, а не заученная теория.
  • Статистика: Около 80% кандидатов отсеиваются на подобных вопросах из-за отсутствия глубокого понимания.
  • Подготовка: Следует фокусироваться на понимании "как это работает" и "как это применить", а не на механическом запоминании.
🧠 Подготовка к собеседованию по Django: ключевые темы — конспект на EchoNote