Python Кодер
2.31K subscribers
676 photos
3 files
276 links
Cайт: uoffer.ru
Реклама: @murman12

Вопросы: https://t.me/+cEryzTP27uUyOWRi
Leetcode: https://t.me/+7Lmpc3Upyxk2MWFi
Вакансии: https://t.me/+slOzbyonqfRmZGI6

База реальных собесов: https://t.me/tribute/app?startapp=sv92
Download Telegram
🐍Подсчет количества элементов в списке.

Метод count() позволяет подсчитать количество вхождений указанного элемента в списке и вернуть его. Если элемент не найден, возвращается 0.

Синтаксис:
list.count(x)

▫️x - элемент, количество вхождений которого нужно подсчитать.

Python Universe | #list #Списки
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2❤1
Что выведет код выше?
Anonymous Quiz
60%
True
20%
False
9%
None
11%
Error
🎉7🐳4☃2
🎉5🤬3🤣3👍1
🐍Расширение списка с использованием метода extend()

Метод extend() позволяет добавить элементы из другого итерируемого объекта в конец текущего списка.

Синтаксис:
list.extend(iterable)

▫️list - список, к которому нужно добавить элементы.
▫️iterable - итерируемый объект, содержащий элементы, которые нужно добавить в список.

Python Universe | #list #Списки
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1
🎉5👍4😁3
Что выведет код выше?
Anonymous Quiz
47%
True
20%
False
16%
None
15%
Error
2%
''
🎉9🤨6👌2😎2
🐍Цикл for/else в Python.

Цикл 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), который определяет порядок вызовов, однако это добавляет сложности при проектировании системы.


🔥 Твой Оффер
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Почему стоит создавать собственный тип исключения?

Создание собственного типа исключения позволяет чётко обозначить конкретные ошибки, связанные с бизнес-логикой или уникальными ситуациями, которые стандартные исключения не охватывают. Это делает код более понятным и упрощает обработку ошибок.

🔥 Твой Оффер
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8😁6
Что такое идемпотентность и зачем она нужна?

Это операция, которая при повторном выполнении даёт тот же результат и не изменяет состояние системы дополнительно.

▫️Повышение надёжности:
Если операция случайно выполнится несколько раз (например, из-за сбоя в сети), идемпотентность гарантирует, что это не повлияет на итоговое состояние.

▫️Предотвращение дубликатов:
Позволяет избежать непреднамеренного добавления данных или повторного применения изменений.

Работа с 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__ обрабатывает его инициализацию.

__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️⃣Включите логирование медленных запросов, задав параметр log_min_duration_statement в конфигурации. Это позволит записывать все запросы, выполняющиеся дольше указанного времени.

2️⃣Используйте команды EXPLAIN или EXPLAIN ANALYZE для просмотра плана выполнения запроса и оценки, где возникают задержки.

3️⃣Проверьте, правильно ли настроены индексы для ускорения работы запросов, и при необходимости оптимизируйте сам запрос.

4️⃣Анализируйте статистику запросов с помощью расширения pg_stat_statements, которое собирает информацию о времени выполнения и частоте запросов.

Видео ответ от кандидата на этот вопрос

🔥 Твой Оффер
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Что такое контекстный менеджер? Шанс 24%

Менеджер контекста позволяет выделять и освобождать ресурсы строго по необходимости. В 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1