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
🎉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
Что в python не является объектом? Шанс 2%

В 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 собесов, где по таймингу отвечают на этот вопрос

🔥 Твой Оффер
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤1😭1