Что выведет код выше?
Anonymous Quiz
9%
-1 1 0
11%
-1 1
13%
-1 0
5%
1 0
26%
-1
7%
1
8%
0
17%
SyntaxError
4%
Ничего
🎉5👍4😁3
🎉9🤨6👌2😎2
Цикл
for/else является особенностью Python, которая позволяет выполнить блок кода из else, если цикл for завершается естественным образом (без прерывания с помощью оператора break).Python Universe | #циклы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤3😢1🙏1
В чём заключается проблема множественного наследования?
Основная сложность — это "проблема алмаза": когда класс наследует от двух классов с общим предком, возникает неоднозначность в порядке вызова методов этого предка.
Для её решения применяется алгоритм MRO (Method Resolution Order), который определяет порядок вызовов, однако это добавляет сложности при проектировании системы.
🔥 Твой Оффер
Для её решения применяется алгоритм MRO (Method Resolution Order), который определяет порядок вызовов, однако это добавляет сложности при проектировании системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Почему стоит создавать собственный тип исключения?
Создание собственного типа исключения позволяет чётко обозначить конкретные ошибки, связанные с бизнес-логикой или уникальными ситуациями, которые стандартные исключения не охватывают. Это делает код более понятным и упрощает обработку ошибок.
🔥 Твой Оффер
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Что такое идемпотентность и зачем она нужна?
Это операция, которая при повторном выполнении даёт тот же результат и не изменяет состояние системы дополнительно.
▫️Повышение надёжности:
Если операция случайно выполнится несколько раз (например, из-за сбоя в сети), идемпотентность гарантирует, что это не повлияет на итоговое состояние.
▫️Предотвращение дубликатов:
Позволяет избежать непреднамеренного добавления данных или повторного применения изменений.
Работа с HTTP:
GET — ✔️ идемпотентен
PUT — ✔️ идемпотентен
Повторный вызов не изменит состояние.
POST — ✖️ не идемпотентен
Каждый вызов создаст нового пользователя.
Идемпотентность в БД:
✔️ Идемпотентный:
Повторное выполнение ничего не изменит, если пользователь уже удалён.
✖️ Не идемпотентный:
Повтор — создаст дубликаты.
Идемпотентность = безопасное повторное выполнение.
🔥 Твой Оффер
Это операция, которая при повторном выполнении даёт тот же результат и не изменяет состояние системы дополнительно.
▫️Повышение надёжности:
Если операция случайно выполнится несколько раз (например, из-за сбоя в сети), идемпотентность гарантирует, что это не повлияет на итоговое состояние.
▫️Предотвращение дубликатов:
Позволяет избежать непреднамеренного добавления данных или повторного применения изменений.
Работа с HTTP:
GET — ✔️ идемпотентен
GET /users/1
PUT — ✔️ идемпотентен
PUT /users/1
{
"name": "Alice"
}
Повторный вызов не изменит состояние.
POST — ✖️ не идемпотентен
POST /users
{
"name": "Alice"
}
Каждый вызов создаст нового пользователя.
Идемпотентность в БД:
✔️ Идемпотентный:
DELETE FROM users WHERE id = 5;
Повторное выполнение ничего не изменит, если пользователь уже удалён.
✖️ Не идемпотентный:
INSERT INTO users (name) VALUES ('Alice');
Повтор — создаст дубликаты.
Идемпотентность = безопасное повторное выполнение.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍1🌚1💯1
Чем init() отличается от new() ? | Шанс 19%
Основное различие между этими двумя методами состоит в том, что
Пример:
Вывод:
__new__ сработал один раз — объект создан.
__init__ вызвался дважды — каждый раз при создании экземпляра.
10 видео ответов от кандидатов на этот вопрос
🔥 Твой Оффер
Основное различие между этими двумя методами состоит в том, что
__new__ обрабатывает создание объекта, а __init__ обрабатывает его инициализацию.__new__ вызывается автоматически при вызове имени класса (при создании экземпляра), тогда как init вызывается каждый раз, когда экземпляр класса возвращается __new__, передавая возвращаемый экземпляр в __init__ в качестве параметра self, поэтому даже если вы сохранили экземпляр где-нибудь глобально/статически и возвращали его каждый раз из __new__, для него все-равно будет каждый раз вызываться __init__.Пример:
class Singleton:
_instance = None
def __new__(cls):
if cls._instance is None:
print("Создание объекта")
cls._instance = super().__new__(cls)
return cls._instance
def __init__(self):
print("Инициализация объекта")
a = Singleton()
b = Singleton()
Вывод:
Создание объекта
Инициализация объекта
Инициализация объекта
__new__ сработал один раз — объект создан.
__init__ вызвался дважды — каждый раз при создании экземпляра.
10 видео ответов от кандидатов на этот вопрос
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔3❤2
Как найти и проанализировать медленный запрос в PostgreSQL? шанс 2%
1️⃣ Включите логирование медленных запросов, задав параметр
2️⃣ Используйте команды
3️⃣ Проверьте, правильно ли настроены индексы для ускорения работы запросов, и при необходимости оптимизируйте сам запрос.
4️⃣ Анализируйте статистику запросов с помощью расширения
Видео ответ от кандидата на этот вопрос
🔥 Твой Оффер
log_min_duration_statement в конфигурации. Это позволит записывать все запросы, выполняющиеся дольше указанного времени.EXPLAIN или EXPLAIN ANALYZE для просмотра плана выполнения запроса и оценки, где возникают задержки.pg_stat_statements, которое собирает информацию о времени выполнения и частоте запросов.Видео ответ от кандидата на этот вопрос
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Что такое контекстный менеджер? Шанс 24%
Менеджер контекста позволяет выделять и освобождать ресурсы строго по необходимости. В Python за это отвечает блок с оператором
Пример:
Файл гарантированно закроется.
Реализация своего контекстного менеджера на основе класса:
Реализация своего контекстного менеджера с использованием встроенной библиотеки
Контекстные менеджеры также можно использовать для временной замены параметров, переменных окружения, управления транзакциями в БД и других задач, где важен контроль за ресурсами.
13 собесов, где кандидаты отвечают на этот вопрос
🔥 Твой Оффер
Менеджер контекста позволяет выделять и освобождать ресурсы строго по необходимости. В Python за это отвечает блок с оператором
with.
[async] with <функция> as <переменная>:
# до и после гарантированно срабатывают события входа в блок with и выхода из него.
__exit__ срабатывает в момент выхода из блока, в том числе по причине возникновения исключения. В этом случае в метод будут переданы exc_class, exc_instance и traceback.Пример:
with open('file.txt') as f:
data = f.read()
process_data(data)
Файл гарантированно закроется.
Реализация своего контекстного менеджера на основе класса:
class Printable:
def __enter__(self):
print('enter')
def __exit__(self, type, value, traceback):
print('exit')
Реализация своего контекстного менеджера с использованием встроенной библиотеки
contextlib:
from contextlib import contextmanager
@contextmanager
def printable():
print('enter')
try:
yield
finally:
print('exit')
Контекстные менеджеры также можно использовать для временной замены параметров, переменных окружения, управления транзакциями в БД и других задач, где важен контроль за ресурсами.
13 собесов, где кандидаты отвечают на этот вопрос
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤔1
Forwarded from Python Вопросы с собеседований
Что означает, что querySet() ленивый? | Шанс 4%
QuerySet в Django ленивый — это значит, что сам запрос к базе данных не выполняется сразу при его объявлении.
Он формируется, но обращение к базе происходит только тогда, когда данные реально нужны: например, при переборе, преобразовании в список или вызове методов вроде .all(), .filter(), .exists().
Это позволяет избежать лишних запросов и делает работу с данными более оптимизированной.
2 собеса, где кандидаты отвечают на этот вопрос
🔥 Твой Оффер #django
Он формируется, но обращение к базе происходит только тогда, когда данные реально нужны: например, при переборе, преобразовании в список или вызове методов вроде .all(), .filter(), .exists().
Это позволяет избежать лишних запросов и делает работу с данными более оптимизированной.
2 собеса, где кандидаты отвечают на этот вопрос
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Что в python не является объектом? Шанс 2%
В Python почти всё рассматривается как объект: числа, строки, функции, классы и модули — всё это объекты. Тем не менее, есть некоторые элементы, которые объектами не являются:
▫️Операторы и синтаксис
Операторы (например, +, -, *, and, or, not и другие) — это части языка, которые не представлены как объекты в памяти.
▫️Аннотации типов
Аннотации типов, такие как list[str], не создают объекты во время выполнения программы, а используются лишь для статического анализа кода.
▫️Имена переменных
Имена переменных — это просто ссылки на объекты, а не сами объекты. Переменная указывает на объект в памяти, но сама по себе не объект.
▫️Ключевые слова
Ключевые слова Python (if, else, while, for, def, class, return и т.д.) — это зарезервированные слова, которые используются для управления логикой программы, и они не являются объектами.
🔥 Твой Оффер
В Python почти всё рассматривается как объект: числа, строки, функции, классы и модули — всё это объекты. Тем не менее, есть некоторые элементы, которые объектами не являются:
▫️Операторы и синтаксис
Операторы (например, +, -, *, and, or, not и другие) — это части языка, которые не представлены как объекты в памяти.
▫️Аннотации типов
Аннотации типов, такие как list[str], не создают объекты во время выполнения программы, а используются лишь для статического анализа кода.
def func(x: int) -> str:
return str(x)
▫️Имена переменных
Имена переменных — это просто ссылки на объекты, а не сами объекты. Переменная указывает на объект в памяти, но сама по себе не объект.
x = 42 # 'x' — это имя, а не объект
print(type(x)) # Объектом является число 42, а не имя 'x'
▫️Ключевые слова
Ключевые слова Python (if, else, while, for, def, class, return и т.д.) — это зарезервированные слова, которые используются для управления логикой программы, и они не являются объектами.
print(type(if)) # Ошибка: ключевое слово не объект
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🤔4👍3❤1
Что такое декоратор? Шанс 20%
Декоратором называется функция, которая принимает функцию с таким же именем, как у исходной, но с расширенной функциональностью. Декораторы часто используются во фреймворках, чтобы упростить интеграцию пользовательских функций с фреймворком.
Паттерн Декоратор настолько полезен, что в Python встроена специальная поддержка для него. Декорировать можно как функции, так и методы.
Кроме того, Python поддерживает декораторы классов: функции, которые принимают класс в качестве аргумента и возвращают новый класс с таким же именем, как у исходного, но с дополненной функциональностью.
Иногда декораторы классов удобно использовать как альтернативу производным классам.
11 собесов, где по таймингу отвечают на этот вопрос
🔥 Твой Оффер
Декоратором называется функция, которая принимает функцию с таким же именем, как у исходной, но с расширенной функциональностью. Декораторы часто используются во фреймворках, чтобы упростить интеграцию пользовательских функций с фреймворком.
Паттерн Декоратор настолько полезен, что в Python встроена специальная поддержка для него. Декорировать можно как функции, так и методы.
Кроме того, Python поддерживает декораторы классов: функции, которые принимают класс в качестве аргумента и возвращают новый класс с таким же именем, как у исходного, но с дополненной функциональностью.
Иногда декораторы классов удобно использовать как альтернативу производным классам.
11 собесов, где по таймингу отвечают на этот вопрос
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤1😭1