Python | Вопросы собесов
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
نمایش بیشتر📈 تحلیل کانال تلگرام Python | Вопросы собесов
کانال Python | Вопросы собесов (@python_easy_ru) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 12 629 مشترک است و جایگاه 9 915 را در دسته فناوری و برنامهها و رتبه 51 035 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 12 629 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 16 اکتبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -115 و در ۲۴ ساعت گذشته برابر -6 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 6.29% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 4.30% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 794 بازدید دریافت میکند. در اولین روز معمولاً 543 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 2 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند ставь, модуль, строка, docker, alice تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy
Контакт для рекламы: @sendme_ads”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 17 اکتبر, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
init() и new() заключается в их роли при создании экземпляров классов.
➕ __init__() – это инициализатор класса. Он вызывается, когда экземпляр класса уже создан, чтобы инициализировать его начальное состояние. Метод init() не возвращает ничего и используется для установки значений атрибутов объекта.
➕__new__() – это конструктор класса. Он фактически создаёт экземпляр класса и вызывается перед __init__(). Это статический метод, который должен возвращать новый созданный объект, и он используется в особых случаях, например, при создании экземпляров синглтонов или при наследовании от неизменяемых типов данных, как tuple.
➕ Пример с init()
Допустим, у нас есть класс Person, представляющий информацию о человеке. Мы используем init() для инициализации атрибутов каждого объекта этого класса.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# Создание экземпляра класса Person
person1 = Person("Алексей", 30)
print(f"Имя: {person1.name}, Возраст: {person1.age}")
В этом примере init() используется для установки имени и возраста для каждого объекта Person. Это самый распространенный способ инициализации атрибутов в объектно-ориентированном программировании.
➕ Пример с new()
new() используется реже, но его можно применять в специфических сценариях, например, для создания синглтонов (одиночек).
class Singleton:
_instance = None
def new(cls):
if cls._instance is None:
print("Создание экземпляра")
cls._instance = super(Singleton, cls).new(cls)
return cls._instance
# Создание экземпляров Singleton
singleton1 = Singleton()
singleton2 = Singleton()
print(singleton1 is singleton2) # Вернет True, так как оба объекта являются одним и тем же экземпляром
Здесь new() гарантирует, что класс Singleton создает только один экземпляр. При попытке создать новый объект этого класса, new() возвращает уже существующий экземпляр, если он есть, предотвращая создание новых экземпляров.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовыхё
🤔 enter и exit.
➕ Метод enter вызывается в начале блока кода, управляемого контекстным менеджером (обычно после ключевого слова with), и обычно используется для выделения ресурсов.
➕ Метод exit вызывается после окончания блока кода и обычно занимается очисткой ресурсов.
🤔 Пример контекстного менеджера, который управляет файлом:
class FileHandler:
def init(self, filename, mode):
self.filename = filename
self.mode = mode
self.file = None
def enter(self):
self.file = open(self.filename, self.mode)
return self.file
def exit(self, exc_type, exc_val, exc_tb):
if self.file:
self.file.close()
# Использование контекстного менеджера
with FileHandler('example.txt', 'w') as f:
f.write('Привет, мир!')
# После выхода из блока with файл автоматически закрывается
В этом примере FileHandler - это контекстный менеджер для работы с файлами. Когда начинается блок with, вызывается метод enter, который открывает файл. После завершения работы в блоке with автоматически вызывается метод exit, который закрывает файл. Это предотвращает ошибки, связанные с забытым закрытием файла, и делает код более надежным и читаемым.
Контекстные менеджеры широко используются в Python для управления ресурсами, их можно встретить в стандартной библиотеке (например, open для файлов), а также во многих сторонних библиотеках.
🤔 Кратко:
Контекстный менеджер в Python - это способ управления ресурсами в блоке кода, обеспечивающий автоматическое выделение и освобождение ресурсов.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовыхёe = [1, 2, 3, 4, 5]➕ Словари (dict): Коллекции пар ключ-значение. Пример: {"name": "Alice", "age": 25}. Словари удобны для представления объектов с атрибутами. Ключом в словаре может быть значение с не изменяемым типом данных (int, float, str, tuple, bool, frozenset и т.д.)
g = {"name": "Alice", "age": 25}
➕ Множества (set):
Неупорядоченные коллекции уникальных элементов. Пример: {1, 2, 3}. Используются для удаления дубликатов и выполнения операций над множествами, таких как объединение, пересечение.
h = {1, 2, 3, 4, 5}
➕ Байтовые массивы (bytearray):
Это изменяемая последовательность целых чисел в диапазоне от 0 до 255. Они используются для работы с двоичными данными, например, при чтении файлов или сетевого взаимодействия. bytearray полезен, когда вам нужно изменять данные на уровне байтов.
ba = bytearray([50, 100, 150, 200])
🤔 Не изменяемые (immutable)
➕ Целые числа (int):
Как положительные, так и отрицательные. Например, 1, 100, -20.
a = 5➕ Вещественные числа (float): Числа с плавающей точкой (то есть с дробной частью). Примеры: 3.14, -0.001
b = 2.5➕ Комплексные числа (complex): Этот тип данных используется для представления комплексных чисел, которые включают в себя действительную и мнимую части. В Python комплексные числа могут быть созданы с помощью литерала j для мнимой части. Например, комплексное число 3 + 4j. Комплексные числа используются в научных и инженерных расчетах, где необходимо работать с числами, имеющими мнимую составляющую.
z = 3 + 4j➕ Длинные целые числа (long): В старых версиях Python (2.x и ранее) существовал отдельный тип данных long для представления очень больших целых чисел. Однако в Python 3 и выше этот тип был упразднен, и теперь все целые числа (int) могут быть любой длины. Таким образом, в современном Python отдельного типа данных long не существует — все большие целые числа автоматически становятся int.
a = 12345678901234567890L # Python 2.x a = 12345678901234567890 # Python 3➕ Строки (str): Текст, заключенный в одинарные, двойные или тройные кавычки. Например: "hello", 'world'.
c = "Hello, Python!"➕ Булевы значения (bool): Имеют всего два значения:
True и False. Они часто используются в условиях и логических выражениях.
d = True➕ Кортежи (tuple): Похожи на списки, но являются неизменяемыми. Пример: (1, "apple", 3.14). Используются, когда данные не должны изменяться после их создания. Если кортеж содержит изменяемые данные, то он становится изменяемым
f = (1, 2, 3)➕ Диапазон (range): Это неизменяемая последовательность чисел, обычно используемая в циклах for. range полезен для итерации через серии числовых значений.
for i in range(0, 10):
print(i)
➕ NoneType:
Этот тип данных имеет только одно возможное значение: None. Оно используется для обозначения отсутствия значения. Часто используется в логических операциях например if a is None:
a = None➕ Frozenset: Это неизменяемый аналог set. Так как frozenset неизменяем, он может использоваться в качестве ключа в словарях.
fs = frozenset([1, 2, 3])➕ Байты (bytes): Похожи на bytearray, но являются неизменяемыми. Они также представляют собой последовательности целых чисел от 0 до 255 и используются для работы с двоичными данными.
b = bytes([50, 100, 150, 200])🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовыхё
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
raise NotImplementedError("Subclass must implement abstract method")
class Dog(Animal):
def speak(self):
return f"{self.name} says Woof!"
class Cat(Animal):
def speak(self):
return f"{self.name} says Meow!"
# Использование
animals = [Dog("Buddy"), Cat("Whiskers")]
for animal in animals:
print(animal.speak())
🤔 В этом примере:
➕ Класс Animal является суперклассом, содержащим абстрактный метод speak.
➕ Классы Dog и Cat являются подклассами, которые наследуют от Animal и реализуют метод speak.
➕ Список animals содержит объекты различных классов, и полиморфизм позволяет вызывать метод speak для каждого из них, не зная их конкретного класса.
ООП — мощная парадигма программирования, предоставляющая инструменты для организации кода, повышения его повторного использования, модульности и расширяемости. Используя его, можно создавать более структурированные, гибкие и поддерживаемые программные решения.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовыхsyntax = "proto3";
service Calculator {
rpc Add (AddRequest) returns (AddReply) {}
}
message AddRequest {
int32 a = 1;
int32 b = 2;
}
message AddReply {
int32 result = 1;
}
🤔 Генерация кода из файла .proto:
Для этого используется утилита protoc:
protoc --python_out=. --grpc_python_out=. calculator.proto
Реализация сервера:
import grpc
from concurrent import futures
import time
import calculator_pb2
import calculator_pb2_grpc
class CalculatorServicer(calculator_pb2_grpc.CalculatorServicer):
def Add(self, request, context):
response = calculator_pb2.AddReply()
response.result = request.a + request.b
return response
def serve():
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
calculator_pb2_grpc.add_CalculatorServicer_to_server(CalculatorServicer(), server)
server.add_insecure_port('[::]:50051')
server.start()
try:
while True:
time.sleep(86400)
except KeyboardInterrupt:
server.stop(0)
if __name__ == '__main__':
serve()
Реализация клиента:
import grpc
import calculator_pb2
import calculator_pb2_grpc
def run():
with grpc.insecure_channel('localhost:50051') as channel:
stub = calculator_pb2_grpc.CalculatorStub(channel)
response = stub.Add(calculator_pb2.AddRequest(a=1, b=2))
print(f"1 + 2 = {response.result}")
if name == '__main__':
run()
🤔 Преимущества:
1️⃣ Высокая производительность: Благодаря использованию HTTP/2 и protobuf.
2️⃣ Поддержка нескольких языков: Возможность работы с разными языками программирования.
3️⃣ Типы RPC: Поддержка различных типов взаимодействия между клиентом и сервером.
4️⃣ Масштабируемость: Подходит для построения микросервисной архитектуры.
🤔 Недостатки:
1️⃣ Крутая кривая обучения: Требует знания HTTP/2 и Protocol Buffers.
2️⃣ Совместимость с старыми системами: Не все системы и языки программирования имеют поддержку HTTP/2 и protobuf.
3️⃣ Инструменты и экосистема: В некоторых случаях может потребоваться настройка дополнительных инструментов для интеграции и отладки.
gRPC является мощным и гибким инструментом для построения современных распределённых систем, обеспечивая высокую производительность и масштабируемость, а также поддерживая множество языков программирования.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых