en
Feedback
Python | Вопросы собесов

Python | Вопросы собесов

Open in Telegram

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv

Show more

📈 Analytical overview of Telegram channel Python | Вопросы собесов

Channel Python | Вопросы собесов (@python_easy_ru) in the Russian language segment is an active participant. Currently, the community unites 12 889 subscribers, ranking 9 729 in the Technologies & Applications category and 50 792 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 12 889 subscribers.

According to the latest data from 01 August, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -117 over the last 30 days and by -4 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 6.88%. Within the first 24 hours after publication, content typically collects 4.88% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 887 views. Within the first day, a publication typically gains 629 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 1.
  • Thematic interests: Content is focused on key topics such as ставь, модуль, строка, docker, alice.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv

Thanks to the high frequency of updates (latest data received on 02 August, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

12 889
Subscribers
-424 hours
-257 days
-11730 days
Posts Archive
🤔 Что такое Host? Host (хост) — это устройство или сервер, подключённый к сети, который может предоставлять или запрашивать данные.
GET /index.html HTTP/1.1
Host: example.com
🚩Где используется `Host`? 🟠В HTTP-запросах (заголовок `Host`) Когда браузер запрашивает сайт, он отправляет заголовок Host, чтобы сервер знал, какой сайт нужно отдать.
GET / HTTP/1.1
Host: google.com
User-Agent: Mozilla/5.0
🟠В настройке DNS и доменных имён Host — это доменное имя, привязанное к IP-адресу. - example.com192.168.1.100 - mail.example.com192.168.1.101
127.0.0.1 mysite.local
🟠3. В локальной сети (локальные хосты) Внутри сети устройства тоже считаются хостами (192.168.1.10, 192.168.1.20). localhost (127.0.0.1) — это всегда локальный компьютер. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое garbage collector? Garbage collector (сборщик мусора) — это механизм, который освобождает память от объектов, которые уже не используются. В Python он работает совместно с системой подсчёта ссылок, дополнительно удаляя объекты с взаимными ссылками, которые не доступны извне (циклические зависимости). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие есть операторы ограничений? Ограничения (constraints) в SQL используются для контроля целостности данных в таблицах. Они помогают предотвратить некорректные значения и обеспечить согласованность данных. 🚩`NOT NULL` (Запрещает `NULL`) Используется, если поле обязательно для заполнения
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL  -- Поле name обязательно
);
Нельзя вставить NULL в name
INSERT INTO users (id, name) VALUES (1, NULL);  -- Ошибка!
🚩`UNIQUE` (Гарантирует уникальность значений) Запрещает дубликаты в столбце
CREATE TABLE users (
    id INT PRIMARY KEY,
    email VARCHAR(100) UNIQUE  -- Email должен быть уникальным
);
Попытка вставить одинаковый email вызовет ошибку
INSERT INTO users (id, email) VALUES (1, 'test@example.com');
INSERT INTO users (id, email) VALUES (2, 'test@example.com');  -- Ошибка!
Создание UNIQUE на нескольких колонках
CREATE TABLE orders (
    user_id INT,
    product_id INT,
    UNIQUE (user_id, product_id)  -- Запрещает заказывать один товар дважды
);
🚩`PRIMARY KEY` (Главный ключ, уникальный идентификатор) Объединяет NOT NULL + UNIQUE и гарантирует, что строка уникальна.
CREATE TABLE users (
    id INT PRIMARY KEY,  -- Уникальный идентификатор
    name VARCHAR(50)
);
Можно создать PRIMARY KEY на нескольких колонках
CREATE TABLE enrollments (
    student_id INT,
    course_id INT,
    PRIMARY KEY (student_id, course_id)  -- Один студент не может записаться дважды на один курс
);
🚩`FOREIGN KEY` (Связь таблиц) Создаёт связь между таблицами и поддерживает ссылочную целостность. Есть таблица пользователей (users) и таблица заказов (orders), где user_id в orders должен ссылаться на id в users.
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

CREATE TABLE orders (
    id INT PRIMARY KEY,
    user_id INT,
    FOREIGN KEY (user_id) REFERENCES users(id)  -- Связь с таблицей users
);
Что делать при удалении пользователя?
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
Ставь 👍 и забирай 📚 Базу знаний

Игра в жанре выживания на Диком Западе! Сражайтесь с бандитами, вступайте в альянсы и ищите приключения! Узнать больше #реклама 16+ yandex.ru О рекламодателе

🤔 Что такое авторизация? Авторизация — это процесс проверки прав доступа. После того как пользователь прошёл аутентификацию (подтвердил, кто он), система проверяет, что ему разрешено делать: какие страницы открывать, какие действия выполнять и т. д. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие есть виды файловых объектов? В Python существует несколько типов файловых объектов, которые используются для работы с различными типами данных. Рассмотрим основные виды файловых объектов и их особенности. 🟠Текстовые файлы (`TextIOWrapper`) Это самый распространённый тип файловых объектов. Такие файлы используются для работы с текстовыми данными и поддерживают строковые операции.
   with open("example.txt", "w", encoding="utf-8") as file:
       file.write("Привет, мир!")  # Записываем текст в файл

   with open("example.txt", "r", encoding="utf-8") as file:
       content = file.read()  # Читаем текст из файла
       print(content)
🟠Бинарные файлы (`BufferedReader`, `BufferedWriter`) Эти файлы используются для работы с двоичными данными (изображениями, видео, аудиофайлами и т. д.).
   with open("image.jpg", "rb") as file:
       binary_data = file.read()  # Читаем файл в бинарном режиме
       print(binary_data[:10])  # Выведем первые 10 байтов

   with open("copy.jpg", "wb") as file:
       file.write(binary_data)  # Записываем данные в новый файл
🟠Файлы ввода-вывода в памяти (`io.StringIO`, `io.BytesIO`) Эти объекты представляют собой файловые буферы, которые хранят данные в оперативной памяти, а не на диске.
   from io import StringIO

   file = StringIO()
   file.write("Привет, мир!")  # Запись данных в буфер
   file.seek(0)  # Перемещаем указатель в начало
   print(file.read())  # Читаем данные из буфера
Пример работы с BytesIO:
   from io import BytesIO

   file = BytesIO()
   file.write(b"Binary data")  # Запись бинарных данных
   file.seek(0)
   print(file.read())  # Чтение данных
🟠Файловые объекты на основе сокетов, пайпов и других источников Python позволяет работать с файловыми объектами, полученными из нестандартных источников, например, сокетов или каналов связи (pipes).
   import socket

   s = socket.socket()
   s.connect(("example.com", 80))
   s.sendall(b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
   response = s.makefile("r", encoding="utf-8")  # Создание файлового объекта
   print(response.readline())  # Читаем первую строку HTTP-ответа
   s.close()
Ставь 👍 и забирай 📚 Базу знаний

🤔 В чём разница между decimal и float? - float — тип с плавающей точкой, быстрый, но подвержен ошибкам округления из-за бинарного представления. Например: 0.1 + 0.2 != 0.3. - decimal.Decimal — тип из модуля decimal, который сохраняет точность десятичных дробей и идеально подходит для финансовых и бухгалтерских расчётов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Можно ли при вызове метода save указать какие поля изменять? Да, в Django ORM можно указать конкретные поля для сохранения, используя параметр update_fields в методе .save(). 🚩Как использовать `update_fields` Пример модели
from django.db import models

class UserProfile(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField()
    age = models.IntegerField()
Обновляем только поле name, не трогая email и age
user = UserProfile.objects.get(id=1)
user.name = "Новый пользователь"
user.save(update_fields=["name"])  # Обновит только поле `name`
🚩Что делает `update_fields`? Генерирует SQL-запрос только для указанных полей, например:
  UPDATE user_profile SET name = 'Новый пользователь' WHERE id = 1;
  
🚩Когда `update_fields` полезен? Уменьшает нагрузку на БД, так как обновляет только нужные поля. Полезен, если нужно изменить одно поле, а не всю запись. Избегает ненужных изменений в auto_now и auto_now_add полях (DateTimeField). 🚩Ограничения `update_fields` Нельзя использовать при создании объекта (save() с update_fields не работает для .create()).
user = UserProfile(name="Alice", email="alice@example.com")
user.save(update_fields=["name"])  # ❌ Ошибка, объект ещё не в базе!
Не обновляет auto_now-поля (DateTimeField) автоматически!
updated_at = models.DateTimeField(auto_now=True)  # Не обновится с `update_fields`
Решение: обновить вручную:
user.updated_at = timezone.now()
user.save(update_fields=["name", "updated_at"])
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как работает пакетирование библиотек? Пакетирование — это процесс подготовки библиотеки к установке и распространению через PyPI. Основные этапы: - Создание структуры пакета: папки с модулями и __init__.py. - Создание pyproject.toml или setup.py с описанием пакета. - Сборка пакета с помощью build: pip install build python -m build - В результате получается .whl и .tar.gz архив, который можно установить или загрузить на PyPI. Пакетирование облегчает повторное использование и установку библиотек в разных проектах. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как работает функция filter()? filter() — это встроенная функция Python, которая отбирает элементы из последовательности по заданному условию.
filter(function, iterable)
🚩Как работает `filter()`? Пример 1: Фильтрация чётных чисел
numbers = [1, 2, 3, 4, 5, 6]

# Оставляем только чётные числа
even_numbers = filter(lambda x: x % 2 == 0, numbers)

print(list(even_numbers))  # [2, 4, 6]
Пример 2: Фильтрация строк по длине
words = ["apple", "kiwi", "banana", "cherry"]

# Оставляем только слова длиной больше 5 символов
long_words = filter(lambda word: len(word) > 5, words)

print(list(long_words))  # ['banana', 'cherry']
Пример 3: Фильтрация None и пустых значений
values = [None, 0, "", "hello", 42, [], {}]

# Оставляем только "истинные" значения
filtered_values = filter(None, values)

print(list(filtered_values))  # ['hello', 42]
Пример 4: Использование filter() с def
def is_positive(n):
    return n > 0

numbers = [-5, -2, 0, 3, 7, -1]
positive_numbers = filter(is_positive, numbers)

print(list(positive_numbers))  # [3, 7]
🚩Чем `filter()` лучше `for` + `if`? Более короткий и читаемый код
# С `filter()`
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))

# С `for` + `if`
even_numbers = [x for x in numbers if x % 2 == 0]
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие знаешь принципы ООП? Основные принципы ООП включают инкапсуляцию, наследование, полиморфизм и абстракцию. Инкапсуляция скрывает внутренние детали реализации и защищает данные, предоставляя доступ через методы. Наследование позволяет создавать новые классы на основе существующих, а полиморфизм позволяет использовать один и тот же интерфейс для объектов разных классов. Абстракция упрощает сложные системы, скрывая ненужные детали и выделяя ключевые характеристики. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Зачем нужны схемы в БД? Схема (schema) в базе данных — это логическая группировка объектов (таблиц, индексов, представлений и т. д.) внутри одной БД. 🚩Что такое схема в БД? Схема — это контейнер для объектов БД (таблиц, индексов, процедур).
База данных (company_db)
 ├── Схема: public (по умолчанию)
 │   ├── Таблица: employees
 │   ├── Таблица: departments
 ├── Схема: hr
 │   ├── Таблица: employees
 │   ├── Таблица: salaries
 ├── Схема: sales
 │   ├── Таблица: customers
 │   ├── Таблица: orders
🚩Как создавать и использовать схемы? Создание схемы (CREATE SCHEMA)
CREATE SCHEMA hr;  -- Создаём схему "hr"
Создание таблицы внутри схемы
CREATE TABLE hr.employees (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    position VARCHAR(50)
);
Выбор схемы по умолчанию
SET search_path TO hr;
🚩Где полезны схемы? 🟠Разделение данных по модулям Если в БД хранятся разные области бизнеса (кадры, продажи, финансы), их можно разделить по схемам: - hr.employees, hr.salaries - sales.orders, sales.customers 🟠Разные версии одной БД Например, в PostgreSQL можно создать схему dev для тестов: - dev.users — тестовая версия таблицы - prod.users — продакшен-версия 🟠Безопасность и доступ пользователей Можно дать доступ к разным схемам разным пользователям:
GRANT USAGE ON SCHEMA hr TO hr_manager;
GRANT SELECT ON ALL TABLES IN SCHEMA hr TO hr_manager;
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое Docker Compose? Это инструмент для управления многоконтейнерными приложениями. 1. Позволяет определять и запускать сервисы, их зависимости и конфигурации в одном YAML-файле (docker-compose.yml). 2. Упрощает оркестрацию контейнеров, обеспечивая лёгкий запуск, остановку и масштабирование. 3. Используется для разработки, тестирования и развёртывания сложных приложений. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое dict comprehensions? dict comprehension (генератор словаря) — это способ быстро создать словарь с помощью компактного синтаксиса, похожего на list comprehension. 🚩Простейший пример `dict comprehension`
squares = {x: x**2 for x in range(1, 6)}
print(squares)
Вывод
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
🚩`dict comprehension` с условием (`if`) Оставляем только чётные числа:
squares = {x: x**2 for x in range(1, 11) if x % 2 == 0}
print(squares)
Вывод
{2: 4, 4: 16, 6: 36, 8: 64, 10: 100}
🚩Преобразование списка в словарь Создаём словарь из списка пар (name → длина слова)
names = ["Alice", "Bob", "Charlie"]
name_lengths = {name: len(name) for name in names}
print(name_lengths)
Вывод
{'Alice': 5, 'Bob': 3, 'Charlie': 7}
🚩Обратный словарь (ключи и значения меняются местами) Инвертируем словарь {ключ: значение} → {значение: ключ}
original = {"a": 1, "b": 2, "c": 3}
inverted = {v: k for k, v in original.items()}
print(inverted)
Вывод
{1: 'a', 2: 'b', 3: 'c'}
🚩Генерация словаря из `zip()` Объединяем два списка в словарь
keys = ["name", "age", "city"]
values = ["Alice", 25, "New York"]

person = {k: v for k, v in zip(keys, values)}
print(person)
Вывод
{'name': 'Alice', 'age': 25, 'city': 'New York'}
🚩`dict comprehension` с `if-else` Разделяем числа на чётные и нечётные
numbers = range(1, 6)
parity = {x: "чётное" if x % 2 == 0 else "нечётное" for x in numbers}
print(parity)
Вывод
{1: 'нечётное', 2: 'чётное', 3: 'нечётное', 4: 'чётное', 5: 'нечётное'}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как понять хешируемый ли объект? Объект хешируем, если он реализует метод hash и его хеш не меняется в течение жизни объекта. Также он должен быть сравним (eq), иначе может нарушиться логика хеш-таблиц. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое класс baseview? BaseView — это базовый класс представления (view) в Django, который предоставляет основу для создания представлений без жёсткой привязки к HTTP-методам (GET, POST и др.). Он является родительским классом для всех классов-представлений (CBV, Class-Based Views) в Django. 🚩Зачем нужен `BaseView`? Обеспечивает общую структуру для классов-представлений. Разделяет логику обработки запроса и рендеринг. Позволяет переопределять логику обработки запросов через dispatch(). Является родительским классом для View, TemplateView, ListView и других CBV. 🚩Как работает `BaseView`? Этот класс сам по себе не обрабатывает запросы. Он лишь задаёт каркас для представлений.
from django.views import View

class BaseView:
    def dispatch(self, request, *args, **kwargs):
        """Определяет, какой метод (GET, POST и т. д.) вызывать"""
        handler = getattr(self, request.method.lower(), self.http_method_not_allowed)
        return handler(request, *args, **kwargs)

    def http_method_not_allowed(self, request, *args, **kwargs):
        """Обработчик для неподдерживаемых HTTP-методов"""
        return HttpResponseNotAllowed(self._allowed_methods())
🚩Использование `BaseView` Обычно мы используем View, который наследуется от BaseView.
from django.http import HttpResponse
from django.views import View

class MyView(View):
    def get(self, request):
        return HttpResponse("Это GET-запрос")

    def post(self, request):
        return HttpResponse("Это POST-запрос")
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие есть особенности работы с репликацией? - Возможна задержка синхронизации (особенно при async-репликации); - Конфликты данных при multi-master; - Реплика может быть только для чтения; - Реплики могут использоваться для балансировки нагрузки на чтение. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🔍Тестовое собеседование на Middle Python с разработчиком из Авито завтра вечером Уже завтра вечером в 19:00 по мск приходи о
🔍Тестовое собеседование на Middle Python с разработчиком из Авито завтра вечером Уже завтра вечером в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика. Как это будет: 📂 Даня, старший разработчик в Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Даня будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Дане Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot Реклама. О рекламодателе.

🤔 Что такое паттерн Мост (Bridge)? Паттерн "Мост" (Bridge) является структурным паттерном проектирования, который предназначен для разделения абстракции и реализации так, чтобы они могли изменяться независимо друг от друга. Этот паттерн полезен, когда класс должен работать с различными платформами или когда нужно избежать жесткой связки между абстракцией и ее реализацией. 🚩 Зачем нужен 🟠Разделение абстракции и реализации: Он позволяет отделить абстракцию от ее реализации, что упрощает поддержку и расширение системы. 🟠Уменьшение количества подклассов: Без применения этого паттерна, если у нас есть несколько вариантов абстракции и несколько вариантов реализации, то нам пришлось бы создавать классы для всех возможных комбинаций, что приводит к взрывному росту количества классов. 🟠Гибкость: Это позволяет изменять и абстракцию, и реализацию независимо друг от друга. 🚩Как используется 🟠Абстракция (Abstraction): Определяет интерфейс и хранит ссылку на объект Implementor. 🟠Расширенная абстракция (RefinedAbstraction): Наследует Abstraction и расширяет интерфейс. 🟠Реализатор (Implementor): Определяет интерфейс для всех реализаций. 🟠Конкретный реализатор (ConcreteImplementor): Реализует интерфейс Implementor. Допустим, у нас есть программа для управления различными типами устройств (например, телевизор и радио), которые можно включать и выключать. Мы хотим, чтобы способ управления устройствами мог изменяться независимо от типов устройств.
# Implementor
class Device:
    def is_enabled(self):
        pass

    def enable(self):
        pass

    def disable(self):
        pass

# ConcreteImplementor
class TV(Device):
    def __init__(self):
        self._on = False

    def is_enabled(self):
        return self._on

    def enable(self):
        self._on = True

    def disable(self):
        self._on = False

class Radio(Device):
    def __init__(self):
        self._on = False

    def is_enabled(self):
        return self._on

    def enable(self):
        self._on = True

    def disable(self):
        self._on = False

# Abstraction
class RemoteControl:
    def __init__(self, device):
        self._device = device

    def toggle_power(self):
        if self._device.is_enabled():
            self._device.disable()
        else:
            self._device.enable()

# RefinedAbstraction
class AdvancedRemoteControl(RemoteControl):
    def mute(self):
        print("Device is muted.")

# Клиентский код
tv = TV()
remote = RemoteControl(tv)
remote.toggle_power()  # Включает TV

radio = Radio()
advanced_remote = AdvancedRemoteControl(radio)
advanced_remote.toggle_power()  # Включает Radio
advanced_remote.mute()  # Заглушает Radio
Ставь 👍 и забирай 📚 Базу знаний

🤔 Модификаторы доступа? В Python нет строгой приватности, но используются соглашения: – _имя — защищённое, – __имя — приватное (name mangling), – без подчёркивания — публичное. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний