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

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

الذهاب إلى القناة على Telegram

📈 نظرة تحليلية على قناة تيليجرام Python | Вопросы собесов

تُعد قناة Python | Вопросы собесов (@python_easy_ru) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 13 108 مشتركاً، محتلاً المرتبة 9 742 في فئة التكنولوجيات والتطبيقات والمرتبة 50 784 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 13 108 مشتركاً.

بحسب آخر البيانات بتاريخ 06 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -52، وفي آخر 24 ساعة بمقدار -3، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 6.21‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 6.01‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 814 مشاهدة. وخلال اليوم الأول يجمع عادةً 788 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 4.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل ставь, модуль, строка, docker, alice.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
Cайт: easyoffer.ru Реклама: @easyoffer_adv ВП: @easyoffer_vp Тесты t.me/+20tRfhrwPpM4NDQy Задачи t.me/+nsl4meWmhfQwNDVi Вакансии t.me/+cXGKkrOY2-w3ZTky

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 08 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

13 108
المشتركون
-324 ساعات
-147 أيام
-5230 أيام
أرشيف المشاركات
Срочно требуются Веб-Дизайнеры в Figma. Обучим с нуля. Онлайн-программа с наставником и чатом. Осторожно! 80% практики. По результату обучения у вас будет портфолио из нескольких работ. Сертификат о прохождении курса. Возможность пройти полное обучение и получить карьерное сопровождение! Учитесь дизайну у профессионалов. Переходи по кнопки: "Узнать больше" и начинай свое обучение. Доступ 0 руб. Узнать больше #реклама 16+ yudaevschool24.online О рекламодателе

🤔 Что такое паттерн Мост (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
Ставь 👍 и забирай 📚 Базу знаний

Получи грант до 1,2 млн руб. на обучение в магистратуре 4 офлайн программы, онлайн-магистратура по ML. Гранты до 1,2 млн руб.
Получи грант до 1,2 млн руб. на обучение в магистратуре 4 офлайн программы, онлайн-магистратура по ML. Гранты до 1,2 млн руб. Стажировки, диплом гос. образца и фокус на твоей карьере в ЦУ Подать заявку #реклама 16+ apply.centraluniversity.ru О рекламодателе

🤔 Можно ли использовать несколько декораторов для одной функции? Да, декораторы можно накладывать друг на друга. Они применяются сверху вниз, но выполняются в обратном порядке. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Регистрируйтесь на Yandex Ecom Open Air 8 августа Море инсайтов для бизнеса, музыкальный open-air, лекции и нетворкинг. Участие бесплатно! Зарегистрироваться #реклама 18+ ecomfest.ru О рекламодателе

🤔 Как управлять кешированием в HTTP? Кэширование в HTTP позволяет уменьшить нагрузку на сервер и ускорить загрузку страниц за счёт сохранения копий ресурсов. Управление кэшем происходит через HTTP-заголовки, которые указывают, как долго хранить данные и когда обновлять их. 🟠Управление кэшированием через `Cache-Control` Cache-Control — основной заголовок для кэширования, который указывает, как долго хранить ресурс и когда обновлять его.
Cache-Control: no-cache            # Браузер всегда запрашивает ресурс заново
Cache-Control: no-store            # Запрещает кэширование вообще
Cache-Control: public, max-age=3600  # Кэшировать 1 час (3600 секунд)
Cache-Control: private, max-age=600  # Кэш только для одного пользователя (например, личный кабинет)
Cache-Control: must-revalidate     # Клиент должен проверять, истёк ли срок кэша перед загрузкой
🟠Управление кэшем с `ETag` (оптимизированное обновление) ETag — это уникальный идентификатор версии файла. Сервер отправляет ресурс с ETag:
ETag: "abc123"
При следующем запросе браузер отправляет If-None-Match:
If-None-Match: "abc123"
Если ресурс не изменился, сервер отвечает 304 Not Modified (клиент использует кэш). Если ресурс изменился — сервер отправляет новую версию.
HTTP/1.1 304 Not Modified
🟠Кэширование через `Last-Modified` Работает аналогично ETag, но вместо идентификатора используется дата последнего изменения. Сервер отправляет заголовок
Last-Modified: Wed, 21 Feb 2024 10:00:00 GMT
Браузер запрашивает ресурс с If-Modified-Since
If-Modified-Since: Wed, 21 Feb 2024 10:00:00 GMT
🟠Полное отключение кэша Если нужно всегда загружать свежие данные, используем:
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache  # Устарел, но нужен для старых браузеров
Expires: 0
🟠Управление кэшем через `Vary` Если ресурс зависит от заголовков (User-Agent, Accept-Encoding), используем Vary.
Vary: User-Agent
🟠Принудительное обновление кэша (Cache Busting) Если сервер отправил старый кэш, можно обновить ресурс с новым URL. Способы Добавить версию в URL
/style.css?v=2
Использовать хеш в имени файла:
/style.abc123.css
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Как можно оптимизировать хвостовую рекурсию в Python? Хвостовая рекурсия (tail recursion) — это особый вид рекурсии, когда рекурсивный вызов является последней операцией в функции. В языках, поддерживающих оптимизацию хвостовой рекурсии (TCO – Tail Call Optimization), такие вызовы не создают новый стек вызовов, а переиспользуют текущий, что предотвращает переполнение стека. Но в Python хвостовая рекурсия НЕ оптимизируется из-за особенностей интерпретатора (Python хранит полную историю вызовов для отладки). 🚩Способы оптимизации хвостовой рекурсии в Python 🟠Использование явного стека вместо рекурсии (итерация) Лучший способ избежать проблем с глубокой рекурсией — заменить её циклом.
def factorial(n, acc=1):
    if n == 0:
        return acc
    return factorial(n - 1, acc * n)  # Хвостовая рекурсия (но Python не оптимизирует!)
Решение: заменить на цикл (итеративный подход)
def factorial_iter(n):
    acc = 1
    while n > 0:
        acc *= n
        n -= 1
    return acc

print(factorial_iter(10000))  # Работает без ошибок
🟠Использование `sys.setrecursionlimit()` (не рекомендуется) Python имеет ограничение на глубину рекурсии (обычно около 1000). Можно его увеличить
import sys
sys.setrecursionlimit(20000)  # Увеличение лимита
🟠Использование `functools.lru_cache()` (мемоизация) Если рекурсивная функция пересчитывает одни и те же значения, можно кешировать результаты.
from functools import lru_cache

@lru_cache(None)  # Кеширует все вызовы функции
def fibonacci(n):
    if n < 2:
        return n
    return fibonacci(n - 1) + fibonacci(n - 2)

print(fibonacci(100))  # Работает быстро, без переполнения стека
🟠Использование `stack` вместо рекурсии (эмуляция стека) Если алгоритм требует рекурсии, но стек ограничен, можно использовать список как стек.
def factorial_stack(n):
    stack = [(n, 1)]
    while stack:
        n, acc = stack.pop()
        if n == 0:
            return acc
        stack.append((n - 1, acc * n))

print(factorial_stack(10000))  # Работает без ошибок
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как происходит поиск переменной по области видимости? Python ищет переменные по правилу LEGB: - Local — локальная область внутри функции. - Enclosing — области вложенных функций (для замыканий). - Global — глобальная область модуля. - Built-in — встроенные объекты Python. Поиск идёт сверху вниз, и как только переменная найдена — поиск останавливается. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое хешируемые типы данных? Это такие типы данных, которые имеют постоянное (неизменяемое) хеш-значение на протяжении всего времени их существования. Это означает, что их можно использовать в качестве ключей в словарях (dict) и элементов в множествах (set), так как они поддерживают вычисление хеша с помощью функции hash(). 🚩Как понять, что объект хешируемый? 🟠Объект должен быть неизменяемым если объект можно изменить после создания, его хеш тоже изменится, что нарушает работу структур данных (словари, множества). 🟠Должен реализовывать метод `__hash__()` который возвращает уникальный идентификатор объекта. 🚩Какие типы данных хешируемые? Числа (int, float, complex)
  print(hash(42))       # 42
  print(hash(3.14))     # 322818021289917443
  print(hash(1 + 2j))   # 8389048192121911274
Строки (str)
print(hash("hello"))  # Например, 5320385861927423548
Кортежи (tuple), если все их элементы тоже хешируемые:
print(hash((1, 2, 3)))  # 529344067295497451
Булевы значения (bool):
  print(hash(True))   # 1
  print(hash(False))  # 0
🚩Какие типы НЕ хешируемые? Списки (list)
hash([1, 2, 3])  # TypeError: unhashable type: 'list'
Множества (set)
hash({1, 2, 3})  # TypeError: unhashable type: 'set'
Словари (dict)
hash({"a": 1})  # TypeError: unhashable type: 'dict'
🚩Почему это важно? Хешируемые типы используются в словари (dict) и множества (set), так как они используют хеш-функцию для быстрого поиска данных.
my_dict = { (1, 2, 3): "tuple_key" }  # Работает, потому что кортеж неизменяемый
my_set = { 42, "hello", (1, 2) }      # Все элементы хешируемые
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что известно о парадигмах? 1. Императивная парадигма: использование команд для изменения состояния программы. 2. Объектно-ориентированная: работа с классами и объектами. 3. Функциональная: поддержка высших функций, замыканий и итераторов. 4. Процедурная: выполнение программ как последовательности процедур. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какая сложность сортировки слияния в худшем случае? Сортировка слиянием (Merge Sort) — это алгоритм, который использует разделяй и властвуй (divide & conquer). В худшем случае сложность O(n log n). 🚩Как работает сортировка слиянием? 🟠Делим массив пополам до тех пор, пока не останутся отдельные элементы. 🟠Сортируем и сливаем полученные подмассивы.
def merge_sort(arr):
    if len(arr) <= 1:
        return arr

    mid = len(arr) // 2
    left = merge_sort(arr[:mid])
    right = merge_sort(arr[mid:])

    return merge(left, right)

def merge(left, right):
    sorted_arr = []
    i = j = 0

    while i < len(left) and j < len(right):
        if left[i] < right[j]:
            sorted_arr.append(left[i])
            i += 1
        else:
            sorted_arr.append(right[j])
            j += 1

    sorted_arr.extend(left[i:])
    sorted_arr.extend(right[j:])
    return sorted_arr

arr = [5, 2, 9, 1, 5, 6]
print(merge_sort(arr))
Ставь 👍 и забирай 📚 Базу знаний

Вакансии для разработчиков в финтех-сервисе PyyplBot Ищем единомышленников, готовых вместе с нами менять рынок финансовых услуг! Узнать больше #реклама pyyplbot.com О рекламодателе

🤔 Что такое динамическая типизация? Динамическая типизация означает, что тип переменной определяется автоматически в момент её инициализации. Это упрощает код, но может привести к ошибкам в случае некорректного использования типов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Айтишники, это вам — в телеграм есть комьюнити по каждому направлению в IT Там есть буквально всё: чаты для общения, тонны ма
Айтишники, это вам — в телеграм есть комьюнити по каждому направлению в IT Там есть буквально всё: чаты для общения, тонны материала(книги, курсы, ресурсы и гайды), свежие новости и конечно же мемы Выбирайте своё направление: 💩 Frontend 🐍 Python 🐧 Linux 👩‍💻 С/С++ 👩‍💻 C# 🤔 Хакинг & ИБ 📱 GitHub 🖥 SQL 👩‍💻 Сисадмин 🤟 DevOps ⚙️ Backend 🖥 Data Science 🧑‍💻 Java 🐞 Тестирование 🖥 PM / PdM 👩‍💻 GameDev 🧑‍💻 Golang 👣 Rust 🧑‍💻 PHP 💻 WebDev 🖥 Моб. Dev 🖥Анали.(SA&BA) 👩‍💻 Дизайн 🖥 Нейросети 💛 1C 🤓 Книги IT ➡️ Сохраняйте в закладки

🤔 Что такое 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) — это всегда локальный компьютер. Ставь 👍 и забирай 📚 Базу знаний

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

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

🤔 Что такое блокировки (локи) в БД? Блокировка (lock) — это механизм, который предотвращает одновременный доступ к данным разными транзакциями, чтобы избежать конфликтов, повреждения данных или "гонки" процессов. Представь, что два человека редактируют один и тот же документ. Если они начнут менять его одновременно, файл может испортиться. Блокировки в БД работают так же — если один процесс изменяет данные, другой должен подождать, пока первый закончит. 🚩Почему нужны блокировки? 🟠Гарантия целостности данных предотвращает одновременные изменения одних и тех же строк. 🟠Избегание гонки данных (race condition) когда два запроса пытаются изменить одно и то же значение. 🟠Изоляция транзакций разные операции не мешают друг другу. 🚩Виды блокировок в БД 🟠По уровню охвата данных Строчная (Row Lock) – блокирует только одну строку таблицы. Табличная (Table Lock) – блокирует всю таблицу целиком. Блокировка всей базы (Database Lock) – редко используется, но блокирует всю БД.
BEGIN;
SELECT * FROM users WHERE id = 1 FOR UPDATE; -- Блокирует строку, пока транзакция не завершится
🟠По типу блокировки Эксклюзивная (Exclusive, X-Lock) – блокирует запись для всех (никакие другие операции её не изменят). Разделяемая (Shared, S-Lock) – блокирует только на запись (чтение возможно).
BEGIN;
UPDATE users SET balance = balance - 100 WHERE id = 1;
-- Пока транзакция не завершится, другая транзакция не сможет изменить balance пользователя 1.
🟠Явные и неявные блокировки Явные (ручные) – задаются программистом (SELECT ... FOR UPDATE). Неявные (автоматические) – создаются СУБД при INSERT, UPDATE, DELETE. 🚩Проблемы с блокировками 🟠Deadlock (взаимная блокировка) Если два запроса ждут друг друга, система "зависает". Решение: правильный порядок выполнения транзакций. 🟠Долгие блокировки Если транзакция не закрывается (COMMIT/ROLLBACK), другие запросы ждут бесконечно. Решение: короткие транзакции, автоматическое завершение. 🟠Снижение производительности Чем больше блокировок, тем медленнее работа БД. Ставь 👍 и забирай 📚 Базу знаний

🤔 Различия между REST и RPC? - REST — архитектурный стиль. Использует HTTP-методы (GET, POST, PUT, DELETE), ресурсы представлены как URL (например, /users/1). - RPC (Remote Procedure Call) — модель, в которой клиент вызывает конкретную функцию или метод на сервере, как будто она локальная (getUserData, saveOrder). REST работает с ресурсами, RPC — с действиями. REST проще кэшировать, а RPC может быть более гибким в функциональности. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний