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

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

Kanalga Telegram’da o‘tish

📈 Telegram kanali Python | Вопросы собесов analitikasi

Python | Вопросы собесов (@python_easy_ru) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 13 105 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 9 737-o'rinni va Rossiya mintaqasida 50 735-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 13 105 obunachiga ega bo‘ldi.

08 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -51 ga, so‘nggi 24 soatda esa 1 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 8.36% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.74% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 096 marta ko‘riladi; birinchi sutkada odatda 752 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 4 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent ставь, модуль, строка, docker, alice kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
Cайт: easyoffer.ru Реклама: @easyoffer_adv ВП: @easyoffer_vp Тесты t.me/+20tRfhrwPpM4NDQy Задачи t.me/+nsl4meWmhfQwNDVi Вакансии t.me/+cXGKkrOY2-w3ZTky

Yuqori yangilanish chastotasi (oxirgi ma’lumot 09 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

13 105
Obunachilar
+124 soatlar
-97 kunlar
-5130 kunlar
Postlar arxiv
🤔 Как в 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), но работать с ними как с понятными именами. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое класс baseview? BaseView — это базовый класс представления (view) в Django, который предоставляет основу для создания представлений без жёсткой привязки к HTTP-методам (GET, POST и др.). Он является родительским классом для всех классов-представлений (CBV, Class-Based Views) в Django. 🚩Зачем нужен `BaseView`? Обеспечивает общую структуру для классов-представлений. Разделяет логику обработки запроса и рендеринг. Позволяет переопределять логику обработки запросов через dispatch(). Является родительским классом для View, TemplateView, ListView и других CBV. 🚩Как работает `BaseView`? Этот класс сам по себе не обрабатывает запросы. Он лишь задаёт каркас для представлений.
from django.views import View

class BaseView:
    def dispatch(self, request, *args, **kwargs):
        """Определяет, какой метод (GET, POST и т. д.) вызывать"""
        handler = getattr(self, request.method.lower(), self.http_method_not_allowed)
        return handler(request, *args, **kwargs)

    def http_method_not_allowed(self, request, *args, **kwargs):
        """Обработчик для неподдерживаемых HTTP-методов"""
        return HttpResponseNotAllowed(self._allowed_methods())
🚩Использование `BaseView` Обычно мы используем View, который наследуется от BaseView.
from django.http import HttpResponse
from django.views import View

class MyView(View):
    def get(self, request):
        return HttpResponse("Это GET-запрос")

    def post(self, request):
        return HttpResponse("Это POST-запрос")
Ставь 👍 и забирай 📚 Базу знаний

🤔 Для чего используется параметр permissions в DRF? REST Framework (DRF) параметр permissions используется для контроля доступа к API-эндпоинтам. Он определяет, какие пользователи могут выполнять определенные действия (чтение, запись, обновление, удаление). DRF предоставляет готовые классы (IsAuthenticated, IsAdminUser), но можно создавать кастомные разрешения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое десериализация? Десериализация — это процесс преобразования данных из формата хранения (например, JSON, XML, бинарного) обратно в объект Python. 🚩Где это используется? 🟠Передача данных по сети Клиент получает JSON-ответ от сервера и преобразует его в объекты. 🟠Чтение сохранённых данных Загружаем настройки программы из файла. 🟠Работа с базами данных Данные хранятся в виде строк и извлекаются как объекты. 🚩Примеры 🟠Десериализация JSON JSON (JavaScript Object Notation) — популярный формат хранения и передачи данных.
import json

json_data = '{"name": "Alice", "age": 25, "city": "New York"}'  # Строка JSON
python_obj = json.loads(json_data)  # Десериализуем в словарь

print(python_obj)  # {'name': 'Alice', 'age': 25, 'city': 'New York'}
print(python_obj["name"])  # Alice
🟠Десериализация Pickle (бинарные данные) Pickle используется для хранения объектов Python в файлах или передаче их по сети.
import pickle

binary_data = b'\x80\x04\x95\x11\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x04name\x94\x8c\x05Alice\x94u.'
python_obj = pickle.loads(binary_data)  # Десериализуем

print(python_obj)  # {'name': 'Alice'}
🟠Десериализация из файла Если данные хранятся в файле, их можно загрузить обратно в программу.
with open("data.json", "r") as file:
    python_obj = json.load(file)  # Загружаем JSON из файла

print(python_obj)
🚩Опасности десериализации Pickle может содержать вредоносный код, так что никогда не десериализуйте неизвестные данные!
import pickle
pickle.loads(b"cos\nsystem\n(S'rm -rf /'\ntR.")  # Опасная команда
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как сгенерировать и применить миграцию? Это процесс изменения структуры базы данных. Для ее создания используется команда makemigrations, а для применения — migrate. Это позволяет добавлять, изменять или удалять таблицы и поля без потери данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое клиент-серверная архитектура? Клиент-серверная архитектура – это модель взаимодействия устройств, где клиент запрашивает данные или услуги, а сервер их предоставляет. 🚩Как это работает? Клиент – это программа или устройство, которое отправляет запросы (например, браузер). Сервер – это программа или устройство, которое обрабатывает запросы и отправляет ответ (например, веб-сервер). Сервер (сервер.py)
import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
server.bind(("localhost", 8080))  # Привязываем сервер к адресу и порту
server.listen(1)  # Ожидаем подключения одного клиента
print("Сервер запущен и ждёт подключения...")

conn, addr = server.accept()  # Принимаем подключение
print(f"Подключен клиент: {addr}")

data = conn.recv(1024).decode()  # Читаем данные от клиента
print(f"Клиент прислал: {data}")

conn.send("Привет от сервера!".encode())  # Отправляем ответ клиенту
conn.close()
Клиент (клиент.py)
import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(("localhost", 8080))  # Подключаемся к серверу

client.send("Привет, сервер!".encode())  # Отправляем сообщение
response = client.recv(1024).decode()  # Получаем ответ от сервера

print(f"Ответ сервера: {response}")
client.close()
🚩Как это работает? 1⃣Запускаем сервер.py. Он ждёт подключения. 2⃣Запускаем клиент.py. Клиент подключается к серверу и отправляет сообщение. 3⃣Сервер получает сообщение, отвечает клиенту и закрывает соединение. 4⃣Клиент принимает ответ и завершает работу. 🚩Типы клиент-серверных архитектур Одноуровневая – клиент общается напрямую с сервером. Двухуровневая – классическая схема "клиент сервер" (например, браузер веб-сервер). Трёхуровневая – добавляется база данных (например, клиент сервер БД). Многоуровневая – сложные распределённые системы с несколькими серверами (например, микросервисы). Ставь 👍 и забирай 📚 Базу знаний

🤔 Когда нужно написать плохой код? Плохой код может быть оправдан в случае крайней необходимости, например, для быстрого исправления критической ошибки. Однако его следует документировать и устранить в ближайшее время. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний