Python | Вопросы собесов
13.6K subscribers
37 photos
3 videos
1 file
1.16K links
Download Telegram
🤔 Что известно про денормализацию?

Денормализация — это намеренное объединение таблиц или дублирование данных, чтобы:
- сократить количество JOIN-ов;
- повысить скорость чтения;
- упростить логику отчётов.
Минус — сложность поддержки и риска несогласованности данных.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
🤔 Какие есть операторы ограничений?

Ограничения (constraints) в SQL используются для контроля целостности данных в таблицах. Они помогают предотвратить некорректные значения и обеспечить согласованность данных.

🚩`NOT NULL` (Запрещает `NULL`)

Используется, если поле обязательно для заполнения
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL -- Поле name обязательно
);


Нельзя вставить NULL в name
INSERT INTO users (id, name) VALUES (1, NULL);  -- Ошибка!


🚩`UNIQUE` (Гарантирует уникальность значений)

Запрещает дубликаты в столбце
CREATE TABLE users (
id INT PRIMARY KEY,
email VARCHAR(100) UNIQUE -- Email должен быть уникальным
);


Попытка вставить одинаковый email вызовет ошибку
INSERT INTO users (id, email) VALUES (1, '[email protected]');
INSERT INTO users (id, email) VALUES (2, '[email protected]'); -- Ошибка!


Создание UNIQUE на нескольких колонках
CREATE TABLE orders (
user_id INT,
product_id INT,
UNIQUE (user_id, product_id) -- Запрещает заказывать один товар дважды
);


🚩`PRIMARY KEY` (Главный ключ, уникальный идентификатор)

Объединяет NOT NULL + UNIQUE и гарантирует, что строка уникальна.
CREATE TABLE users (
id INT PRIMARY KEY, -- Уникальный идентификатор
name VARCHAR(50)
);


Можно создать PRIMARY KEY на нескольких колонках
CREATE TABLE enrollments (
student_id INT,
course_id INT,
PRIMARY KEY (student_id, course_id) -- Один студент не может записаться дважды на один курс
);


🚩`FOREIGN KEY` (Связь таблиц)

Создаёт связь между таблицами и поддерживает ссылочную целостность.
Есть таблица пользователей (users) и таблица заказов (orders), где user_id в orders должен ссылаться на id в users.
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50)
);

CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(id) -- Связь с таблицей users
);


Что делать при удалении пользователя?
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
🤔 В чем разница между итератором и генератором?

Итератор — это объект, который поддерживает метод `__iter__()` и `__next__()` и позволяет проходить по коллекции элементов. Генератор — это специальный вид итератора, который создается с помощью ключевого слова `yield` и позволяет лениво возвращать элементы по одному, сохраняя состояние между вызовами. Генераторы обычно используются для обработки больших данных, поскольку они не требуют загрузки всего набора данных в память. Итераторы, в свою очередь, могут быть созданы вручную с помощью классов.

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

Пакет (package) в Python — это набор модулей, объединённых в одну директорию. Главное отличие от обычной папки — наличие файла __init__.py, который делает директорию пакетом.

🚩Как создать пакет?

Допустим, мы хотим создать пакет math_utils с модулями для работы с числами.
/my_project
/math_utils ← Это пакет
__init__.py ← Делаем директорию пакетом
arithmetic.py ← Модуль с функциями сложения/вычитания
geometry.py ← Модуль с функциями для работы с фигурами
main.py ← Основной файл программы


Код в arithmetic.py
def add(a, b):
return a + b

def subtract(a, b):
return a - b


Код в geometry.py
def square_area(side):
return side * side


Код в __init__.py
from .arithmetic import add, subtract
from .geometry import square_area


Теперь можно импортировать функции прямо из пакета:
from math_utils import add, square_area

print(add(2, 3)) # 5
print(square_area(4)) # 16


🚩Импорт модулей из пакета

Импортируем весь пакет (с __init__.py)
from math_utils import add, square_area


Импортируем конкретный модуль
from math_utils import arithmetic
print(arithmetic.add(3, 5))


Импортируем конкретную функцию из модуля
from math_utils.arithmetic import add
print(add(3, 5))


🚩Как работают пакеты в Python?

Python ищет пакеты по sys.path
import sys
print(sys.path) # Пути, где Python ищет модули


Если Python не находит пакет, можно добавить путь вручную:
import sys
sys.path.append("/path/to/my_project")


Можно создавать вложенные пакеты
/my_project
/math_utils
__init__.py
/advanced
__init__.py
calculus.py


Импорт:
from math_utils.advanced.calculus import derivative


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🤔 Какие операции можно производить над отображениями?

Можно добавлять и удалять пары ключ-значение, перебирать их, объединять словари и проверять наличие ключа. Также словари поддерживают методы для получения ключей, значений и элементов.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊4👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как устроен протокол 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
Частичное обновление ресурса.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2💊1
🤔 Что такое объект первого класса?

Это объект, который:
- Может быть передан как аргумент.
- Может быть возвращён из функции.
- Может быть присвоен переменной. В Python функции являются объектами первого класса.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
🤔 Как работает функция filter()?

filter() — это встроенная функция Python, которая отбирает элементы из последовательности по заданному условию.
filter(function, iterable)


🚩Как работает `filter()`?

Пример 1: Фильтрация чётных чисел
numbers = [1, 2, 3, 4, 5, 6]

# Оставляем только чётные числа
even_numbers = filter(lambda x: x % 2 == 0, numbers)

print(list(even_numbers)) # [2, 4, 6]


Пример 2: Фильтрация строк по длине
words = ["apple", "kiwi", "banana", "cherry"]

# Оставляем только слова длиной больше 5 символов
long_words = filter(lambda word: len(word) > 5, words)

print(list(long_words)) # ['banana', 'cherry']


Пример 3: Фильтрация None и пустых значений
values = [None, 0, "", "hello", 42, [], {}]

# Оставляем только "истинные" значения
filtered_values = filter(None, values)

print(list(filtered_values)) # ['hello', 42]


Пример 4: Использование filter() с def
def is_positive(n):
return n > 0

numbers = [-5, -2, 0, 3, 7, -1]
positive_numbers = filter(is_positive, numbers)

print(list(positive_numbers)) # [3, 7]


🚩Чем `filter()` лучше `for` + `if`?

Более короткий и читаемый код
# С `filter()`
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))

# С `for` + `if`
even_numbers = [x for x in numbers if x % 2 == 0]


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2