Python | Вопросы собесов
12.7K subscribers
44 photos
5 videos
1 file
1.64K links
Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy

Контакт для рекламы: @easyoffer_adv
Download Telegram
🤔 Что известно про reduce?

reduce — функция, которая применяет функцию аккумуляции к последовательности, сворачивая её к одному значению. Используется, например, для суммирования, умножения или объединения элементов.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥3
🤔 Что такое десериализация?

Десериализация — это процесс преобразования данных из формата хранения (например, 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.") # Опасная команда


Ставь 👍 и забирай 📚 Базу знаний
👍2
🤔 Что такое RESTful?

RESTful — это термин, обозначающий API, реализующее принципы REST.
Такой API:
- работает с ресурсами;
- использует понятные URL;
- использует HTTP-методы по назначению (например, GET для получения, POST для создания);
- возвращает стандартизированные ответы.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍3
🤔 Объясни как происходит обработка HTTP запросов на Django

Когда пользователь отправляет HTTP-запрос (например, открывает страницу сайта), Django проходит несколько этапов обработки, прежде чем вернуть ответ.

🚩Подробный разбор обработки HTTP-запроса в Django

🟠Запрос приходит в WSGI/ASGI сервер
Когда клиент (браузер, API) отправляет запрос, его принимает WSGI/ASGI-сервер (Gunicorn, Daphne).
Если проект синхронный → работает через WSGI (wsgi.py).
Если проект асинхронный → через ASGI (asgi.py).
GET /hello/ HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0


🟠Django создаёт `HttpRequest` объект
Django превращает HTTP-запрос в объект HttpRequest, который передаётся в view.
def my_view(request):
print(request.method) # 'GET'
print(request.path) # '/hello/'
print(request.GET) # {'name': 'Alice'}


🟠Middleware (промежуточная обработка)
Прежде чем запрос дойдёт до view, Django проходит через мидлвари, которые могут:
Проверять авторизацию (AuthenticationMiddleware).
Защищать от CSRF (CsrfViewMiddleware).
Перенаправлять запросы (CommonMiddleware).
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
]


🟠Поиск `view` в `urls.py`
Django ищет, какая функция (view) должна обработать этот URL.
from django.urls import path
from myapp.views import hello_view

urlpatterns = [
path("hello/", hello_view), # Запрос "/hello/" попадёт в hello_view
]


🟠Выполнение `view` (контроллера)
Когда Django находит подходящее представление (view), оно вызывается.
from django.http import HttpResponse

def hello_view(request):
return HttpResponse("Привет, мир!")


🟠Формирование и обработка ответа
Django берёт HttpResponse и передаёт его обратно через middleware (например, сжатие, защита, заголовки безопасности).
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 12

Привет, мир!


🟠WSGI/ASGI сервер отправляет ответ клиенту
На последнем этапе WSGI/ASGI-сервер отправляет ответ обратно браузеру или API-клиенту.


🚩Краткая схема обработки запроса

Клиент (браузер) → WSGI/ASGI → Django Middleware → URL Dispatcher → View → Response → Клиент


Ставь 👍 и забирай 📚 Базу знаний
👍3
🤔 Что такое функция?

Функция — это блок кода, который можно многократно вызывать по имени. Она может принимать аргументы, выполнять действия и возвращать результат. Функции позволяют структурировать код, избегать дублирования и повышать читаемость.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍2🔥1
🤔 Что такое GET?

GET — это HTTP-метод, который используется для запроса данных с сервера.
Когда ты открываешь веб-сайт или вводишь URL в браузере — это GET-запрос. Браузер запрашивает страницу у сервера, и сервер возвращает данные.

🚩Как работает GET-запрос?

1⃣Клиент (браузер, программа) отправляет GET-запрос на сервер.
2⃣Сервер обрабатывает запрос и возвращает ответ (HTML-страницу, JSON-данные, картинку и т. д.).
3⃣Данные отображаются пользователю.

🚩Пример GET-запроса

Когда ты заходишь на https://example.com/users, браузер отправляет:
GET /users HTTP/1.1
Host: example.com


Ответ сервера
[
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"}
]


🚩Особенности GET-запроса

🟠Читаемый URL
параметры передаются в строке запроса (например, ?id=123).
🟠Безопасен
GET не изменяет данные на сервере.
🟠Можно кэшировать
браузеры и серверы могут сохранять результаты GET-запросов.
🟠Ограниченная длина URL
слишком длинные запросы могут не работать.
🟠Не подходит для конфиденциальных данных
передача пароля в URL (?password=123) небезопасна.

🚩GET-запрос с параметрами

Если нужно передать параметры, они добавляются в URL:
GET /search?q=python&page=2


В Python можно отправить GET-запрос с помощью библиотеки requests
import requests

response = requests.get("https://api.example.com/users", params={"id": 123})
print(response.json()) # Получаем ответ в JSON


Ставь 👍 и забирай 📚 Базу знаний
🤔 Как избежать конфликтов при импорте файлов?

– Не использовать import *,
– Явно указывать имена,
– Избегать одинаковых имён в разных модулях,
– Использовать пространства имён и псевдонимы.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Чем отличаются методы сокрытия?

Методы и атрибуты класса могут быть скрыты от внешнего использования с помощью различных уровней сокрытия. Сокрытие реализуется с помощью соглашений об именах, а не с помощью жесткой инкапсуляции, как в некоторых других языках программирования. Основные уровни сокрытия включают публичные, защищенные и приватные методы и атрибуты.

🚩Публичные методы и атрибуты


Доступны из любого места, как внутри класса, так и за его пределами. Их имена не начинаются с подчеркиваний.
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


Ставь 👍 и забирай 📚 Базу знаний
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какие данные валидируют с помощью Pydantic?

Библиотека Pydantic валидирует и преобразует данные согласно типам:
- Примитивы (str, int, float, bool)
- Коллекции (List, Dict, Tuple, Set)
- Даты и UUID
- Вложенные модели
Pydantic полезен при создании API (например, с FastAPI), где входящие данные из запросов должны быть проверены и типизированы.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что такое 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).
➖Неправильное управление куки может привести к утечкам данных.

Ставь 👍 и забирай 📚 Базу знаний
👍1