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

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

Открыть в Telegram

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

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

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

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

Согласно последним данным от 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 109
Подписчики
-524 часа
-147 дней
-4830 день
Архив постов
Технический партнёр для комплексной поддержки сайта Полный цикл поддержки и развития сайтов включая интеграции, отказоустойчи
Технический партнёр для комплексной поддержки сайта Полный цикл поддержки и развития сайтов включая интеграции, отказоустойчивость, масштабирование. Поддерживаем и развиваем корпоративные сайты и клиентские кабинеты, включая сложные архитектуры. C 2018 года поддерживаем цифровую экосистему крупнейшего дистрибьютора Лада - от интеграций с 1С до проектирования отказоустойчивой инфраструктуры. Примеры задач: ✅ Поддержка и развитие клиентских кабинетов ✅ Интеграции с 1С и внутренними сервисами ✅ Миграции, мониторинг, техдолг ✅ Аудит, документации, процессы Обеспечиваем бесперебойную работу сайта, защиту и обновление Узнать больше #реклама ima-pr.ru О рекламодателе

🤔 Что делать если нужно перехватить исключение, выполнить действия и опять возбудить это же исключение? Если нужно: Перехватить исключение Выполнить какие-то действия (лог, очистка, уведомление и т. д.) Снова выбросить это же исключение
try:
    x = 1 / 0  # Ошибка деления на ноль
except ZeroDivisionError:
    print("Ошибка! Записываем в лог...")
    raise  # Повторно выбрасываем то же исключение
Вывод
Ошибка! Записываем в лог...
Traceback (most recent call last):
  File "script.py", line 2, in <module>
    x = 1 / 0
ZeroDivisionError: division by zero
Пример: Логирование перед повторным выбросом
import logging

logging.basicConfig(filename="errors.log", level=logging.ERROR)

try:
    user_input = int("abc")  # Ошибка ValueError
except ValueError as e:
    logging.error(f"Ошибка: {e}")  # Записываем в лог
    raise  # Повторно выбрасываем исключение
Пример: Очистка ресурсов перед выбросом исключения
try:
    file = open("data.txt", "r")
    data = file.read()
except FileNotFoundError:
    print("Файл не найден. Освобождаем ресурсы...")
    raise  # Снова выбрасываем исключение
finally:
    file.close()  # Гарантированно закроет файл
Ставь 👍 и забирай 📚 Базу знаний

🤔 Для чего асинхронность? Асинхронность в Python используется для эффективной работы с задачами, которые тратят время на ожидание, например: - сетевые запросы; - операции с файлами; - задержки по времени; - работа с базами данных. Асинхронный код (async/await) позволяет выполнять другие действия во время ожидания, не блокируя основной поток. Это особенно полезно в веб-серверах, чат-ботах, API и других IO-bound задачах. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое блокировки (локи) в БД? Блокировка (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), другие запросы ждут бесконечно. Решение: короткие транзакции, автоматическое завершение. 🟠Снижение производительности Чем больше блокировок, тем медленнее работа БД. Ставь 👍 и забирай 📚 Базу знаний

🤔 Какая минимальная периодичность использования crontab? Минимально возможный интервал — одна минута. То есть cron может запускать задачу раз в минуту, но не чаще. Для меньших интервалов используются другие инструменты — например, systemd timers или сторонние планировщики. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое cookie? Это небольшой файл, который создаётся веб-сайтом и сохраняется в браузере пользователя. Куки используются для хранения информации, связанной с пользователем, чтобы улучшить его взаимодействие с сайтом. 🚩Зачем нужны куки? Куки помогают веб-сайтам «запоминать» данные о пользователе. Вот основные цели их использования: 🟠Аутентификация Например, после входа в аккаунт куки сохраняют ваш статус (авторизован вы или нет). 🟠Сохранение предпочтений Куки могут хранить ваши настройки, например, выбранный язык или тему сайта. 🟠Сессии и корзины Если вы добавляете товары в корзину в интернет-магазине, эта информация может храниться в куки. 🟠Отслеживание действий Куки используются для аналитики и рекламы, чтобы понять, как вы взаимодействуете с сайтом, или показать персонализированные объявления. 🚩Как работают куки? Когда вы заходите на сайт, сервер может отправить куки вашему браузеру вместе с HTTP-ответом. Браузер сохраняет эти данные и отправляет их обратно на сервер при последующих запросах. Куки привязаны к домену, и только этот домен может их читать. 🚩Пример использования куки Создание куки на сервере (Python, Flask)
from flask import Flask, request, make_response

app = Flask(__name__)

@app.route('/set_cookie')
def set_cookie():
    response = make_response("Cookie установлена!")
    response.set_cookie('username', 'JohnDoe')  # Устанавливаем куки с именем "username"
    return response

@app.route('/get_cookie')
def get_cookie():
    username = request.cookies.get('username')  # Получаем значение куки
    return f'Привет, {username}!' if username else 'Куки не найдены.'

if __name__ == '__main__':
    app.run(debug=True)
🚩Типы куки 🟠Сессионные куки (Session Cookies) Хранятся только во время работы браузера и удаляются после его закрытия. 🟠Постоянные куки (Persistent Cookies) Сохраняются на устройстве пользователя до истечения срока действия. 🟠Безопасные куки (Secure Cookies) Передаются только через HTTPS для обеспечения безопасности. 🟠HttpOnly куки Не доступны через JavaScript, используются для защиты от XSS-атак. 🚩Плюсы и минусы ➕Помогают сохранять пользовательские данные для упрощения работы с сайтом. ➕Могут улучшить пользовательский опыт за счёт персонализации. ➖Могут использоваться для отслеживания активности (privacy concerns). ➖Неправильное управление куки может привести к утечкам данных. Ставь 👍 и забирай 📚 Базу знаний

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

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

🤔 Встроенные функции Python В Python есть встроенные функции (built-in functions) — это функции, которые можно использовать без импорта. Они делают код проще и удобнее. Полный список встроенных функций можно посмотреть так:
print(dir(__builtins__))
🚩Основные категории встроенных функций Работа с числами
print(abs(-5))  # 5
print(round(3.14159, 2))  # 3.14
print(pow(2, 3))  # 8
print(min([3, 1, 4]))  # 1
Работа со строками
print(len("hello"))  # 5
print(str(123))  # '123'
print(ord('A'))  # 65
print(chr(65))  # 'A'
Работа с коллекциями (списки, кортежи, множества)
a = [3, 1, 2]
print(sorted(a))  # [1, 2, 3]

nums = [1, 2, 3]
names = ["Alice", "Bob", "Charlie"]
print(list(zip(nums, names)))  # [(1, 'Alice'), (2, 'Bob'), (3, 'Charlie')]
Работа с логикой и проверками
print(bool(""))  # False
print(all([True, 1, "Hello"]))  # True
print(any([0, "", None, 5]))  # True (есть хотя бы один True)
Работа с функциями
nums = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, nums))
print(squared)  # [1, 4, 9, 16]

evens = list(filter(lambda x: x % 2 == 0, nums))
print(evens)  # [2, 4]
Работа с файлами
with open("file.txt", "w") as f:
    f.write("Hello, world!")

name = input("Введите имя: ")
print("Привет,", name)
Работа с объектами и атрибутами
print(type(42))  # <class 'int'>
print(isinstance(42, int))  # True
print(dir([]))  # Методы списка
Ставь 👍 и забирай 📚 Базу знаний

Как IT-компании увеличить продажи с помощью вебинаров? Делимся гайдом для маркетологов IT-компаний с рекомендациями ведущих р
Как IT-компании увеличить продажи с помощью вебинаров? Делимся гайдом для маркетологов IT-компаний с рекомендациями ведущих российских разработчиков и экспертов МТС Линк. Вы узнаете: - Как правильно использовать онлайн-мероприятия для продвижения; - Как собрать 10 000 потенциальных клиентов из любой точки мира в одном месте; - Как увеличить узнаваемость бренда и создать комьюнити вокруг него; - Как оценить вклад онлайн-мероприятия в продвижение компании и правильно обработать лиды; Бонус: кейс IT-компании с доходимостью до вебинаров 70% Получите методичку бесплатно на сайте! Скачать #реклама 16+ mts-link.ru О рекламодателе

🤔 Чем WebSocket отличается от обычного сокета? WebSocket — это протокол поверх TCP, предназначенный для двусторонней коммуникации в браузере. Он начинает с HTTP-запроса, а затем переходит в постоянное соединение. Обычные сокеты не привязаны к вебу и требуют ручной реализации протокола. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое @dataclass? Это декоратор, предоставленный модулем dataclasses, который автоматически генерирует специальные методы, такие как __init__,🤔 Что так🤔 Что т и другие, для вашего класса. Это упрощает создание классов, предназначенных для хранения данных, устраняя необходимость писать много шаблонного кода. 🚩Зачем нужен 🟠Упрощение кода Автоматически генерирует методы, сокращая шаблонный код. 🟠Читабельность Делает код более чистым и легким для понимания. 🟠Удобство Обеспечивает удобные и мощные возможности для работы с данными. 🚩Как использовать Нужно импортировать его из модуля dataclasses и применить к классу. Внутри класса достаточно определить только поля данных.
from dataclasses import dataclass

@dataclass
class Person:
    name: str
    age: int

# Примеры использования
person1 = Person(name="Alice", age=30)
person2 = Person(name="Bob", age=25)

print(person1)  # Вывод: Person(name='Alice', age=30)
print(person2)  # Вывод: Person(name='Bob', age=25)
print(person1 == person2)  # Вывод: False
🚩Автоматически генерируемые методы 🟠`__init__` Инициализирует объект с заданными значениями атрибутов. 🟠`__repr__` Возвращает строковое представление объекта, удобное для отладки. 🟠`__eq__` Сравнивает объекты на равенство по их атрибутам. 🟠`__lt__`, __le__,🤔 Что так🤔 Что такМогут быть сгенерированы для сравнения объектов (если указано). 🚩Настройка поведения Вы можете настроить поведение @dataclass с помощью параметров, таких как order, frozen, и других. 🟠`order=True` Генерирует методы для сравнения объектов. 🟠`frozen=True` Делает экземпляры неизменяемыми (immutable). Пример
from dataclasses import dataclass

@dataclass(order=True, frozen=True)
class Person:
    name: str
    age: int

person1 = Person(name="Alice", age=30)
person2 = Person(name="Bob", age=25)

print(person1 > person2)  # Вывод: True (поскольку 'Alice' > 'Bob' по алфавиту, если имена равны, сравниваются возраста)
# person1.age = 31  # Ошибка: FrozenInstanceError (поскольку класс заморожен)
🚩Поля данных и их настройки Вы можете использовать функцию field() для настройки отдельных полей, например, для указания значений по умолчанию или исключения полей из методов
5)

print(
🤔 Что т и других.
from dataclasses import dataclass, field

@dataclass
class Person:
    name: str
    age: int = 0
    address: str = field(default="Unknown", repr=False)

person = Person(name="Alice")
print(person)  # Вывод: Person(name='Alice', age=0)
Ставь 👍 и забирай 📚 Базу знаний

У вас дефицит осетинских пирогов в организме! Едем «лечиться» в Северную Осетию. Маршрут на выходные — в новой серии тревел-ш
У вас дефицит осетинских пирогов в организме! Едем «лечиться» в Северную Осетию. Маршрут на выходные — в новой серии тревел-шоу «Доедешь — напиши» от Яндекс Путешествий. Вместе с актёром и блогером Никитой Тау вы: увидите старинный некрополь, попадёте во Владикавказ 19-го века, найдёте лучшие смотровые площадки и приготовите настоящий осетинский пирог. Смотреть #реклама 16+ youtu.be О рекламодателе

🤔 Какие основные функции Python есть? Встроенные функции Python включают такие базовые инструменты, как len, type, print, input, int, str, list, dict, sum, max, min, zip, enumerate, range, map, filter и многие другие. Они обеспечивают широкий функционал без необходимости импортировать внешние библиотеки. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

REKONFA Live 6 ноября приглашаем рекламодателей, агентства и рекламные площадки обсудить технологии, маркетинговые инструмент
REKONFA Live 6 ноября приглашаем рекламодателей, агентства и рекламные площадки обсудить технологии, маркетинговые инструменты и актуальные новинки. Ключевые участники рынка поделятся опытом и расскажут: — О ситуации на рынке рекламы — Как продвигать и продавать в интернете в 2025 году — Как бизнесу адаптироваться к меняющимся условиям Вас ждут доклады на актуальные темы, классный нетворкинг, вдохновляющая атмосфера для творчества и креатива. Встречаемся 6 ноября в Москве. Для тех, кто не сможет приехать, организуем интерактивное digital-шоу. Мероприятие бесплатное, нужно только зарегистрироваться. Зарегистрироваться #реклама 16+ ya.rekonfa.ru О рекламодателе

🤔 Почему вычислять большие значения в асинхронной функции плохо? Асинхронность (asyncio) в Python не выполняет код параллельно, а переключается между задачами во время ожидания (I/O-bound). Если в async-функции делать тяжёлые вычисления (CPU-bound), это блокирует asyncio, потому что в Python есть GIL (Global Interpreter Lock). 🚩Асинхронность в Python подходит для ввода-вывода (I/O-bound) Асинхронность позволяет выполнять задачи без блокировки, но только если они ждут чего-то (файлы, сеть, БД).
import asyncio
import aiohttp

async def fetch(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            return await response.text()

async def main():
    urls = ["https://example.com"] * 5
    results = await asyncio.gather(*(fetch(url) for url in urls))

asyncio.run(main())
🚩Проблема с `async` и тяжёлыми вычислениями (CPU-bound) Если в async-функции делать тяжёлые вычисления, Python не сможет переключаться между задачами.
import asyncio

async def heavy_task(n):
    print(f"Вычисляю {n}...")
    total = sum(i**2 for i in range(n))  # Долгий процесс
    return total

async def main():
    await asyncio.gather(heavy_task(10**7), heavy_task(10**7))

asyncio.run(main())
🚩Как правильно выполнять вычисления в `async`? 🟠Использовать `asyncio.to_thread()` (делегирование в потоки) В Python 3.9+ можно выполнять CPU-задачи в отдельных потоках, не блокируя asyncio.
import asyncio

def heavy_computation(n):
    return sum(i**2 for i in range(n))

async def main():
    result = await asyncio.to_thread(heavy_computation, 10**7)
    print(result)

asyncio.run(main())
🟠Использовать `multiprocessing` (запуск на нескольких ядрах) Так как Python использует GIL, единственный способ выполнять настоящий параллелизм — это multiprocessing.
import asyncio
import multiprocessing

def heavy_computation(n):
    return sum(i**2 for i in range(n))

async def main():
    loop = asyncio.get_running_loop()
    with multiprocessing.Pool() as pool:
        result = await loop.run_in_executor(pool, heavy_computation, 10**7)
        print(result)

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

Приглашаем на Yandex Neuro Scale В этом году главная конференция Yandex Cloud объединит разработчиков, архитекторов, инженеро
Приглашаем на Yandex Neuro Scale В этом году главная конференция Yandex Cloud объединит разработчиков, архитекторов, инженеров и IT-руководителей, чтобы обменяться опытом и увидеть, как работают технологии, которые меняют индустрии. 7 тематических треков, 50+ докладов, реальные бизнес-кейсы и нетворкинг! ✨Участие бесплатное, нужно только зарегистрироваться!✨ Зарегистрироваться #реклама 16+ scale.yandex.cloud О рекламодателе Реклама на Яндексе

🤔 Байтовые массивы (byte array)? bytearray — это изменяемый тип, предназначенный для хранения последовательности байтов. Он используется для работы с бинарными данными, особенно когда нужно изменять отдельные байты без создания новых объектов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Баранкины и камни силы Смотрите на Кинопоиске с 7 августа. Семья таксистов обретает сверхсилы — и родственницу из XIX века. Фантастическая комедия с Андреем Федорцовым Узнать больше #реклама 16+ kinopoisk.ru О рекламодателе

🤔 Как отсортировать список словарей по определенному полю? Для сортировки списка словарей по определенному полю в Python удобно использовать функцию sorted() или метод sort(). Оба подхода позволяют указать ключ сортировки с помощью параметра key, где можно передать либо функцию, либо лямбда-выражение, которое извлекает значение из словаря для сортировки. 🚩Почему это важно? Списки словарей часто используются для хранения структурированных данных. Например, вы можете иметь список сотрудников, где каждый сотрудник представлен в виде словаря с полями, такими как имя, возраст и зарплата. Сортировка по определенному полю позволяет упорядочить данные, чтобы ими было проще пользоваться или отображать. 🚩Как это сделать? 🟠Использование функции `sorted()` Эта функция возвращает новый отсортированный список.
   employees = [
       {"name": "Alice", "age": 30, "salary": 70000},
       {"name": "Bob", "age": 25, "salary": 50000},
       {"name": "Charlie", "age": 35, "salary": 120000}
   ]

   # Сортировка по возрасту
   sorted_employees = sorted(employees, key=lambda x: x["age"])

   print(sorted_employees)
   
Результат
   [{'name': 'Bob', 'age': 25, 'salary': 50000},
    {'name': 'Alice', 'age': 30, 'salary': 70000},
    {'name': 'Charlie', 'age': 35, 'salary': 120000}]
   
🟠Использование метода `sort()` Этот метод изменяет существующий список.
   employees = [
       {"name": "Alice", "age": 30, "salary": 70000},
       {"name": "Bob", "age": 25, "salary": 50000},
       {"name": "Charlie", "age": 35, "salary": 120000}
   ]

   # Сортировка по зарплате
   employees.sort(key=lambda x: x["salary"])

   print(employees)
   
Результат
   [{'name': 'Bob', 'age': 25, 'salary': 50000},
    {'name': 'Alice', 'age': 30, 'salary': 70000},
    {'name': 'Charlie', 'age': 35, 'salary': 120000}]
   
🟠Сортировка в обратном порядке Установите параметр reverse=True, чтобы отсортировать в порядке убывания.
   sorted_employees_desc = sorted(employees, key=lambda x: x["age"], reverse=True)
   print(sorted_employees_desc)
   
🟠Использование функции `itemgetter` из модуля `operator` Это более эффективный способ, чем лямбда-функция, особенно для больших данных.
   from operator import itemgetter

   sorted_employees = sorted(employees, key=itemgetter("age"))
   print(sorted_employees)
   
🚩Обработка отсутствующих значений Если поле может отсутствовать в некоторых словарях, можно использовать параметр key для обработки таких ситуаций.
employees = [
    {"name": "Alice", "age": 30},
    {"name": "Bob"},
    {"name": "Charlie", "age": 35}
]

sorted_employees = sorted(employees, key=lambda x: x.get("age", 0))
print(sorted_employees)
Результат
[{'name': 'Bob'},
 {'name': 'Alice', 'age': 30},
 {'name': 'Charlie', 'age': 35}]
Ставь 👍 и забирай 📚 Базу знаний