Python | Вопросы собесов
前往频道在 Telegram
Cайт: easyoffer.ru Реклама: @easyoffer_adv ВП: @easyoffer_vp Тесты t.me/+20tRfhrwPpM4NDQy Задачи t.me/+nsl4meWmhfQwNDVi Вакансии t.me/+cXGKkrOY2-w3ZTky
显示更多📈 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”
凭借高频更新(最新数据采集于 06 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
13 110
订阅者
-524 小时
-147 天
-4830 天
帖子存档
13 110
👩💻 Стажировки и вакансии для Python разработчиков.
- Вакансии которых нет на джоб-агрегаторах
- Только прямые контакты HR в Telegram
👉 @jobs_python
Пока другие листают джоб-сайты — ты уже пишешь HR в Telegram.
13 110
🤔 Какие магические методы и для чего используются?
Магические методы (например, __init__, __str__, __len__, __add__) используются для определения поведения объектов в специфичных ситуациях, таких как инициализация, строковое представление, арифметические операции или работа с коллекциями.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
13 110
🤔 Как можно оптимизировать хвостовую рекурсию в 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)) # Работает без ошибок
Ставь 👍 и забирай 📚 Базу знаний13 110
🤔 Для чего нужен модуль operator?
Модуль operator предоставляет функции, которые соответствуют стандартным операторам Python (арифметическим, логическим, сравнениям и др.). Это удобно для использования в функциональном программировании — например, когда оператор нужно передать как функцию (в map, sorted, reduce и т.д.). Также он делает код более читаемым и структурированным в случае сложной логики.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
13 110
📺 База 1000+ реальных собеседований
На программиста, тестировщика, аналитика, проджекта и другие IT профы.
Есть собесы от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д.
🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство!
13 110
🤔 Чем отличаются методы сокрытия?
Методы и атрибуты класса могут быть скрыты от внешнего использования с помощью различных уровней сокрытия. Сокрытие реализуется с помощью соглашений об именах, а не с помощью жесткой инкапсуляции, как в некоторых других языках программирования. Основные уровни сокрытия включают публичные, защищенные и приватные методы и атрибуты.
🚩Публичные методы и атрибуты
Доступны из любого места, как внутри класса, так и за его пределами. Их имена не начинаются с подчеркиваний.
class MyClass:
def __init__(self):
self.public_attribute = "I am public"
def public_method(self):
return "This is a public method"
obj = MyClass()
print(obj.public_attribute) # Вывод: I am public
print(obj.public_method()) # Вывод: This is a public method
🚩Защищенные методы и атрибуты
Не предназначены для использования за пределами класса и его подклассов. Они обозначаются одним подчеркиванием в начале имени. Это всего лишь соглашение, сигнализирующее другим разработчикам, что такие методы и атрибуты не следует использовать вне класса или его подклассов.
class MyClass:
def __init__(self):
self._protected_attribute = "I am protected"
def _protected_method(self):
return "This is a protected method"
class SubClass(MyClass):
def access_protected(self):
return self._protected_method()
obj = MyClass()
sub_obj = SubClass()
print(sub_obj.access_protected()) # Вывод: This is a protected method
🚩Приватные методы и атрибуты
Скрыты от внешнего доступа и доступны только внутри самого класса. Они обозначаются двумя подчеркиваниями в начале имени. Python реализует это с помощью механизма именования, который изменяет имя метода или атрибута, добавляя к нему имя класса, чтобы затруднить доступ извне.
class MyClass:
def __init__(self):
self.__private_attribute = "I am private"
def __private_method(self):
return "This is a private method"
def access_private(self):
return self.__private_method()
obj = MyClass()
try:
print(obj.__private_attribute)
except AttributeError as e:
print(e) # Вывод: 'MyClass' object has no attribute '__private_attribute'
try:
print(obj.__private_method())
except AttributeError as e:
print(e) # Вывод: 'MyClass' object has no attribute '__private_method'
# Доступ к приватным методам через публичный метод класса
print(obj.access_private()) # Вывод: This is a private method
Ставь 👍 и забирай 📚 Базу знаний13 110
В Чёрную пятницу — 1 ТБ в Облаке Mail от 99 ₽ в месяц
Подключите подписку Mail Space на год, а платите как за 9 месяцев. С подпиской вы получите бесконечное место в Облаке Mail для ваших фото и видео с телефона и 1 ТБ для всего остального — всего от 99 ₽ в месяц.
Перейти на сайт
#реклама 16+
cloud.mail.ru
О рекламодателе
13 110
🤔 Что делает декоратор property?
Декоратор `property` в Python используется для создания свойств объекта, что позволяет управлять доступом к атрибутам класса через геттеры, сеттеры и методы удаления. Это делает возможным изменение внутреннего представления данных без изменения интерфейса класса, обеспечивает лучший контроль за доступом и валидацию данных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
13 110
🤔 Для чего могут применять конструкцию try finally без except?
Конструкция
try...finally используется в случаях, когда нужно гарантировать выполнение кода в finally, независимо от того, возникло исключение или нет.
🟠Закрытие файла
Если файл открыт, его нужно закрыть в любом случае, даже если в процессе работы произойдёт ошибка.
try:
file = open("data.txt", "r")
data = file.read()
finally:
print("Закрываем файл...")
file.close() # Файл закроется даже при ошибке
🟠Освобождение ресурсов (например, соединение с базой данных)
Если программа работает с базой данных, соединение нужно закрыть, даже если произошла ошибка.
import sqlite3
conn = sqlite3.connect("database.db")
try:
cursor = conn.cursor()
cursor.execute("SELECT * FROM users") # Ошибка, если таблицы нет
finally:
print("Закрываем соединение с БД...")
conn.close() # Закроет соединение в любом случае
🟠Разблокировка ресурсов (например, файл или поток)
Допустим, есть блокировка файла, которую нужно снять в любом случае.
import threading
lock = threading.Lock()
try:
lock.acquire()
print("Ресурс заблокирован")
# Код, который использует ресурс
finally:
print("Разблокируем ресурс")
lock.release() # Освободит блокировку даже при ошибке
Пример 4: Остановка таймера, даже если произошла ошибка
import time
try:
start_time = time.time()
x = 1 / 0 # Ошибка деления на ноль
finally:
elapsed_time = time.time() - start_time
print(f"Программа выполнялась {elapsed_time:.2f} секунд")
Ставь 👍 и забирай 📚 Базу знаний13 110
🤔 Что такое множество?
Множество — это неупорядоченная коллекция уникальных элементов. В Python оно реализовано как хеш-таблица и позволяет быстро проверять наличие элементов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
13 110
🤔 Как в Django работает система аутентификации?
В Django встроена мощная система аутентификации, которая отвечает за идентификацию пользователей, управление учетными записями и контроль доступа к различным частям приложения. Она включает регистрацию, вход, выход, проверку прав пользователей и работу с сессиями.
🟠Как работает процесс аутентификации?
Аутентификация в Django основана на модели пользователя (
User) и механизме сессий. Когда пользователь входит в систему, Django проверяет его учетные данные и создает сессию, сохраняя в ней идентификатор пользователя.
Процесс можно разделить на несколько шагов:
Пользователь вводит логин и пароль.
Django проверяет данные через аутентификационный бэкенд.
Если данные верны, Django создает сессию.
При каждом запросе Django проверяет, авторизован ли пользователь.
🚩Основные компоненты системы аутентификации
🟠Модель пользователя (`User`)
Django предоставляет встроенную модель пользователя django.contrib.auth.models.User. Она содержит:
username, email, password
is_staff, is_superuser, is_active
date_joined, last_login
from django.contrib.auth.models import User
# Создание пользователя
user = User.objects.create_user(username="admin", password="12345")
user.email = "admin@example.com"
user.save()
# Проверка пароля
print(user.check_password("12345")) # True
🟠Аутентификация (`authenticate`)
Django использует функцию authenticate() для проверки учетных данных.
from django.contrib.auth import authenticate
user = authenticate(username="admin", password="12345")
if user is not None:
print("Успешный вход!")
else:
print("Ошибка аутентификации!")
🟠Вход и выход (`login` / `logout`)
После успешной аутентификации пользователя можно "впустить" с помощью login().
from django.contrib.auth import login, logout
def user_login(request):
user = authenticate(username="admin", password="12345")
if user:
login(request, user) # Создает сессию
return "Пользователь вошел!"
return "Ошибка входа"
def user_logout(request):
logout(request) # Удаляет сессию
return "Пользователь вышел!"
🟠Проверка аутентификации
Во вьюхах можно проверить, авторизован ли пользователь
if request.user.is_authenticated:
print("Пользователь залогинен:", request.user.username)
else:
print("Гость")
Для защиты маршрутов можно использовать декоратор @login_required:
from django.contrib.auth.decorators import login_required
@login_required
def profile(request):
return "Это страница профиля!"
🚩Настройка аутентификации
🟠Настройки в `settings.py`
Django по умолчанию использует django.contrib.auth.backends.ModelBackend для аутентификации через базу данных. Можно добавить кастомные бэкенды:
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend', # Обычная аутентификация
]
🟠Изменение модели пользователя
Если стандартной модели User недостаточно, можно создать кастомную модель
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
phone_number = models.CharField(max_length=15, unique=True)
# В settings.py указываем свою модель
AUTH_USER_MODEL = "myapp.CustomUser"
🟠Разрешения и группы
Django поддерживает группы пользователей и права доступа.
if user.has_perm("app_name.permission_codename"):
print("У пользователя есть разрешение!")
Использование групп
from django.contrib.auth.models import Group
group = Group.objects.create(name="Editors") # Создаем группу
user.groups.add(group) # Добавляем пользователя в группу
Ставь 👍 и забирай 📚 Базу знаний13 110
Ищу желающих заполнять карточки товаров на ВБ!
Работа полностью на удаленке с зп до150 000 рублей в месяц.
Без опыта, нужен только телефон, занятость 3-6 часов в день.
Всему обучат на бесплатном курсе и после возьму на работу:
✅ 3 дня уроков по 30 минут
✅ Домашки с проверкой и оплатой бонусами
✅ Плачу 10 тыс за каждую выполненную домашку
Все кто пройдет курс, получат сертификат от школы с образовательной лицензией.
⚡ Набор заканчивается завтра.
👍 Для регистрации жмите кнопку "Зарегистрироваться":
Зарегистрироваться
#реклама 16+
course.wildmanager.ru
О рекламодателе
13 110
🤔 Как прервать выполнение цикла?
С помощью инструкции, которая немедленно завершает цикл и выходит из него, независимо от условия.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
13 110
🤔 Как проверить, что значение есть в словаре в Python?
В Python можно проверять наличие ключа или значения в словаре разными способами.
🟠Проверка наличия ключа (`in`)
Самый быстрый и правильный способ — проверять ключи (
keys), так как доступ к ним O(1).
data = {"name": "Alice", "age": 25, "city": "New York"}
# Проверяем, есть ли ключ "age"
if "age" in data:
print("Ключ найден!")
Вывод
Ключ найден!Не надо проверять так
if data.get("age") is not None: # ❌ Работает, но `in` быстрее
🟠Проверка наличия значения (`in values()`)
Если нужно проверить значение, используем values()
if 25 in data.values():
print("Значение найдено!")
Вывод
Значение найдено!🟠Проверка и ключа, и значения (`items()`) Если нужно проверить пару (ключ, значение)
if ("age", 25) in data.items():
print("Пара (ключ, значение) найдена!")
Ставь 👍 и забирай 📚 Базу знаний13 110
Скидка 50% на менеджер паролей Пассворк
Чёрная пятница в Пассворке — скидка 50% на покупку коробочного решения до 5 декабря.
Что даёт Пассворк вашей компании
Централизованное управление конфиденциальными данными. Всё остаётся в вашей инфраструктуре. Сотрудники быстро находят нужную информацию, администраторы управляют всей системой — полный контроль и безопасность.
Почему Пассворк
• Включён в единый реестр Минцифры
• Имеет лицензии ФСТЭК и ФСБ
• Качественная и оперативная поддержка
• Все пароли и секреты хранятся на ваших серверах
• Регулярные обновления и сопровождение на каждом этапе
• Опыт внедрения в системообразующие предприятия страны
• Сертифицирован с многими другими российскими решениями
Пассворк создан для компаний и государственных учреждений, которым нужна проверенная безопасность.
Получить скидку
#реклама 16+
passwork.ru
О рекламодателе
13 110
🤔 Как работает SQL JOIN?
JOIN объединяет строки из двух и более таблиц по общим колонкам (чаще всего по ключам). База находит совпадения и возвращает комбинированный набор данных в соответствии с типом JOIN.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
13 110
🤔 Что делать если нужно перехватить исключение, выполнить действия и опять возбудить это же исключение?
Если нужно:
Перехватить исключение
Выполнить какие-то действия (лог, очистка, уведомление и т. д.)
Снова выбросить это же исключение
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() # Гарантированно закроет файл
Ставь 👍 и забирай 📚 Базу знаний13 110
🤔 Как получить список атрибутов объекта?
Можно воспользоваться универсальными функциями для получения всех доступных атрибутов объекта. Это помогает в отладке и динамическом программировании.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
13 110
Запустите рекламу в телеграм-каналах с Яндекс Директом
Перфоманс-реклама теперь в телеграм-каналах ⚡
Яндекс Директ знает, как привлечь целевую аудиторию 💰👌
Попробовать
#реклама
yandex.ru
О рекламодателе
13 110
🤔 Что такое 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).
➖Неправильное управление куки может привести к утечкам данных.
Ставь 👍 и забирай 📚 Базу знаний
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
