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

🤔 Как разбить список? Разбить список (list) можно разными способами в зависимости от задачи: На части фиксированной длины На N частей По условию 🚩Разбить список на части фиксированного размера Если нужно разделить список на подсписки длиной n, можно использовать list comprehension
def split_list(lst, size):
    return [lst[i:i + size] for i in range(0, len(lst), size)]

data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(split_list(data, 3))  
Вывод
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
🚩Разбить список на N частей (равных или почти равных) Если нужно разделить список на N частей, можно использовать numpy или itertools
import numpy as np

def split_into_n_parts(lst, n):
    return np.array_split(lst, n)

data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(split_into_n_parts(data, 4))  
Вывод
[array([1, 2, 3]), array([4, 5]), array([6, 7]), array([8, 9])]
🚩Разбить список по условию Если нужно разделить список по какому-то критерию, например, на чётные и нечётные числа
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]

even = [x for x in data if x % 2 == 0]
odd = [x for x in data if x % 2 != 0]

print(even, odd)
Вывод
[2, 4, 6, 8] [1, 3, 5, 7, 9]
Ставь 👍 и забирай 📚 Базу знаний

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

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

Реклама для бизнеса любого уровня в Яндекс Директе Создайте эффективную рекламную кампанию с алгоритмами Яндекс Директа 👌 На
Реклама для бизнеса любого уровня в Яндекс Директе Создайте эффективную рекламную кампанию с алгоритмами Яндекс Директа 👌 Начните прямо сейчас ⚡ Зарегистрироваться #реклама direct.yandex.ru О рекламодателе

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

🤔 Какие есть особенности исключения в Python? В Python исключения (exceptions) — это специальные объекты, которые возникают при ошибках и прерывают выполнение программы, если их не обработать. Все исключения в Python — это объекты, унаследованные от BaseException.
try:
    1 / 0
except ZeroDivisionError as e:
    print(type(e))  # <class 'ZeroDivisionError'>
    print(e)  # division by zero
Все исключения унаследованы от BaseException:
BaseException
 ├── Exception
 │   ├── ArithmeticError
 │   │   ├── ZeroDivisionError
 │   │   ├── OverflowError
 │   ├── ValueError
 │   ├── IndexError
 │   ├── KeyError
 │   ├── TypeError
 ├── SystemExit
 ├── KeyboardInterrupt
Можно перехватывать несколько исключений
try:
    x = int("abc")  # Ошибка ValueError
except (ValueError, TypeError) as e:
    print(f"Ошибка: {e}")
Если не знаем, какая ошибка может произойти:
try:
    x = 1 / 0
except Exception as e:
    print(f"Ошибка: {e}")  # division by zero
finally выполняется всегда
try:
    1 / 0
except ZeroDivisionError:
    print("Ошибка!")
finally:
    print("Этот код выполнится всегда")
raise позволяет выбрасывать исключения вручную
raise ValueError("Ошибка: неверное значение!")
Можно создать свой класс ошибки, унаследованный от Exception:
class MyError(Exception):
    pass

raise MyError("Это моя ошибка!")
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое EXPLAIN? EXPLAIN — команда в SQL (особенно PostgreSQL), которая показывает план выполнения запроса: - какие индексы используются; - как идут соединения; - примерная стоимость. Это помогает оптимизировать производительность сложных запросов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Бесплатный курс по дизайну: веб, графический и UX/UI Получи востребованные навыки: - создание дизайна сайтов и приложений - с
+5
Бесплатный курс по дизайну: веб, графический и UX/UI Получи востребованные навыки: - создание дизайна сайтов и приложений - создание инфографики и карточек для маркетплейсов - работа в графическом редакторе Figma и др. Студенты курса в среднем зарабатывают от 68 000 ₽ уже во время обучения💰 Зарегистрироваться #реклама 16+ ydaev.ru О рекламодателе

🤔 Для чего нужен счетчик ссылок Python? В Python счетчик ссылок (reference count) используется для управления памятью. Он показывает, сколько раз объект используется в программе. Когда счетчик ссылок падает до нуля, Python автоматически удаляет объект, освобождая память. 🚩Как работает счетчик ссылок? Python использует автоматическое управление памятью, основанное на подсчёте ссылок. Когда создаётся объект, Python хранит специальное число — количество ссылок на этот объект. Это число увеличивается, когда мы создаём новую ссылку на объект, и уменьшается, когда удаляем или перезаписываем переменную.
import sys

a = [1, 2, 3]  # Создаём список
print(sys.getrefcount(a))  # Выведет 2 (одна ссылка 'a' + вызов getrefcount)

b = a  # Новая ссылка на тот же объект
print(sys.getrefcount(a))  # Теперь 3 (a, b и сам getrefcount)

del a  # Удаляем одну ссылку
print(sys.getrefcount(b))  # Теперь 2

del b  # Удаляем последнюю ссылку, объект будет удалён из памяти
🚩Почему это важно? 🟠Эффективное управление памятью Python сам удаляет ненужные объекты, не давая памяти переполняться. 🟠Понимание утечек памяти Если объект имеет циклические ссылки (например, список ссылается сам на себя), Python не может освободить его сразу, поэтому дополнительно используется сборщик мусора (Garbage Collector, GC).
import gc

class Node:
    def __init__(self):
        self.ref = self  # Циклическая ссылка!

n = Node()
del n  # Обычный подсчёт ссылок не сработает, объект останется в памяти
gc.collect()  # Явный вызов сборщика мусора удалит его
Ставь 👍 и забирай 📚 Базу знаний

REKONFA Live 6 ноября приглашаем всех, кто имеет отношение к маркетингу и рекламным технологиям, обсудить рынок, тренды, вызо
REKONFA Live 6 ноября приглашаем всех, кто имеет отношение к маркетингу и рекламным технологиям, обсудить рынок, тренды, вызовы и их решения. С докладами на актуальные темы выступят лидеры индустрии и медийные спикеры. Принять участие можно офлайн и онлайн. Мероприятие бесплатное, нужно только зарегистрироваться. Зарегистрироваться #реклама 18+ ya.rekonfa.ru О рекламодателе

🤔 Есть ли какая-то область видимости над глобальной? Да, это встроенная (built-in) область видимости. Она содержит определения, доступные в любом месте Python: встроенные функции (len, type, range, print) и константы (True, None, Ellipsis и т.д.). Эта область всегда доступна, но идёт последней в цепочке поиска. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие есть методы чтобы реализовать протокол итерирования данных? Для реализации протокола итерирования данных в Python необходимо использовать два метода: __iter__() и __next__(). 🚩Протокол итератора 🟠Метод `__iter__()` Этот метод должен возвращать объект-итератор. В простом случае он возвращает сам объект, если объект реализует метод __next__(). Метод __iter__() необходим для того, чтобы объект можно было использовать в конструкциях, которые требуют итерируемого объекта, таких как циклы for. 🟠Метод __next__() Этот метод возвращает следующий элемент в последовательности. Когда элементы заканчиваются, метод должен вызвать исключение StopIteration для остановки итерации.
class MyRange:
    def __init__(self, start, end):
        self.start = start
        self.end = end
        self.current = start

    def __iter__(self):
        self.current = self.start  # Перезапуск итератора при каждом вызове
        return self

    def __next__(self):
        if self.current >= self.end:
            raise StopIteration
        else:
            self.current += 1
            return self.current - 1

# Использование
for number in MyRange(1, 5):
    print(number)
🚩Дополнительно: итераторы и генераторы Для упрощения создания итераторов в Python можно использовать генераторы. Генераторы позволяют писать итераторы с использованием ключевого слова yield вместо определения методов __iter__() и __next__() вручную.
def my_range(start, end):
    current = start
    while current < end:
        yield current
        current += 1

# Использование
for number in my_range(1, 5):
    print(number)
Ставь 👍 и забирай 📚 Базу знаний

EXLANTIX ET от EXEED. Уже в продаже! Гибридный кроссовер будущего! Премиальный гибридный автомобиль EXLANTIX ET в продаже! За
EXLANTIX ET от EXEED. Уже в продаже! Гибридный кроссовер будущего! Премиальный гибридный автомобиль EXLANTIX ET в продаже! Запас хода 1180 км, Ускорение за 4,8 сек до 100 км/ч, 8 лет гарантии или 200 000 км! Благодаря надежным и современным системам EXLANTIX ET устанавливает новые стандарты гибридных автомобилей, обеспечивая защиту водителя и пассажиров при любых дорожных ситуациях. Хотите приобрести автомобиль или узнать больше? Узнать цену #реклама exeed.ru О рекламодателе

🤔 Какие методы есть у итератора? Итератор обязан реализовать два метода: - iter — возвращает сам итератор; - next — возвращает следующий элемент или выбрасывает исключение StopIteration при завершении. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие объекты можно положить в множество? В Python множество (set) — это неупорядоченная коллекция уникальных элементов, которая работает на основе хеш-таблицы. Это значит, что только хешируемые (immutable) объекты могут быть добавлены в set. 🚩Можно добавить в `set`: Числа (int, float, complex)
   s = {1, 2.5, 3+4j}
Строки (str)
   s = {"apple", "banana", "cherry"}
Кортежи (tuple), если они тоже содержат только неизменяемые объекты
   s = {(1, 2), ("a", "b")}
Булевые значения (bool)** (но True считается 1, а False0)
   s = {True, False, 1, 0}
   print(s)  # {False, True} (0 и 1 не добавятся повторно)
🚩Нельзя добавить в `set` Изменяемые объекты (list, set, dict)
   s = { [1, 2, 3] }  #  Ошибка: TypeError: unhashable type: 'list'
   s = { {"key": "value"} }  #  Ошибка: TypeError: unhashable type: 'dict'
Кортежи с изменяемыми элементами
   s = { (1, [2, 3]) }  #  Ошибка: TypeError
Ставь 👍 и забирай 📚 Базу знаний

🤔 В чем разница между from foo import bar и from foo import *? from foo import bar импортирует только конкретный элемент, тогда как from foo import * импортирует всё содержимое модуля. Последний вариант не рекомендуется, так как он загрязняет пространство имён и делает код менее понятным. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Видеонаблюдение для бизнеса. Камера со скидкой 99% До 31 декабря подключите видеонаблюдение от МегаФона и получите камеру для
Видеонаблюдение для бизнеса. Камера со скидкой 99% До 31 декабря подключите видеонаблюдение от МегаФона и получите камеру для видеонаблюдения за 60 ₽ вместо 6 000 ₽, в стоимость входит доставка камеры, установка и настройка Видеонаблюдение для бизнеса в МегаФоне - это: — Услуга «Тайный покупатель» — аудит качества и процессов бизнеса — Скидка до 20% (при оплате на год вперёд) — Архив 180 дней (хранение записи в облаке до 180 дней) — И многое другое Получить скидку #реклама megafon.ru О рекламодателе

🤔 Какие нюансы есть в использовании чисел как ключей? Использование чисел в качестве ключей в словарях Python – это достаточно распространённый случай. Однако у этого подхода есть несколько нюансов, которые нужно учитывать для избежания ошибок. 🚩Хешируемость чисел Ключи в словаре должны быть хешируемыми, поскольку словари в Python основаны на хеш-таблицах. Хешируемость означает, что объект имеет неизменное значение хеша в течение его жизни. Числа (как int, так и float) являются хешируемыми, поэтому их можно использовать в качестве ключей.
d = {1: "один", 2: "два"}
print(d[1])  # "один"
🚩Взаимодействие `int` и `float` Python не делает различий между int и float, если их значения равны. Это связано с тем, что у них одинаковое хеш-значение при равенстве.
d = {1: "один", 1.0: "float один", 2: "два"}
print(d)  # {1: 'float один', 2: 'два'}
🚩Непредсказуемое поведение при работе с `float` Числа с плавающей запятой (float) иногда ведут себя непредсказуемо из-за ошибок округления, которые возникают из-за особенностей представления чисел в памяти компьютера.
d = {0.1 + 0.2: "значение"}  # 0.1 + 0.2 не равно точно 0.3 из-за округления
print(d.get(0.3))  # None, ключ не найден!
🚩Производительность Использование чисел как ключей в словарях эффективно с точки зрения производительности. Поскольку числа хешируются быстро и занимают меньше памяти, операции добавления, удаления и поиска выполняются очень быстро. 🚩Проблемы при преобразованиях Если ключами словаря являются числа, то при обработке данных (например, чтении из файла или API) можно случайно преобразовать их в строки, что приведёт к созданию новых ключей вместо использования существующих.
d = {1: "один", 2: "два"}
print(d.get("1"))  # None, строка "1" и число 1 – это разные ключи!
🚩Пользовательские объекты с числовыми свойствами Если вы используете пользовательские объекты как ключи и они ведут себя как числа (например, реализуют методы __hash__ и __eq__), то их поведение должно быть совместимо с ожидаемым использованием.
class MyNumber:
    def __init__(self, value):
        self.value = value
    
    def __hash__(self):
        return hash(self.value)
    
    def __eq__(self, other):
        return self.value == other.value

d = {MyNumber(1): "один"}
print(d[MyNumber(1)])  # "один"
Ставь 👍 и забирай 📚 Базу знаний

Тариф, с которым хватит на всё 50 ГБ и безлимитные минуты за 390 ₽ в месяц, если перенесете номер в Т-Мобайл до 30 сентября Узнать больше #реклама tbank.ru О рекламодателе