Python | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Ko'proq ko'rsatish📈 Telegram kanali Python | Вопросы собесов analitikasi
Python | Вопросы собесов (@python_easy_ru) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 12 629 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 9 915-o'rinni va Rossiya mintaqasida 51 035-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 12 629 obunachiga ega bo‘ldi.
16 Oktabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -115 ga, so‘nggi 24 soatda esa -6 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 6.29% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 4.30% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 794 marta ko‘riladi; birinchi sutkada odatda 543 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 2 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent ставь, модуль, строка, docker, alice kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 17 Oktabr, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
from abc import ABC, abstractmethod
# Посредник
class Mediator(ABC):
@abstractmethod
def notify(self, sender, event):
pass
# Конкретный посредник
class ConcreteMediator(Mediator):
def __init__(self):
self.button = None
self.textbox = None
def set_button(self, button):
self.button = button
def set_textbox(self, textbox):
self.textbox = textbox
def notify(self, sender, event):
if event == "button_clicked":
self.textbox.enable()
elif event == "textbox_filled":
self.button.enable()
# Коллеги
class Button:
def __init__(self, mediator):
self.mediator = mediator
self.enabled = False
def click(self):
print("Button clicked.")
self.mediator.notify(self, "button_clicked")
def enable(self):
self.enabled = True
print("Button enabled.")
class TextBox:
def __init__(self, mediator):
self.mediator = mediator
self.enabled = False
def fill(self):
print("TextBox filled.")
self.mediator.notify(self, "textbox_filled")
def enable(self):
self.enabled = True
print("TextBox enabled.")
# Клиентский код
mediator = ConcreteMediator()
button = Button(mediator)
textbox = TextBox(mediator)
mediator.set_button(button)
mediator.set_textbox(textbox)
button.click() # Button clicked. TextBox enabled.
textbox.fill() # TextBox filled. Button enabled.
🤔 Преимущества:
1️⃣ Уменьшение связности: Упрощает изменение и повторное использование объектов, уменьшает количество прямых зависимостей между ними.
2️⃣ Упрощение взаимодействий: Все взаимодействия централизованы, что упрощает управление ими.
3️⃣ Централизованный контроль: Облегчает отладку и тестирование, так как все взаимодействия проходят через один объект.
🤔 Недостатки:
1️⃣ Централизация логики: Посредник может стать слишком сложным и трудным для поддержки, если будет обрабатывать слишком много логики.
2️⃣ Ограниченная масштабируемость: Централизация может стать узким местом, особенно в крупных системах с множеством взаимодействий.
🤔 Когда использовать данный паттерн?
➕ Когда нужно уменьшить связность между множеством взаимодействующих объектов.
➕ Когда нужно централизовать сложные взаимодействия между объектами.
➕ Когда изменения в одном объекте должны привести к изменениям в других, без необходимости явно связывать их.
Паттерн "Посредник" является мощным инструментом для управления взаимодействиями в системе, улучшая её модульность и уменьшая сложность.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовыхfrom abc import ABC, abstractmethod
# Контекст (необязательный компонент)
class Context:
pass
# Абстрактное выражение
class Expression(ABC):
@abstractmethod
def interpret(self, context):
pass
# Терминальное выражение (число)
class Number(Expression):
def __init__(self, value):
self.value = value
def interpret(self, context):
return self.value
# Нетерминальное выражение (сложение)
class Add(Expression):
def __init__(self, left, right):
self.left = left
self.right = right
def interpret(self, context):
return self.left.interpret(context) + self.right.interpret(context)
# Нетерминальное выражение (вычитание)
class Subtract(Expression):
def __init__(self, left, right):
self.left = left
self.right = right
def interpret(self, context):
return self.left.interpret(context) - self.right.interpret(context)
# Клиентский код
def main():
# Построение выражения: 1 + 2 - 3
expression = Subtract(Add(Number(1), Number(2)), Number(3))
context = Context() # Контекст может использоваться для передачи информации
result = expression.interpret(context)
print(result) # 0
if __name__ == "__main__":
main()
🤔 Преимущества:
1️⃣ Простота добавления новых правил: Легко добавлять новые грамматические правила и расширять язык.
2️⃣ Четкая структура: Грамматика и интерпретация языка разделены, что упрощает понимание и изменение.
🤔 Недостатки:
1️⃣ Ограниченная производительность: Может быть неэффективным для сложных или очень больших грамматик.
2️⃣ Сложность поддержки: Поддержка сложных грамматик может стать трудной из-за большого числа классов.
🤔 Когда использовать данный паттерн?
➕ Когда есть необходимость интерпретировать и выполнять предложения на определенном языке.
➕ Когда грамматика языка относительно проста и стабильна.
➕ Когда нужно часто добавлять новые грамматические правила.
Паттерн "Интерпретатор" является мощным инструментом для определения и интерпретации грамматик, позволяя легко анализировать и выполнять структурированные тексты.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовыхexecute.
➕ Конкретные команды (ConcreteCommand): Реализуют интерфейс команды, инкапсулируя действия для конкретного запроса.
➕ Получатель (Receiver): Объект, который выполняет действие по запросу.
➕ Отправитель (Invoker): Объект, который инициирует выполнение команды.
➕ Клиент (Client): Создаёт объекты команд и связывает их с получателями.
from abc import ABC, abstractmethod
# Интерфейс команды
class Command(ABC):
@abstractmethod
def execute(self):
pass
# Получатель
class Light:
def on(self):
print("Light is ON")
def off(self):
print("Light is OFF")
# Конкретная команда включения света
class LightOnCommand(Command):
def __init__(self, light):
self._light = light
def execute(self):
self._light.on()
# Конкретная команда выключения света
class LightOffCommand(Command):
def __init__(self, light):
self._light = light
def execute(self):
self._light.off()
# Отправитель
class RemoteControl:
def __init__(self):
self._commands = {}
def set_command(self, button, command):
self._commands[button] = command
def press_button(self, button):
if button in self._commands:
self._commands[button].execute()
else:
print("No command assigned to this button")
# Клиентский код
light = Light()
light_on = LightOnCommand(light)
light_off = LightOffCommand(light)
remote = RemoteControl()
remote.set_command("ON", light_on)
remote.set_command("OFF", light_off)
remote.press_button("ON") # Light is ON
remote.press_button("OFF") # Light is OFF
remote.press_button("UNASSIGNED") # No command assigned to this button
🤔 Преимущества:
1️⃣ Инкапсуляция запросов: Позволяет инкапсулировать действия в объекты команд.
2️⃣ Поддержка отмены и логирования: Упрощает реализацию отмены операций и логирования.
3️⃣ Гибкость и расширяемость: Легко добавлять новые команды без изменения существующего кода.
4️⃣ Разделение ответственности: Разделяет ответственность между отправителем и получателем.
🤔 Недостатки:
1️⃣ Усложнение кода: Добавление множества классов команд может усложнить код.
2️⃣ Требует дополнительных ресурсов: Создание объектов команд может потребовать дополнительных ресурсов.
🤔 Когда использовать данный паттерн?
➕ Когда нужно параметризовать объекты выполняемыми действиями.
➕ Когда требуется логирование, отмена и повтор запросов.
➕ Когда нужно передавать операции в очереди или как аргументы при вызове методов.
➕ Когда нужно разделить ответственность между отправителем запроса и объектом, выполняющим запрос.
Паттерн "Команда" является мощным инструментом для управления действиями и их инкапсуляции, обеспечивая гибкость и расширяемость системы.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовыхfrom abc import ABC, abstractmethod
# Абстрактный обработчик
class Handler(ABC):
def __init__(self, successor=None):
self._successor = successor
@abstractmethod
def handle(self, request):
pass
# Конкретный обработчик 1
class ConcreteHandler1(Handler):
def handle(self, request):
if request == "Condition1":
print("Handled by ConcreteHandler1")
elif self._successor:
self._successor.handle(request)
# Конкретный обработчик 2
class ConcreteHandler2(Handler):
def handle(self, request):
if request == "Condition2":
print("Handled by ConcreteHandler2")
elif self._successor:
self._successor.handle(request)
# Клиентский код
def client_code(handler, request):
handler.handle(request)
# Создание цепочки обработчиков
handler1 = ConcreteHandler1()
handler2 = ConcreteHandler2(handler1)
# Использование
client_code(handler2, "Condition1") # Handled by ConcreteHandler1
client_code(handler2, "Condition2") # Handled by ConcreteHandler2
client_code(handler2, "Condition3") # Ничего не происходит, так как запрос не обработан
🤔 Преимущества:
1️⃣ Гибкость в распределении обязанностей: Легко изменять цепочку обработчиков.
2️⃣ Изоляция отправителя запроса от его получателей: Отправитель запроса не знает, какой именно обработчик его обработает.
3️⃣ Уменьшение зависимости между объектами: Меньше жёстких привязок между отправителями и получателями запросов.
🤔 Недостатки:
1️⃣ Неопределенность обработки: Запрос может остаться необработанным, если ни один из обработчиков не сможет его обработать.
2️⃣ Сложность отладки: Из-за передачи запроса по цепочке может быть сложно определить, где именно он был обработан или отклонен.
🤔 Когда использовать данный паттерн?
➕ Когда необходимо передавать запросы нескольким объектам без жесткой привязки к конкретным обработчикам.
➕ Когда набор обработчиков и их порядок должен легко изменяться.
➕ Когда необходимо избежать жёсткой привязки отправителей запросов к их получателям.
Паттерн "Цепочка ответственности" является мощным инструментом для гибкого и динамичного распределения обязанностей по обработке запросов в системе.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых