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 104 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 9 745-o'rinni va Rossiya mintaqasida 50 714-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

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

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

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 8.62% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.62% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 129 marta ko‘riladi; birinchi sutkada odatda 737 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 10 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 104
Obunachilar
-324 soatlar
-137 kunlar
-5330 kunlar
Postlar arxiv
🤔 Какие объекты можно положить в множество? В 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
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как ищет модули при импорте? Ищет модули в следующем порядке: 1. Текущая рабочая директория: сначала проверяет текущую директорию. 2. Переменная окружения PYTHONPATH: ищет в путях, указанных в переменной. 3. Стандартные каталоги Python: такие как lib/pythonX.X/site-packages. 4. Пользовательские директории: при необходимости добавленные через sys.path.append(). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Почему поиск по ключам в словаре работает быстро? В Python словари (dict) работают очень быстро, потому что они используют хеш-таблицы. Это позволяет находить значения по ключу в константное время O(1) в большинстве случаев. Давайте разберемся, как это работает. 🟠Как устроен словарь в Python? Словарь (dict) — это структура данных, которая хранит пары ключ → значение. Например:
data = {"name": "Alice", "age": 25, "city": "New York"}
print(data["age"])  # 25
🟠Как работает хеш-таблица? Основной принцип: Хеш-функция (hash()) вычисляет уникальное число (хеш) для ключа. Используется массив (таблица), где данные хранятся по индексам, связанным с хешем. Поиск по ключу — это просто вычисление хеша и обращение к нужному индексу.
print(hash("age"))  # Например, вернет 328847234 (будет разным при каждом запуске)
Когда мы пишем
value = data["age"]
🟠Почему поиск занимает O(1)? Нет линейного поиска: вместо перебора всех элементов Python сразу вычисляет, где находится нужное значение. Операция доступа занимает фиксированное время: hash() + обращение по индексу. Даже при большом количестве элементов скорость остается высокой. Добавим 1 миллион элементов и посмотрим скорость поиска:
import time

data = {i: i * 2 for i in range(1_000_000)}

start = time.time()
print(data[999_999])  # Быстро находит ключ!
end = time.time()

print("Время поиска:", end - start)  # Около 0.000001 сек
🟠Что если хеши совпадут? (Коллизии) Иногда два разных ключа могут иметь одинаковый хеш (редко, но возможно). Тогда Python использует связанный список (chaining) или перехеширование.
print(hash("abc") % 10)  # Например, 5
print(hash("xyz") % 10)  # Тоже 5 (редко, но бывает)
Ставь 👍 и забирай 📚 Базу знаний

🤔 Для чего нужны миксины? Миксины используются для добавления функциональности к классам без необходимости наследования. Это композиционный подход, где класс "смешивается" с одним или несколькими миксинами, чтобы расширить свои возможности. Примеры: 1. Реализация общих функций, таких как логирование. 2. Добавление методов для работы с базами данных или сериализацией. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как в 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)  # Добавляем пользователя в группу
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое модульное программирование? Это подход к разработке программного обеспечения, при котором приложение разбивается на отдельные модули (части), каждый из которых решает конкретную задачу. Преимущества: 1. Улучшение читаемости и тестируемости кода. 2. Повторное использование модулей в других проектах. 3. Упрощение отладки и сопровождения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

⚡ Когда говорят, что Python слишком простой язык, на сцену выходит канал Python Learning Здесь легко научиться: ▪️Превращать
Когда говорят, что Python слишком простой язык, на сцену выходит канал Python Learning Здесь легко научиться: ▪️Превращать текст в голос ▪️Определять локацию по IP ▪️Писать телеграм-ботов ▪️Создавать 3D-игры Самый необычный канал про Python, подписывайся@Python_per_month

🤔 Какие есть виды файловых объектов? В Python существует несколько типов файловых объектов, которые используются для работы с различными типами данных. Рассмотрим основные виды файловых объектов и их особенности. 🟠Текстовые файлы (`TextIOWrapper`) Это самый распространённый тип файловых объектов. Такие файлы используются для работы с текстовыми данными и поддерживают строковые операции.
   with open("example.txt", "w", encoding="utf-8") as file:
       file.write("Привет, мир!")  # Записываем текст в файл

   with open("example.txt", "r", encoding="utf-8") as file:
       content = file.read()  # Читаем текст из файла
       print(content)
🟠Бинарные файлы (`BufferedReader`, `BufferedWriter`) Эти файлы используются для работы с двоичными данными (изображениями, видео, аудиофайлами и т. д.).
   with open("image.jpg", "rb") as file:
       binary_data = file.read()  # Читаем файл в бинарном режиме
       print(binary_data[:10])  # Выведем первые 10 байтов

   with open("copy.jpg", "wb") as file:
       file.write(binary_data)  # Записываем данные в новый файл
🟠Файлы ввода-вывода в памяти (`io.StringIO`, `io.BytesIO`) Эти объекты представляют собой файловые буферы, которые хранят данные в оперативной памяти, а не на диске.
   from io import StringIO

   file = StringIO()
   file.write("Привет, мир!")  # Запись данных в буфер
   file.seek(0)  # Перемещаем указатель в начало
   print(file.read())  # Читаем данные из буфера
Пример работы с BytesIO:
   from io import BytesIO

   file = BytesIO()
   file.write(b"Binary data")  # Запись бинарных данных
   file.seek(0)
   print(file.read())  # Чтение данных
🟠Файловые объекты на основе сокетов, пайпов и других источников Python позволяет работать с файловыми объектами, полученными из нестандартных источников, например, сокетов или каналов связи (pipes).
   import socket

   s = socket.socket()
   s.connect(("example.com", 80))
   s.sendall(b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
   response = s.makefile("r", encoding="utf-8")  # Создание файлового объекта
   print(response.readline())  # Читаем первую строку HTTP-ответа
   s.close()
Ставь 👍 и забирай 📚 Базу знаний

🤔 Чем отличается RIGHT, LEFT, INNER JOIN? - LEFT JOIN: возвращает все строки из левой таблицы и соответствующие строки из правой. Несоответствующие строки правой таблицы заполняются NULL. - RIGHT JOIN: возвращает все строки из правой таблицы и соответствующие строки из левой. Несоответствующие строки левой таблицы заполняются NULL. - INNER JOIN: возвращает только строки, которые соответствуют условиям соединения в обеих таблицах. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что в python не является объектом? В Python практически всё является объектом: числа, строки, функции, классы, модули и даже сам интерпретатор Python рассматривает их как объекты. Однако есть несколько вещей, которые объектами не являются: 🟠Операторы и синтаксические конструкции Операторы (+, -, *, and, or, not и т. д.) сами по себе не являются объектами. Они — часть синтаксиса языка и не имеют представления в виде объектов в памяти.
   a = 10 + 5  # Оператор "+" выполняет сложение, но сам по себе не объект
   print(type(+))  # Ошибка: нельзя получить тип оператора
🟠Ключевые слова (keywords) Встроенные ключевые слова Python (if, else, while, for, def, class, return и т. д.) не являются объектами. Они зарезервированы интерпретатором и используются для управления потоком выполнения кода.
   print(type(if))  # Ошибка: ключевое слово не является объектом
🟠Идентификаторы переменных Хотя переменные ссылаются на объекты, сами идентификаторы (имена переменных) — это просто ссылки, а не объекты.
   x = 42  # x — это имя, а не объект
   print(type(x))  # Это целое число, но само имя "x" объектом не является
🟠Аннотации типов во время компиляции Аннотации типов в Python, такие как list[str], не создают объекты во время компиляции кода. Они интерпретируются только на уровне анализа типов.
   def func(x: int) -> str:
       return str(x)
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как с помощью одного запроса можно выбрать данные из двух таблиц? Используйте объединение таблиц через UNION или соединения JOIN. Например, SELECT * FROM table1 UNION SELECT * FROM table2. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

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

🤔 Как выбрать данные из двух таблиц без метода JOIN()? Используйте подзапросы, например, в WHERE или SELECT, чтобы извлекать связанные данные. Пример: вложенный запрос вместо явного соединения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что делает git commit? Команда git commit используется для фиксации изменений в локальном репозитории Git. Она сохраняет текущие изменения в коде (добавленные, изменённые или удалённые файлы), которые были подготовлены с помощью команды git add. По сути, git commit создаёт "снимок" текущего состояния проекта, который можно использовать для отслеживания истории изменений, их анализа или отката к более ранним версиям. 🚩Как это работает? Когда вы работаете с Git, ваши изменения сначала попадают в рабочую директорию. После этого, чтобы зафиксировать их, вы добавляете их в индекс (staging area) с помощью команды git add. Только те изменения, которые находятся в индексе, будут включены в следующий коммит. Команда git commit фиксирует все изменения из staging area и сохраняет их как новую версию в истории проекта. 🚩Почему это нужно? 🟠История изменений Каждый коммит сохраняет подробную информацию о том, что было изменено, когда и почему. Это позволяет отслеживать развитие проекта. 🟠Версионность Можно вернуться к любой точке в истории и восстановить состояние проекта. 🟠Совместная работа В командной разработке коммиты позволяют другим разработчикам видеть изменения и их причины. 🟠Разделение задач Коммиты разбивают изменения на логические единицы, что упрощает их понимание.
# Шаг 1. Внести изменения в файл
echo "Hello, Git!" > example.txt

# Шаг 2. Добавить изменения в staging area
git add example.txt

# Шаг 3. Зафиксировать изменения
git commit -m "Добавил файл example.txt с приветственным текстом"
Ставь 👍 и забирай 📚 Базу знаний

🤔 Каким образом можно найти "медленный запрос" и проанализировать его в PostgreSQL? 1. Включите логирование медленных запросов: настройте параметр log_min_duration_statement. 2. Используйте EXPLAIN или EXPLAIN ANALYZE для анализа выполнения запроса. 3. Проверьте индексирование и оптимизацию запросов. 4. Анализируйте статистику работы базы через pg_stat_statements. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как устроен протокол HTTP? HTTP (HyperText Transfer Protocol) — это протокол передачи данных, используемый для взаимодействия между клиентом (например, браузером) и сервером. Он является основой работы веба. Протокол устроен как текстовый, клиент-серверный и бесстатичный. 🚩Основные принципы HTTP 🟠Клиент-серверная архитектура Клиент (например, браузер) отправляет запросы серверу, сервер отвечает на них. 🟠Бесстатичность Каждый запрос независим от других. Сервер не сохраняет состояние клиента между запросами. Для сохранения состояния используются сессии, куки или токены. 🟠Текстовый протокол HTTP-запросы и ответы передаются в виде текста, что делает их легко читаемыми. 🚩Структура HTTP-запроса 🟠Стартовая строка Указывает метод, URL и версию протокола.
   GET /index.html HTTP/1.1
   
🟠Заголовки (headers) Дополнительная информация о запросе.
   Host: www.example.com
   User-Agent: Mozilla/5.0
   Accept: text/html
   
🟠Тело запроса (body) Используется в некоторых методах (например, POST), чтобы передать данные на сервер.
   name=John&age=30
   
🚩Структура HTTP-ответа 🟠Стартовая строка Указывает версию протокола, код состояния и текстовое описание.
   HTTP/1.1 200 OK
   
🟠Заголовки (headers) Дополнительные данные, например, тип содержимого.
   Content-Type: text/html
   Content-Length: 348
   
🟠Тело ответа (body) Содержит данные, которые сервер отправляет клиенту (например, HTML-страница).
   <html>
       <body>Hello, world!</body>
   </html>
   
🚩Основные HTTP-методы 🟠GET Запрашивает данные с сервера. Данные передаются в URL. 🟠POST Отправляет данные на сервер (например, формы). 🟠PUT Обновляет данные на сервере или создаёт, если они отсутствуют. 🟠DELETE Удаляет данные на сервере. 🟠HEAD Аналог GET, но возвращает только заголовки без тела ответа. 🟠OPTIONS Возвращает информацию о поддерживаемых методах для ресурса. 🟠PATCH Частичное обновление ресурса. Ставь 👍 и забирай 📚 Базу знаний

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

⚡ Новые каналы с вакансиями и стажировками для джунов В этих каналах публикуются все свежие вакансии и стажировки 🔺 ВАКАНСИИ
Новые каналы с вакансиями и стажировками для джунов В этих каналах публикуются все свежие вакансии и стажировки 🔺 ВАКАНСИИ
Горячие вакансии с привлекательными офферами для джуниор разработчиков, аналитиков, дизайнеров и QA-специалистов.
👉 ПОДПИСАТЬСЯ 🔺СТАЖИРОВКИ
Стажировки для начинающих специалистов в IT независимо от возраста!
👉 ПОДПИСАТЬСЯ 🔺Junojobs
Вакансии и стажировки для junior-разработчиков на удалёнке.
👉 ПОДПИСАТЬСЯ 🔺БИГТЕХ
Junior вакансии и стажировки в крупнейших IT-компаниях мира: NVidia, Apple, T-банк, Яндекс, Google и т. д.
👉 ПОДПИСАТЬСЯ 🔺Макс из < codereview />
Эксперименты про трудоустройство в IT, советы для быстрого поиска работы и офферы для джунов.
👉 ПОДПИСАТЬСЯ

🤔 Что такое 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). ➖Неправильное управление куки может привести к утечкам данных. Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие блокировки бывают в Postgres? 1. Row-level locks: блокируют отдельные строки (например, FOR UPDATE, FOR SHARE). 2. Table-level locks: блокируют таблицы на операции (ACCESS SHARE, ROW EXCLUSIVE, EXCLUSIVE и другие). 3. Advisory locks: пользовательские блокировки, задаваемые вручную. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний