Подготовка к интервью

Вопросы на собеседовании по select_related

14 вопросов по select_related с технических собеседований

14 вопросов 1634 компании 353 технологии

Что проверяют на интервью

Как устроена подборка

На странице собраны вопросы по select_related — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: select_related, django, database.

Каталог

Результаты поиска

Найдено: 14
Теория

Ты работал в основном с FastAPI или с Django? Можешь рассказать про select_related и prefetch_related — что из этого что и зачем?

В Django select_related получает одиночные связи через SQL JOIN, а prefetch_related загружает связанные объекты отдельными запросами и связывает их в Python. Оба помогают устранить N+1.

Читать ответ
Теория

[имя] спросил: Сколько запросов в базу выполнилось бы, если использовать select_related, и сколько — если использовать prefetch_related?

Для одной простой ForeignKey-связи select_related обычно получает данные одним JOIN-запросом, prefetch_related — двумя запросами. Точное число зависит от связей, вложенности и последующего доступа.

Читать ответ
Теория

Вы хорошо описали последовательность действий и диагностику. Расскажите, как именно вы используете select_related и prefetch_related для оптимизации запросов в Django ORM?

select_related загружает одиночные связи SQL JOIN, а prefetch_related делает дополнительные запросы и связывает объекты в Python. Выбирайте только связи, действительно используемые при построении ответа.

Читать ответ
Теория

Вы хорошо объяснили выбор между select_related и prefetch_related. А можете привести пример, когда использование prefetch_related может привести к ухудшению производительности?

prefetch_related может замедлить страницу, если загружает огромные коллекции, которые затем почти не используются. Дополнительные запросы и сборка объектов расходуют сеть, CPU и память.

Читать ответ
Лайвкодинг

Профилирование 35 запросов Django перед оптимизацией связей

Лучший первый шаг — снять профиль запросов и найти причину 35 обращений. После этого выборочно применяют select_related или prefetch_related к действительно нужным связям.

Читать ответ
Теория

Django ORM создаёт 35 запросов на страницу каталога. Какое первое решение наиболее зрелое?

Наиболее зрелый первый шаг — снять трассировку, найти запросы и затем настроить выборочную загрузку связей. Число 35 само по себе ещё не объясняет причину задержки.

Читать ответ
Теория

Расскажи подробнее, как select_related и prefetch_related устроены под капотом — что происходит, когда вызываешь тот или иной метод.

select_related добавляет JOIN и загружает связанные объекты в одном SQL; prefetch_related выполняет дополнительные запросы и связывает результаты в Python. Оба меняют план загрузки ленивого QuerySet.

Читать ответ
Теория

Вы хорошо объяснили различия между select_related и prefetch_related. Можете привести пример, когда использование prefetch_related может привести к ухудшению производительности?

prefetch_related может замедлить запрос, если загружает много ненужных связанных объектов: растут объём данных, память и стоимость дополнительного SQL. Особенно заметно это на больших выборках.

Читать ответ
Теория

Как работают select_related/prefetch_related или joinedload/selectinload на уровне SQL?

JOIN-загрузка получает связанные объекты в одном SQL-запросе, а пакетная загрузка сначала читает родителей, затем связи отдельными запросами и объединяет их в памяти.

Читать ответ
Теория

Что такое проблема N+1 запросов при работе с ORM (Django ORM или SQLAlchemy)? Как её обнаружить и с помощью каких инструментов и методов — select_related, prefetch_related, joinedload, subqueryload — она решается?

Да, я знаком с SQLAlchemy и проблемой N+1 в ORM.

Читать ответ