fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید 👈

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

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

رفتن به کانال در Telegram

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads

نمایش بیشتر

📈 تحلیل کانال تلگرام Python | Вопросы собесов

کانال Python | Вопросы собесов (@python_easy_ru) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 12 637 مشترک است و جایگاه 9 922 را در دسته فناوری و برنامه‌ها و رتبه 51 155 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 12 637 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 13 اکتبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -115 و در ۲۴ ساعت گذشته برابر -6 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 6.04% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 4.18% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 763 بازدید دریافت می‌کند. در اولین روز معمولاً 528 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 2 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند ставь, модуль, строка, docker, alice تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
“Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads”

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 14 اکتبر, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

12 637
مشترکین
-624 ساعت
-357 روز
-11530 روز
آرشیو پست ها
🤔 В чем отличия 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
Ставь 👍 и забирай 📚 Базу знаний

🤔 Где лучше расположить логику — в моделях или сериализаторе? Выбор зависит от типа логики: - В моделях хранят бизнес-логику, связанную с данными (валидация, вычисления, обработка) - В сериализаторах хранят логику, связанную с API (конвертация данных, валидация полей) Если логика нужна в нескольких местах, лучше разместить её в моделях. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Для чего могут применять конструкцию 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} секунд")
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое толстые модели в Django? Это подход в Django, когда бизнес-логика приложения хранится в моделях. Вместо того, чтобы помещать логику в представления (views) или сериализаторы (serializers), её выносят в модели, добавляя: - Методы для обработки данных - Логику валидации и вычислений - Кастомные save() методы Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Встроенные функции 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([]))  # Методы списка
Ставь 👍 и забирай 📚 Базу знаний

🔍Тестовое собеседование на Middle Python-разработчика в четверг 13 марта(в четверг) в 19:00 по мск приходи онлайн на открыто
🔍Тестовое собеседование на Middle Python-разработчика в четверг 13 марта(в четверг) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика. Как это будет: 📂 Даня, старший разработчик СберМаркете будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Даня будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Дане Что узнаешь на прямом эфире от ШОРТКАТ: 1. Чего ждут от кандидатов на Middle позиции в Python-разработке 2. Какие вопросы задают на интервью и зачем 3. Как подготовиться к собесу, чтобы получить оффер Это бесплатно? Бесплатно Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid:2Vtzqwe95gK

🤔 Как в Django реализована работа с WebSocket? Изначально не поддерживает WebSocket, но для работы с ним используется Django Channels. Это асинхронное дополнение к Django, позволяющее: - Создавать WebSocket-соединения - Обрабатывать события в реальном времени - Использовать Consumers аналогично Views Для работы с Django Channels требуется Redis как брокер сообщений. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Зачем нужен volume в docker? В Docker volume (том) — это специальное место для хранения данных контейнера, которое не исчезает при перезапуске или удалении контейнера. 🚩Зачем нужен `volume`? Данные не теряются при удалении контейнера Общий доступ: несколько контейнеров могут использовать один и тот же volume Производительность: тома быстрее, чем хранение внутри контейнера Разделение кода и данных: удобно для баз данных и логов 🚩Как создать `volume`? Способ 1: Автоматическое создание при запуске контейнера
docker run -d -v my_volume:/app/data my_container
Способ 2: Создать том отдельно и подключить его
docker volume create my_volume
docker run -d -v my_volume:/app/data my_container
Способ 3: Использовать путь на хосте (bind-mount)
docker run -d -v /home/user/data:/app/data my_container
🚩Как посмотреть список томов?
docker volume ls  # Покажет все тома
docker volume inspect my_volume  # Информация о томе
🚩Как удалить `volume`? Важно: при удалении тома данные удаляются безвозвратно!
docker volume rm my_volume  # Удаление одного тома
docker volume prune  # Удаление всех неиспользуемых томов
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как сделать кастомную авторизацию в Django? Кастомная авторизация реализуется через настройку модели пользователя и аутентификацию. Для этого можно: - Создать свою модель пользователя, унаследовавшись от AbstractUser или AbstractBaseUser - Настроить бэкенд аутентификации, создав кастомный класс и переопределив authenticate - Добавить JWT-токены с помощью SimpleJWT или другого механизма токенов Это позволяет гибко управлять логикой авторизации, например, по email вместо имени пользователя. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое моржовый оператор? Моржовый оператор (:=) – это новый оператор, появившийся в Python 3.8, который позволяет присваивать значение переменной прямо внутри выражения. 🚩Как он работает? Обычно мы записываем код так:
value = len(my_list)  # Сначала присваиваем
if value > 10:  # Потом используем
    print("Список большой")
С := можно совместить оба действия
if (value := len(my_list)) > 10:
    print("Список большой")
🚩Где использовать? В циклах (избегаем лишних вычислений). Вместо:
data = input("Введите строку: ")
while data != "exit":
    print("Вы ввели:", data)
    data = input("Введите строку: ")
С := можно записать короче:
while (data := input("Введите строку: ")) != "exit":
    print("Вы ввели:", data)
В if и while (проверяем и присваиваем одновременно) Без :=
text = input("Введите слово: ")
if len(text) > 5:
    print(f"Слово длинное ({len(text)} символов)")
С :=:
if (length := len(text)) > 5:
    print(f"Слово длинное ({length} символов)")
В списковых включениях (list comprehensions) Без :=:
numbers = [random.randint(1, 100) for _ in range(10)]
filtered = [num for num in numbers if num % 2 == 0]
С :=:
filtered = [num for _ in range(10) if (num := random.randint(1, 100)) % 2 == 0]
🚩Когда не стоит использовать `:=`? Если код становится сложнее для чтения
if (a := func()) and (b := another_func(a)) > 10:
    ...
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие есть варианты определения модели пользователя в Django? Можно определить модель пользователя несколькими способами: 1. Использовать стандартную модель User (django.contrib.auth.models.User) 2. Расширить AbstractUser — добавляет кастомные поля, сохраняя стандартную функциональность 3. Наследоваться от AbstractBaseUser — полный контроль над моделью пользователя 4. Создать кастомного пользователя с OneToOneField к стандартному User Выбор зависит от гибкости проекта и требований к пользователям. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что за функция sleep()? Функция sleep() из модуля time приостанавливает выполнение программы на заданное количество секунд. 🚩Как использовать `sleep()` в Python? Функция sleep() принимает один аргумент** — число секунд (может быть дробным).
import time

print("Программа началась...")
time.sleep(3)  # Ожидание 3 секунды
print("3 секунды прошло!")
🚩Где используется `sleep()`? Ожидание в цикле (имитация загрузки)
for i in range(5, 0, -1):
    print(i)
    time.sleep(1)  # Задержка 1 секунда между выводами
print("Старт!")
Запросы к серверу с паузами (чтобы не забанили)
import time
import requests

for i in range(3):
    response = requests.get("https://example.com")
    print(f"Запрос {i+1}: статус {response.status_code}")
    time.sleep(2)  # Ждём 2 секунды перед следующим запросом
Искусственная задержка перед повторной попыткой
for attempt in range(3):
    print(f"Попытка {attempt + 1}...")
    time.sleep(2)  # Ожидание 2 секунды перед новой попыткой
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое работа с сетью? Работа с сетью включает в себя обмен данными между клиентом и сервером через HTTP, WebSocket или другие протоколы. В Django это реализуется через запросы к API, обработку ответов, аутентификацию и защиту данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как работает хеш мап? Хеш-таблица (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"]  # Мгновенно удаляем
Ставь 👍 и забирай 📚 Базу знаний

🤔 Чем APIView отличается от ViewSet? - APIView — это классический контроллер, где каждый метод (get, post, put, delete) нужно определять вручную. - ViewSet — это более абстрактный подход, где основные CRUD-операции реализуются автоматически, используя роутеры. ViewSet удобнее для REST API, так как требует меньше кода. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие есть методы чтобы реализовать протокол итерирования данных? Для реализации протокола итерирования данных в 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)
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое ViewSet и для чего используется? Это обобщенный контроллер в Django REST Framework, который объединяет CRUD-операции (Create, Retrieve, Update, Delete) в один класс. Он упрощает работу с API, автоматически обрабатывая маршруты и снижая дублирование кода. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как избежать конфликтов при импорте файлов? Когда в проекте много файлов, могут возникать конфликты импортов. Python ищет модули в определённом порядке, и если несколько файлов имеют одинаковые имена или неправильные пути, может возникнуть ошибка. 🚩Способы избежать конфликтов при импорте 🟠Используйте явные пути импорта Вместо
import mymodule  # Может вызвать конфликт, если есть несколько файлов с таким именем
Лучше указывать полный путь в пакетах
from myproject.utils.mymodule import my_function
🟠Избегайте конфликтов имён файлов Если у вас есть файл math.py, импорт import math будет загружать ваш файл, а не стандартный модуль math из Python. - Не называйте файлы именами стандартных модулей: math.py, sys.py, json.py. - Проверьте, какой именно модуль загружается:
  import math
  print(math.__file__)  # Путь к загруженному модулю
  
🟠Добавьте `__init__.py` в пакеты Если у вас есть структура
/myproject
    /utils
        mymodule.py
Решение Добавьте пустой __init__.py в utils/:
/myproject
    /utils
        __init__.py  # Делаем utils пакетом
        mymodule.py
Теперь импорт будет работать
from utils import mymodule
🟠Используйте `sys.path.append()` для указания путей Иногда Python не находит модуль, если он находится вне стандартных путей. Решение Добавьте путь вручную:
import sys
sys.path.append("/path/to/directory")

import mymodule  # Теперь импорт будет работать
🟠Используйте `absolute` и `relative` импорт в пакетах Абсолютный импорт (рекомендуется)
from myproject.utils.mymodule import my_function
Относительный импорт (используется внутри пакетов):
from .mymodule import my_function
🟠Проверяйте `sys.modules` и `sys.path` Если импорт не работает, проверьте, какие модули загружены и где Python ищет файлы
import sys
print(sys.modules.keys())  # Список загруженных модулей
print(sys.path)  # Пути, где Python ищет модули
Ставь 👍 и забирай 📚 Базу знаний

🔍 IT без багов не бывает, но с ними можно жить! Вы тестировщик, разработчик или просто любите IT? Тогда добро пожаловать в I
🔍 IT без багов не бывает, но с ними можно жить! Вы тестировщик, разработчик или просто любите IT? Тогда добро пожаловать в I’m QA, bitch! — канал, который понимает вашу боль. 💥 Что вас ждёт? ✅ Мемы про баги — потому что без смеха в этой профессии не выжить. ✅ Разборы эпичных фейлов — учимся на чужих (и своих) ошибках. ✅ Советы по тестированию — делаем софт стабильнее, а нервы крепче. ✅ Руководство по выживанию в IT — дедлайны, релизы, багрепорты без истерики. 👀 Почему стоит подписаться? 🔸 “Не воспроизводится” — худший ответ на багрепорт, и это здесь понимают. 🔸 Канал поможет стать тем QA, которому доверяют. 🔸 Любовь к IT — с мемами, лайфхаками и порцией иронии в каждом посте. 🔥 Подписывайтесь сейчас — и будьте тем, кто находит баги, а не тем, кто их делает! 👉 Подписаться P.S. Если не подпишитесь, следующая ошибка в продакшн будет на вашей совести. 😏

🤔 Для чего используется IntegerChoices? Это механизм Django, позволяющий использовать числовые значения в моделях, сохраняя их читаемое представление. Например, вместо хранения строковых статусов ("pending", "approved") можно хранить числовые коды (1, 2), но работать с ними как с понятными именами. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний