Как избавиться от N+1 запросов в Django ORM
Загрузите книги через Book.objects.select_related('author'). Тогда имя автора берётся из того же SQL-результата, и цикл не выполняет отдельный запрос для каждой книги.
Читать ответПодготовка к интервью
3221 вопрос в категории «Лайвкодинг»
Что проверяют на интервью
В этой подборке вопросы сгруппированы по формату «Лайвкодинг», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: frontend, browser, database.
Каталог
Загрузите книги через Book.objects.select_related('author'). Тогда имя автора берётся из того же SQL-результата, и цикл не выполняет отдельный запрос для каждой книги.
Читать ответВозникнет TypeError при первой попытке txt[i] = ...: строки Python неизменяемы. До print выполнение не дойдёт. Для получения 'PYTHON' нужно создать новую строку через txt.upper().
Читать ответfoo(0) вернёт пустой список []. abs(0) равен 0, а range(0) не содержит элементов, поэтому list comprehension не выполнит ни одной итерации.
Читать ответSupervisor создаёт два конкретных worker и последовательно вызывает process. Внедрение списка исполнителей через конструктор убирает жёсткую привязку и позволяет подставлять тестовые реализации.
Читать ответДанная функция уже сортирует по последнему символу через sorted(..., key=lambda w: w[-1]). Нужно определить поведение для пустых строк: исходная версия на них вызовет IndexError.
Читать ответПодсчитайте кратности второго списка, затем удаляйте из первого не больше указанного количества каждого значения. Примеры дополнительно сортируют остаток; без сортировки порядок первого списка сохранился бы.
Читать ответБудет напечатано 2. Перед окончательным выходом из try выполняется finally, и его return заменяет ранее подготовленный возврат 1.
Читать ответНайдите максимум среди индексов, используя abs(nums[index]) как ключ. При одинаковом модуле вернётся первый подходящий индекс; для указанного непустого списка это однопроходный поиск.
Читать ответdefaultdict(int) подходит для суммирования числа уязвимостей по device_id. Но пагинации нужны timeout, проверка HTTP/JSON, корректного more и предел страниц; иначе код может зависнуть или молча исказить итог.
Читать ответРеализуйте генератор с текущим значением и шагом; условие остановки зависит от знака шага. Нулевой шаг запрещён, конечная граница не включается, а один аргумент означает диапазон от нуля.
Читать ответПри обычном запуске все три assert проходят. Каждый вызов меняет один общий default-список; во втором сравнении обе стороны ссылаются на него же, хотя вызовы последовательно добавляют элементы.
Читать ответОбойдите числовые листья вложенных списков и сложите их. Чтобы не зависеть от предела рекурсии Python, можно хранить стек итераторов: он занимает память пропорционально глубине вложения.
Читать ответ