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

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

Открыть в Telegram

📈 Аналитический обзор Telegram-канала Python | Вопросы собесов

Канал Python | Вопросы собесов (@python_easy_ru) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 13 110 подписчиков, занимая 9 732 место в категории Технологии и приложения и 50 668 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 13 110 подписчиков.

Согласно последним данным от 05 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -48, а за последние 24 часа — -5, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 6.21%. В первые 24 часа после публикации контент обычно набирает 6.02% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 814 просмотров. В течение первых суток публикация набирает 789 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 4.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как ставь, модуль, строка, docker, alice.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
Cайт: easyoffer.ru Реклама: @easyoffer_adv ВП: @easyoffer_vp Тесты t.me/+20tRfhrwPpM4NDQy Задачи t.me/+nsl4meWmhfQwNDVi Вакансии t.me/+cXGKkrOY2-w3ZTky

Благодаря высокой частоте обновлений (последние данные получены 07 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

13 110
Подписчики
-524 часа
-147 дней
-4830 день
Архив постов
🤔 Как в Python происходит поиск переменной по области видимости? В Python поиск переменной происходит по правилу LEGB, которое определяет порядок поиска в четырёх областях видимости: Пример работы LEGB
x = "глобальная"  # Global

def outer():
    x = "охватывающая"  # Enclosing
    def inner():
        x = "локальная"  # Local
        print(x)  # Поиск начинается отсюда (L)
    
    inner()

outer()
Вывод
локальная
🚩Глобальные переменные (`global`) Если нужно изменить глобальную переменную внутри функции, используем global
x = 10  # Глобальная переменная

def modify_global():
    global x
    x = 20  # Меняем глобальную переменную

modify_global()
print(x)  # 20
🚩Переменные из внешней функции (`nonlocal`) Если в вложенной функции нужно изменить переменную из enclosing-области, используем nonlocal
def outer():
    x = 10  # Переменная из enclosing-области
    
    def inner():
        nonlocal x
        x = 20  # Меняем `x` в `outer()`
    
    inner()
    print(x)  # 20

outer()
🚩Что если переменная отсутствует во всех областях? Если переменная не найдена в LEGB, Python выдаст NameError
def func():
    print(y)  # Ошибка: y не объявлена!

func()  
Ошибка
NameError: name 'y' is not defined
🚩`Built-in` — встроенные функции Python в последнюю очереде проверяет встроенные функции (print(), len(), sum() и т. д.).
print = "Ошибка!"  # Переопределили встроенную функцию
print("Hello")  # TypeError: 'str' object is not callable
Ставь 👍 и забирай 📚 Базу знаний

🚀 Хочешь освоить Python с нуля — и наконец начать писать код? У Академии программирования электронных устройств стартует кур
🚀 Хочешь освоить Python с нуля — и наконец начать писать код? У Академии программирования электронных устройств стартует курс «Программирование на Python» — базовый уровень, идеально для тех, кто только начинает путь в IT. Самая низкая цена на курсы по python! 💡 Что ждёт тебя: • пошаговое обучение с практикой и понятными объяснениями; • полное погружение: установка, первая программа, типы данных, коллекции, функции, ООП, работа с файлами и модулями. • индивидуальные (один на один!) онлайн-консультации с преподавателем-практиком с богатым опытом разработки и применения Python в реальных проектах; • групповые консультации с разбором вопросов от учеников; • проверка домашних заданий и разбор ошибок; • доступ к базе знаний на 12 месяцев и закрытому клубу выпускников: общайся, задавай вопросы, расти дальше. ❗️Возможность использовать промокод за проверку знаний — получай скидку до 30% при оформлении. Чтобы получить скидку, нажимай ссылку "ПОЛУЧИТЬ ПРОМОКОД" на сайте! 📅 Начало: 10 ноября 2025 г. — осталось ограниченное число мест. Преподаватель с опытом работы более 17 лет в IT Выполнял проекты различной сложности. Вырос до руководителя отдела, руководителя проектов. Занимается продвижением различных веб проектов и созданию ИИ агентов и ботов. Использует языки программирования Python, JS, PHP, а так же SQL, CSS, HTML. Подробнее о курсе и запись: по ссылке Не откладывай — начни программировать уже в этом месяце!

🤔 Какие JOIN методы есть? - Nested Loop Join — переборка строк (для малых таблиц); - Merge Join — эффективен при сортированных данных; - Hash Join — создание хеш-таблицы для одного источника и поиск по ней; - Cross Join — декартово произведение. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чем отличие @foobar от @foobar()? В Python @ используется для декораторов, и разница между @foobar и @foobar() заключается в том, вызывается ли сам декоратор с параметрами или без. 🟠`@foobar` — декоратор без вызова Если мы пишем @foobar, то используется сам декоратор как есть, без передачи аргументов.
def foobar(func):
    def wrapper():
        print("Декоратор вызван!")
        return func()
    return wrapper

@foobar  # Просто передаём функцию в декоратор
def hello():
    print("Hello, world!")

hello()
Вывод
Декоратор вызван!
Hello, world!
🟠`@foobar()` — декоратор с вызовом (и параметрами) Если декоратор принимает параметры, то он сначала вызывается (foobar()), а потом возвращает сам декоратор.
def foobar(arg):
    def decorator(func):
        def wrapper():
            print(f"Декоратор вызван с аргументом: {arg}")
            return func()
        return wrapper
    return decorator

@foobar("Привет")  # Вызываем foobar("Привет"), который вернёт реальный декоратор
def hello():
    print("Hello, world!")

hello()
Вывод
Декоратор вызван с аргументом: Привет
Hello, world!
Ставь 👍 и забирай 📚 Базу знаний

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

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

Начни карьеру в кибербезопасности Ищешь перспективную профессию, в которую не нужно пробиваться годами? Кибербезопасность — востребованная сфера с острой нехваткой специалистов: 👌 Более 50 000 открытых вакансий. 👌 Стартовая зарплата - 70 000 рублей. 👌 Низкая конкуренция. 👌 Можно обучиться за полгода. С чего начать и как построить карьеру, расскажут эксперты «Солара» на вебинаре 14 ноября. Какие профессии доступны новичкам без опыта и как быстро их освоить. Как найти свою первую работу. Какие ошибки допускают новички в начале пути. Всем участникам дадим пошаговый план по саморазвитию и быстрому старту в кибербезопасность. Зарегистрироваться #реклама 16+ rt-solar.ru О рекламодателе

🤔 Как в питоне реализуется многопоточность. Какими модулями? Многопоточность в Python реализуется с помощью модуля threading, но из-за GIL (Global Interpreter Lock) потоки не могут выполняться параллельно на нескольких ядрах. 🟠Модуль `threading` (многопоточность, но с GIL) Модуль threading позволяет запускать несколько потоков (threads) в одном процессе.
import threading
import time

def task(name):
    print(f"{name} начал работу")
    time.sleep(2)  # Имитация задержки
    print(f"{name} завершил работу")

# Создаём два потока
t1 = threading.Thread(target=task, args=("Поток 1",))
t2 = threading.Thread(target=task, args=("Поток 2",))

t1.start()
t2.start()

t1.join()
t2.join()
print("Все потоки завершены")
Вывод
Поток 1 начал работу
Поток 2 начал работу
(пауза 2 секунды)
Поток 1 завершил работу
Поток 2 завершил работу
Все потоки завершены
🟠Модуль `multiprocessing` (настоящая параллельность) В отличие от threading, модуль multiprocessing создаёт отдельные процессы, которые могут выполняться на разных ядрах процессора.
import multiprocessing
import time

def task(name):
    print(f"{name} начал работу")
    time.sleep(2)
    print(f"{name} завершил работу")

if __name__ == "__main__":
    p1 = multiprocessing.Process(target=task, args=("Процесс 1",))
    p2 = multiprocessing.Process(target=task, args=("Процесс 2",))

    p1.start()
    p2.start()

    p1.join()
    p2.join()
    print("Все процессы завершены")
🟠Модуль `concurrent.futures` (более удобный API) Этот модуль позволяет легко управлять потоками (ThreadPoolExecutor) и процессами (ProcessPoolExecutor).
from concurrent.futures import ThreadPoolExecutor
import time

def task(n):
    time.sleep(2)
    return f"Готово: {n}"

with ThreadPoolExecutor(max_workers=2) as executor:
    results = executor.map(task, [1, 2, 3])
    
for result in results:
    print(result)
Пример ProcessPoolExecutor (процессы)
from concurrent.futures import ProcessPoolExecutor

def square(n):
    return n * n

with ProcessPoolExecutor() as executor:
    results = executor.map(square, [1, 2, 3, 4])

print(list(results))  # [1, 4, 9, 16]
🟠Модуль `asyncio` (асинхронность, не потоки!) Модуль asyncio не создаёт потоки или процессы, а работает через "корутины" и цикл событий (event loop).
import asyncio

async def task():
    print("Начало")
    await asyncio.sleep(2)  # Не блокирует другие задачи
    print("Конец")

async def main():
    await asyncio.gather(task(), task())

asyncio.run(main())
Ставь 👍 и забирай 📚 Базу знаний

Бесплатный курс по дизайну: веб, графический и UX/UI Научись создавать дизайн сайтов и приложений, инфографику для карточек н
Бесплатный курс по дизайну: веб, графический и UX/UI Научись создавать дизайн сайтов и приложений, инфографику для карточек на маркетплейсах и работать в Figma! Студенты курса в среднем зарабатывают от 68 000 ₽ уже во время обучения💰 Этот курс для тебя, если ты: ✅ мечтаешь о новой профессии в digital, но не знаешь, с чего начать; ✅ чувствуешь, что хочешь большего — свободы, самореализации, творчества; ✅ полный новичок и хочешь систему, а не хаос; ✅ хочешь начать зарабатывать удалённо. Зарегистрироваться #реклама 16+ ydaev.ru О рекламодателе

🤔 Разница URI и URL? - URI — это общее понятие: любой способ идентификации ресурса. - URL — это конкретный тип URI, указывающий, где найти ресурс и как его получить. То есть все URL — это URI, но не все URI — это URL. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как работает хеш мап? Хеш-таблица (HashMap) — это структура данных, которая позволяет быстро хранить и искать пары ключ → значение. В Python её аналогом является dict. 🚩Основная идея Ключ проходит через хеш-функцию → превращается в число (индекс). Значение сохраняется в массиве по этому индексу. При поиске: ключ снова хешируется, и мы мгновенно находим нужное значение. 🚩Как это работает в Python? Создание хеш-таблицы (dict)
hash_map = {}  # Пустой словарь
hash_map["apple"] = 10  # Добавляем элемент
hash_map["banana"] = 20

print(hash_map["apple"])  # 10
🟠Хеширование ключа Ключи сначала хешируются с помощью встроенной функции hash().
print(hash("apple"))  # Например: 2837462816
print(hash("banana"))  # Другое число
🟠Разрешение коллизий Иногда разные ключи могут давать одинаковый хеш. Это называется коллизией. Python использует метод цепочек (Chaining): Если у двух ключей один хеш, они хранятся в виде списка в одной ячейке.
hash_map = { "key1": 100, "key2": 200 }
print(hash("key1") % 10)  # Допустим, 4
print(hash("key2") % 10)  # Тоже 4 (коллизия!)

# Python хранит их в одной ячейке как список [(key1, 100), (key2, 200)]
🟠Динамическое расширение При заполнении хеш-таблицы, если она становится слишком загруженной, Python автоматически увеличивает её размер, чтобы избежать замедления.
d = {}  # Создаём пустой dict
for i in range(1000):
    d[i] = i

print(len(d))  # 1000, Python сам расширил таблицу
🟠Удаление элементов Удаление также выполняется за O(1)
del hash_map["apple"]  # Мгновенно удаляем
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что происходит в момент итерации по списку? При итерации по списку в Python, интерпретатор последовательно обращается к каждому элементу списка. Это может быть реализовано с помощью цикла `for`, который автоматически вызывает метод `__iter__` списка для получения итератора, а затем последовательно вызывает `__next__` для доступа к каждому элементу. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое SDLC? Это методология управления процессом создания программного обеспечения, которая включает в себя последовательность этапов и действий, необходимых для разработки, тестирования, развертывания и поддержки программных продуктов. Цель SDLC — обеспечить структурированный и эффективный подход к разработке ПО, минимизируя риски и повышая качество конечного продукта. 🚩Основные этапы SDLC 🟠Планирование и анализ требований (Planning and Requirements Analysis) На этом этапе определяются цели проекта, анализируются потребности и требования к системе. Включает сбор требований от заинтересованных сторон, анализ бизнес-процессов и создание документации с описанием требований. Встречи с клиентами и пользователями для определения функций системы. Документирование функциональных и нефункциональных требований. 🟠Проектирование (Design) На этапе проектирования разрабатывается архитектура системы и ее компоненты. Создаются технические спецификации, включая схемы базы данных, диаграммы классов и интерфейсов, а также детализируется план реализации.Разработка диаграмм UML.Создание прототипов пользовательского интерфейса.Проектирование архитектуры системы. 🟠Разработка (Implementation or Coding) На этом этапе осуществляется непосредственная разработка программного обеспечения на основе спецификаций, созданных на предыдущем этапе. Кодирование выполняется в соответствии с выбранными языками программирования и инструментами разработки. Написание кода для модулей и компонентов системы. Интеграция различных компонентов системы. Регулярное использование систем контроля версий (например, Git). 🟠Тестирование (Testing) Этап тестирования включает проверку и валидацию системы для обнаружения и исправления ошибок. Тестирование проводится в различных формах, включая юнит-тестирование, интеграционное тестирование, системное тестирование и приемочное тестирование. Автоматизированное тестирование с использованием фреймворков, таких как pytest или JUnit. Ручное тестирование функциональности и пользовательского интерфейса. Тестирование производительности и безопасности. 🟠Развертывание (Deployment) На этом этапе программное обеспечение разворачивается в рабочей среде и становится доступным пользователям. Включает настройку серверов, развертывание баз данных и настройку инфраструктуры. Развертывание на облачных платформах, таких как AWS или Azure. Настройка и конфигурация серверов и сетей. Миграция данных и начальная загрузка данных. 🟠Поддержка и сопровождение (Maintenance) Этап поддержки и сопровождения включает в себя обслуживание и улучшение системы после ее развертывания. Включает исправление ошибок, обновление функциональности и оптимизацию производительности. Обновление системы безопасности. Внесение изменений на основе отзывов пользователей. Обслуживание серверов и баз данных. Ставь 👍 и забирай 📚 Базу знаний

Курс "Дизайн карточек для WB и Ozon". Бесплатно и с нуля Дизайнер карточек для маркетплейсов — востребованная и доходная проф
Курс "Дизайн карточек для WB и Ozon". Бесплатно и с нуля Дизайнер карточек для маркетплейсов — востребованная и доходная профессия 💰 Научись ей бесплатно! - Бесплатный доступ - Разбор ДЗ от наставника - Мощные кейсы в портфолио Узнать больше #реклама 16+ yudaevschool24.online О рекламодателе

🤔 Что такое и чем отличается old-style от new-style classes? Old-style классы были в Python 2 и не наследовали object. В Python 3 все классы автоматически new-style и обладают расширенными возможностями. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое паттерн Стратегия (Strategy) ? Это поведенческий паттерн проектирования, который определяет семейство алгоритмов, инкапсулирует каждый из них и делает их взаимозаменяемыми. Паттерн "Стратегия" позволяет изменять алгоритмы независимо от клиентов, которые их используют. 🚩Зачем нужен данный паттерн? 🟠Изоляция алгоритмов Позволяет инкапсулировать различные алгоритмы и использовать их независимо. 🟠Упрощение кода Устраняет дублирование кода и упрощает классы, которые используют эти алгоритмы. 🟠Гибкость и расширяемость Легко добавлять новые алгоритмы или изменять существующие без изменения клиентского кода. 🚩Как работает данный паттерн? 🟠Стратегия (Strategy) Интерфейс, определяющий общий метод, который должны реализовать все алгоритмы. 🟠Конкретные стратегии (ConcreteStrategy) Реализации различных алгоритмов, которые реализуют интерфейс стратегии. 🟠Контекст (Context) Класс, использующий стратегию для выполнения задачи.
from abc import ABC, abstractmethod

# Интерфейс стратегии
class Strategy(ABC):
    @abstractmethod
    def sort(self, data):
        pass

# Конкретные стратегии
class BubbleSortStrategy(Strategy):
    def sort(self, data):
        print("Sorting using Bubble Sort")
        for i in range(len(data)):
            for j in range(0, len(data)-i-1):
                if data[j] > data[j+1]:
                    data[j], data[j+1] = data[j+1], data[j]

class QuickSortStrategy(Strategy):
    def sort(self, data):
        print("Sorting using Quick Sort")
        self.quick_sort(data, 0, len(data) - 1)

    def quick_sort(self, data, low, high):
        if low < high:
            pi = self.partition(data, low, high)
            self.quick_sort(data, low, pi - 1)
            self.quick_sort(data, pi + 1, high)

    def partition(self, data, low, high):
        pivot = data[high]
        i = low - 1
        for j in range(low, high):
            if data[j] <= pivot:
                i = i + 1
                data[i], data[j] = data[j], data[i]
        data[i + 1], data[high] = data[high], data[i + 1]
        return i + 1

# Контекст
class SortingContext:
    def __init__(self, strategy: Strategy):
        self._strategy = strategy

    def set_strategy(self, strategy: Strategy):
        self._strategy = strategy

    def sort(self, data):
        self._strategy.sort(data)

# Клиентский код
data = [5, 2, 9, 1, 5, 6]

context = SortingContext(BubbleSortStrategy())
context.sort(data)
print(data)  # [1, 2, 5, 5, 6, 9]

context.set_strategy(QuickSortStrategy())
data = [3, 7, 8, 5, 2, 1, 9, 5, 4]
context.sort(data)
print(data)  # [1, 2, 3, 4, 5, 5, 7, 8, 9]
🚩Плюсы и минусы Изоляция алгоритмов Алгоритмы инкапсулируются в отдельные классы, что упрощает их замену и добавление. Упрощение кода Контекст использует стратегии, избегая громоздких условных операторов. ➕Гибкость и расширяемость Легко добавлять новые стратегии без изменения существующего кода. Усложнение структуры кода Добавление множества классов стратегий может усложнить проект. ➖Контекст знает о стратегиях Контекст должен знать о всех возможных стратегиях, чтобы иметь возможность их переключать. 🚩Когда использовать данный паттерн? Когда есть несколько вариантов алгоритмов для выполнения задачи. Когда нужно динамически выбирать алгоритм во время выполнения. Когда необходимо избежать множества условных операторов для выбора алгоритма. Ставь 👍 и забирай 📚 Базу знаний

SOC Forum 2025 онлайн: все профи кибербеза в одном месте 📅 18–20 ноября пройдет ключевое событие Недели кибербезопасности — SOC Forum. 👍 Ведущие эксперты соберутся, чтобы обсудить самые острые темы и представить лучшие практические кейсы: каждый доклад прошел строгий отбор, так что вас ждет концентрат пользы. ⚡ Станьте частью форума даже онлайн! Помимо прямой трансляции лекций, для удаленных участников будут работать «Кибербез ТВ» и радиостанция «ЭХО лОСЕЙ» — с новостными дайджестами, эксклюзивными интервью, мастер-классами и специальными сюжетами, доступными только в онлайн-формате. ✅ Зарегистрируйтесь, и мы пришлем напоминание перед стартом. Узнать больше #реклама 16+ registration.forumsoc.ru О рекламодателе

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

📺 База 1000+ реальных собеседований На программиста, тестировщика, аналитика, проджекта и другие IT профы. Есть собесы от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д. 🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство!

🤔 В чем отличия pytz от datetime? 🟠`datetime` – встроенный модуль Python Модуль datetime позволяет работать с датами и временем, но по умолчанию он не поддерживает часовые пояса.
from datetime import datetime

dt = datetime.now()  # Получаем текущую дату и время
print(dt)  # Например: 2024-02-28 14:30:00.123456
print(dt.tzinfo)  # None (нет информации о часовом поясе)
🟠`pytz` – внешний модуль для работы с часовыми поясами Библиотека pytz добавляет поддержку часовых поясов и позволяет работать с разными временными зонами.
from datetime import datetime
import pytz

tz = pytz.timezone("Europe/Moscow")  # Часовой пояс Москвы
dt = datetime.now(tz)  # Получаем текущее время с учетом часового пояса

print(dt)  # Например: 2024-02-28 17:30:00+03:00
print(dt.tzinfo)  # Europe/Moscow
🚩Как работать с часовыми поясами правильно? Создание datetime с часовым поясом pytz
dt = datetime(2024, 2, 28, 15, 0)  # Наивная дата
tz = pytz.timezone("Europe/Moscow")
dt = tz.localize(dt)  # Присваиваем часовой пояс
print(dt)  # 2024-02-28 15:00:00+03:00
Конвертация времени между часовыми поясами
ny_tz = pytz.timezone("America/New_York")
ny_time = dt.astimezone(ny_tz)
print(ny_time)  # Конвертированное время в Нью-Йорке
Использование UTC (лучший подход для серверов)
utc_now = datetime.now(pytz.UTC)  # Текущее время в UTC
print(utc_now)  # Например: 2024-02-28 14:30:00+00:00
Ставь 👍 и забирай 📚 Базу знаний