Метод
count() позволяет подсчитать количество вхождений указанного элемента в списке и вернуть его. Если элемент не найден, возвращается 0.Синтаксис:
list.count(x)▫️
x - элемент, количество вхождений которого нужно подсчитать.Python Universe | #list #Списки
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2❤1
🎉7🐳4☃2
Что выведет код выше?
Anonymous Quiz
13%
[(0, 'p'), (2, 'y')]
30%
[{0: 'p', 2: 'y'}]
9%
[0, 'p', 2, 'y']
10%
['p', 'y']
5%
[(0, 2)]
18%
[0, 2]
15%
TypeError
🎉5🤬3🤣3👍1
Метод
extend() позволяет добавить элементы из другого итерируемого объекта в конец текущего списка.Синтаксис:
list.extend(iterable)▫️
list - список, к которому нужно добавить элементы.▫️
iterable - итерируемый объект, содержащий элементы, которые нужно добавить в список.Python Universe | #list #Списки
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1
Что выведет код выше?
Anonymous Quiz
31%
['py', 'thon']
13%
['thon', 'py']
29%
['p', 'y', 'thon']
15%
['p', 'thon', 'y']
2%
None
3%
TypeError
3%
IndexError
1%
ValueError
3%
SyntaxError
🤔6😁2🤯2👍1
Что выведет код выше?
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