Backend
Комьюнити Backend программистов. Python, Java, Golang, PHP, C#, C/C++, DevOps Сайт: easyoffer.ru Реклама: @easyoffer_adv
إظهار المزيد3 857
المشتركون
-324 ساعات
-237 أيام
-11630 أيام
- المشتركون
- التغطية البريدية
- ER - نسبة المشاركة
جاري تحميل البيانات...
معدل نمو المشترك
جاري تحميل البيانات...
🤔 Какой инструмент используется для автоматического развертывания приложений?Anonymous voting
- Git
- Docker
- Jenkins
- Kubernetes
📌 Какие бывают ограничения в Базе Данных ?
💬 Спрашивают в 12% собеседований
🤔 Ограничения в базе данных (Constraints) — это правила, которые применяются к данным в таблице для обеспечения точности и целостности данных. Эти ограничения помогают управлять данными и предотвращать вставку или обновление неверных данных. Вот основные типы ограничений:
🤔 1️⃣ NOT NULL
Описание:
➕ Обеспечивает, что столбец не может содержать
NULL
значения. Это ограничение гарантирует, что данные всегда будут присутствовать в этом столбце.
🤔Пример:
CREATE TABLE employees (
emp_id INT,
name VARCHAR(100) NOT NULL
);
🤔 2️⃣ UNIQUE
Описание:
➕ Обеспечивает, что все значения в столбце или группе столбцов уникальны. Это ограничение предотвращает дублирование данных.
🤔Пример:
CREATE TABLE employees (
emp_id INT UNIQUE,
email VARCHAR(100) UNIQUE
);
🤔 3️⃣ PRIMARY KEY
Описание:
➕ Сочетает в себе ограничения NOT NULL
и UNIQUE
. Обеспечивает уникальную идентификацию каждой строки в таблице. В таблице может быть только один первичный ключ.
🤔Пример:
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
🤔 4️⃣ FOREIGN KEY
Описание:
➕ Обеспечивает ссылочную целостность между таблицами. Столбец с внешним ключом (или группа столбцов) ссылается на первичный ключ или уникальный ключ в другой таблице.
🤔 Пример:
CREATE TABLE departments (
dept_id INT PRIMARY KEY,
dept_name VARCHAR(100)
);
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);
🤔 5️⃣ CHECK
Описание:
➕ Обеспечивает, что значения в столбце соответствуют заданному условию. Это ограничение проверяет данные при вставке или обновлении.
🤔 Пример:
CREATE TABLE employees (
emp_id INT,
name VARCHAR(100),
salary DECIMAL(10, 2),
CHECK (salary > 0)
);
🤔 6️⃣ DEFAULT
Описание:
➕ Устанавливает значение по умолчанию для столбца, если при вставке строки значение для этого столбца не указано.
🤔 Пример:
CREATE TABLE employees (
emp_id INT,
name VARCHAR(100),
hire_date DATE DEFAULT CURRENT_DATE
);
🤔 7️⃣ INDEX
Описание:
➕ Создает индекс на один или несколько столбцов таблицы для ускорения поиска данных. Хотя индекс не является ограничением в строгом смысле, он помогает оптимизировать запросы к базе данных.
🤔 Пример:
CREATE INDEX idx_name ON employees(name);
🤔 Пример создания таблицы с различными ограничениями:
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
dept_id INT,
salary DECIMAL(10, 2) CHECK (salary > 0),
hire_date DATE DEFAULT CURRENT_DATE,
FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);
🤔 Заключение:
Ограничения играют важную роль в управлении целостностью данных и предотвращении ошибок в базе данных. Они помогают гарантировать, что данные в таблицах будут точными, последовательными и соответствующими бизнес-правилам.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых❤ 1
🤔 Какой из перечисленных баз данных является SQL базой данных?Anonymous voting
- MongoDB
- Cassandra
- Redis
- PostgreSQL
🤔 4
📌 В чём различие между LeftJoin , RightJoin и InnerJoin ?
💬 Спрашивают в 12% собеседований
🤔 В SQL, `JOIN` операторы используются для объединения строк из двух или более таблиц на основе логического отношения между ними. Вот различия между
LEFT JOIN
, RIGHT JOIN
и INNER JOIN
:
🤔1️⃣ `INNER JOIN`
Описание:
➕ INNER JOIN
возвращает только те строки, которые имеют совпадения в обеих таблицах, участвующих в соединении.
🤔Пример:
SELECT A.*, B.*
FROM TableA A
INNER JOIN TableB B ON A.id = B.id;
🤔Результат:
➕ Только строки, где значения id
в обеих таблицах совпадают, будут включены в результат.
🤔 2️⃣ `LEFT JOIN` (или `LEFT OUTER JOIN`)
Описание:
➕ LEFT JOIN
возвращает все строки из левой таблицы и совпадающие строки из правой таблицы. Если совпадений нет, результат всё равно будет включать строки из левой таблицы с NULL значениями для столбцов из правой таблицы.
🤔Пример:
SELECT A.*, B.*
FROM TableA A
LEFT JOIN TableB B ON A.id = B.id;
🤔Результат:
➕ Все строки из TableA
будут включены в результат, даже если нет совпадений в TableB
. Столбцы из TableB
будут содержать NULL, если совпадений не найдено.
🤔 3️⃣ RIGHT JOIN
(или RIGHT OUTER JOIN
)
Описание:
➕ RIGHT JOIN
возвращает все строки из правой таблицы и совпадающие строки из левой таблицы. Если совпадений нет, результат всё равно будет включать строки из правой таблицы с NULL значениями для столбцов из левой таблицы.
🤔 Пример:
SELECT A.*, B.*
FROM TableA A
RIGHT JOIN TableB B ON A.id = B.id;
🤔 Результат:
➕ Все строки из TableB
будут включены в результат, даже если нет совпадений в TableA
. Столбцы из TableA
будут содержать NULL, если совпадений не найдено.
🤔 Визуализация различий:
1️⃣ INNER JOIN:
| TableA | TableB | Результат |
|--------|--------|-----------|
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | NULL | (нет) |
| NULL | 4 | (нет) |
2️⃣ LEFT JOIN:
| TableA | TableB | Результат |
|--------|--------|-----------|
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | NULL | 3 |
| NULL | 4 | (нет) |
3️⃣ RIGHT JOIN:
| TableA | TableB | Результат |
|--------|--------|-----------|
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| NULL | 3 | 3 |
| NULL | 4 | 4 |
🤔 Примеры на практике:
Предположим, у нас есть две таблицы: `Employees` и `Departments`.
Employees:
| emp_id | name | dept_id |
|--------|-----------|---------|
| 1 | Alice | 10 |
| 2 | Bob | 20 |
| 3 | Charlie | 30 |
Departments:
| dept_id | dept_name |
|---------|--------------|
| 10 | HR |
| 20 | IT |
| 40 | Marketing |
INNER JOIN:
SELECT Employees.name, Departments.dept_name
FROM Employees
INNER JOIN Departments ON Employees.dept_id = Departments.dept_id;
🤔 Результат:
| name | dept_name |
|--------|-----------|
| Alice | HR |
| Bob | IT |
🤔 LEFT JOIN:
SELECT Employees.name, Departments.dept_name
FROM Employees
LEFT JOIN Departments ON Employees.dept_id = Departments.dept_id;
🤔 Результат:
| name | dept_name |
|----------|-----------|
| Alice | HR |
| Bob | IT |
| Charlie | NULL |
🤔 RIGHT JOIN:
SELECT Employees.name, Departments.dept_name
FROM Employees
RIGHT JOIN Departments ON Employees.dept_id = Departments.dept_id;
🤔 Результат:
| name | dept_name |
|----------|--------------|
| Alice | HR |
| Bob | IT |
| NULL | Marketing |
🤔 Заключение:
➕ INNER JOIN: Используется для получения только тех строк, которые имеют совпадения в обеих таблицах.
➕ LEFT JOIN: Возвращает все строки из левой таблицы и совпадающие строки из правой таблицы.
➕ RIGHT JOIN: Возвращает все строки из правой таблицы и совпадающие строки из левой таблицы.
Выбор между этими операторами зависит от ваших потребностей в получении данных и требований к отображению неполных совпадений между таблицами.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых👍 3
🤔 Какой компонент REST API отвечает за создание нового ресурса?Anonymous voting
- GET
- POST
- PUT
- DELETE
📌 В чем разница char и varchar в SQL ?
💬 Спрашивают в 12% собеседований
🤔 `CHAR` и `VARCHAR` — это два типа данных в SQL, которые используются для хранения строковых данных. Основные различия между ними касаются способа хранения данных и управления памятью.
🤔 `CHAR` (Fixed-length Character Data)
1️⃣ Фиксированная длина:
➕
CHAR(n)
хранит строки фиксированной длины n
. Если строка короче, она дополняется пробелами до указанной длины.
2️⃣ Использование памяти:
➕ Использует фиксированное количество памяти, равное указанной длине n
, независимо от фактической длины строки.
3️⃣ Производительность:
➕ Может быть быстрее в некоторых случаях, так как длина строк фиксирована и известна заранее, что упрощает управление памятью.
4️⃣ Пример использования:
➕ Подходит для хранения данных, которые всегда имеют одинаковую длину, например, коды стран, идентификаторы и т.д.
CREATE TABLE example (
fixed_char CHAR(10)
);
🤔 `VARCHAR` (Variable-length Character Data)
1️⃣ Переменная длина:
➕ VARCHAR(n)
хранит строки переменной длины, где n
— это максимальная длина строки. Реальная длина строки определяется по количеству символов в ней.
2️⃣ Использование памяти:
➕ Использует только столько памяти, сколько необходимо для хранения фактической длины строки, плюс дополнительные байты для хранения информации о длине строки.
3️⃣ Производительность:
➕ Может быть менее эффективным в некоторых случаях по сравнению с CHAR
, так как длина строки не фиксирована и требует дополнительной обработки для управления памятью.
4️⃣ Пример использования:
➕ Подходит для хранения данных, длина которых может варьироваться, например, имена, адреса, описания и т.д.
CREATE TABLE example (
variable_char VARCHAR(50)
);
🤔 Сравнение `CHAR` и `VARCHAR`:
| Характеристика | CHAR
| VARCHAR
|
|-------------------------|-------------------------------------|-----------------------------------------|
| Длина | Фиксированная | Переменная |
| Использование памяти | Фиксированное количество памяти | Использует память по фактической длине |
| Заполнение пробелами | Дополняется пробелами до заданной длины | Нет заполнения пробелами |
| Производительность | Может быть быстрее при фиксированной длине | Может быть менее эффективным |
| Применение | Идентификаторы, коды стран | Имена, адреса, описания |
🤔 Пример:
CREATE TABLE users (
user_id CHAR(10),
username VARCHAR(50)
);
🤔 В этом примере user_id
всегда будет занимать 10 символов, даже если идентификатор короче, в то время как username
будет занимать только необходимое количество памяти для хранения имени пользователя.
🤔 Заключение:
Выбор между CHAR
и VARCHAR
зависит от характера данных, которые вы хотите хранить. Если данные имеют фиксированную длину, лучше использовать CHAR
. Если длина данных варьируется, более подходящим будет использование VARCHAR
.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых👍 1🔥 1
🤔 Какой из перечисленных фреймворков является фреймворком для разработки backend на Python?Anonymous voting
- Angular
- Django
- React
- Vue.js
🤔 3
📌 Какие есть уровни изоляции транзакций ?
💬 Спрашивают в 12% собеседований
🤔 Уровни изоляции транзакций определяют степень видимости изменений, сделанных одной транзакцией, для других параллельно выполняющихся транзакций. Они помогают контролировать влияние транзакций друг на друга и управляют различными типами аномалий, такими как "грязное" чтение, неповторяющееся чтение и фантомные чтения. В стандарте SQL-92 определены четыре уровня изоляции транзакций:
1️⃣ Read Uncommitted (Чтение неподтвержденных данных)
Описание:
➕ Транзакция может видеть изменения, сделанные другими транзакциями, даже если эти изменения еще не были зафиксированы (не подтверждены).
Аномалии:
➕ Грязное чтение (Dirty Read): Транзакция может прочитать данные, которые были изменены другой транзакцией, но не были зафиксированы.
➕ Неповторяющееся чтение (Non-repeatable Read): Транзакция может видеть разные значения данных при повторном чтении, если другая транзакция изменила эти данные и зафиксировала изменения.
➕ Фантомные чтения (Phantom Read): Транзакция может видеть новые строки, добавленные другой транзакцией, при повторном выполнении запроса.
2️⃣ Read Committed (Чтение подтвержденных данных)
Описание:
➕ Транзакция может видеть только изменения, которые были зафиксированы другими транзакциями. Неподтвержденные изменения не видны.
Аномалии:
➕ Неповторяющееся чтение (Non-repeatable Read): Транзакция может видеть разные значения данных при повторном чтении, если другая транзакция изменила и зафиксировала эти данные.
➕ Фантомные чтения (Phantom Read): Транзакция может видеть новые строки, добавленные другой транзакцией, при повторном выполнении запроса.
3️⃣ Repeatable Read (Повторяемое чтение)
Описание:
➕ Транзакция гарантирует, что если она прочитала данные в начале транзакции, эти данные останутся неизменными до конца транзакции. Транзакция не видит изменения данных, сделанные другими транзакциями после начала текущей транзакции.
Аномалии:
➕ Фантомные чтения (Phantom Read): Транзакция может видеть новые строки, добавленные другой транзакцией, при повторном выполнении запроса.
4️⃣ Serializable (Сериализуемость)
Описание:
➕ Транзакция выполняется так, как если бы она была единственной, работающей в системе. Другие транзакции не могут добавлять, изменять или удалять данные, пока текущая транзакция не завершится. Это самый строгий уровень изоляции.
Аномалии:
➕ Все аномалии (грязное чтение, неповторяющееся чтение, фантомные чтения) предотвращаются.
🤔 Пример использования уровней изоляции в SQL:
-- Установка уровня изоляции
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
🤔 Пример на Java (использование JDBC):
connection.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
connection.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
connection.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
🤔 Заключение:
Выбор уровня изоляции транзакций является балансом между производительностью и консистентностью данных. Более высокие уровни изоляции обеспечивают большую защиту от аномалий, но могут приводить к снижению производительности из-за увеличения блокировок и ожиданий. Правильный выбор уровня изоляции зависит от требований конкретного приложения и его чувствительности к различным типам аномалий.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых👍 2
🤔 Вопрос: Какой из этих языков программирования обычно используется для написания серверной части веб-приложений?Anonymous voting
- HTML
- CSS
- JavaScript
- Python
🤯 4👍 1🤔 1
📌 Что такое транзакция в БД ?
💬 Спрашивают в 12% собеседований
🤔 Транзакция в базе данных — это последовательность одной или нескольких операций над базой данных, которая выполняется как единое целое. Транзакции обеспечивают, что все операции в рамках транзакции либо успешно выполняются, либо полностью отменяются, что гарантирует целостность данных.
🤔 Основные свойства транзакций (ACID):
1️⃣ Atomicity (Атомарность):
➕ Транзакция должна быть либо выполнена полностью, либо не выполнена вовсе. Если какая-то часть транзакции не удается, вся транзакция откатывается (roll back) к исходному состоянию.
2️⃣ Consistency (Согласованность):
➕ Транзакция переводит базу данных из одного согласованного состояния в другое. Это означает, что после завершения транзакции все правила целостности данных должны быть соблюдены.
3️⃣ Isolation (Изоляция):
➕ Результаты выполнения транзакции не должны быть видны другим параллельно выполняющимся транзакциям до тех пор, пока данная транзакция не завершится. Это предотвращает влияние одной транзакции на другую.
4️⃣ Durability (Устойчивость):
➕ После успешного завершения транзакции (коммита) ее результаты должны быть зафиксированы в базе данных и сохранены, даже если произойдет сбой системы.
🤔 Пример работы с транзакциями:
🤔 На SQL:
BEGIN TRANSACTION;
-- Пример операций внутри транзакции
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
-- Если все операции прошли успешно
COMMIT;
-- Если произошла ошибка
ROLLBACK;
🤔 Пример на Java (использование JDBC):
Connection connection = null;
try {
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "user", "password");
connection.setAutoCommit(false); // Начало транзакции
// Пример операций внутри транзакции
PreparedStatement pstmt1 = connection.prepareStatement("UPDATE accounts SET balance = balance - 100 WHERE account_id = ?");
pstmt1.setInt(1, 1);
pstmt1.executeUpdate();
PreparedStatement pstmt2 = connection.prepareStatement("UPDATE accounts SET balance = balance + 100 WHERE account_id = ?");
pstmt2.setInt(1, 2);
pstmt2.executeUpdate();
connection.commit(); // Коммит транзакции
} catch (SQLException e) {
if (connection != null) {
try {
connection.rollback(); // Откат транзакции при ошибке
} catch (SQLException ex) {
ex.printStackTrace();
}
}
e.printStackTrace();
} finally {
if (connection != null) {
try {
connection.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
🤔 Важные моменты при работе с транзакциями:
1️⃣ Начало транзакции:
➕ В большинстве систем баз данных транзакция начинается автоматически перед первой операцией (автоматическое управление транзакциями), либо может быть явно начата с помощью команды BEGIN
или эквивалентной.
2️⃣ Коммит и откат:
➕ Транзакция завершается командой COMMIT
, фиксирующей все изменения, или ROLLBACK
, отменяющей все изменения.
3️⃣ Уровни изоляции:
➕ Различные уровни изоляции (READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE) контролируют видимость изменений одной транзакции для других транзакций, что позволяет балансировать между производительностью и уровнем защиты от конфликтов данных.
Транзакции являются фундаментальным механизмом обеспечения надежности и целостности данных в реляционных базах данных, позволяя корректно обрабатывать сложные операции и защищать данные от сбоев и ошибок.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых👍 1
اختر خطة مختلفة
تسمح خطتك الحالية بتحليلات لما لا يزيد عن 5 قنوات. للحصول على المزيد، يُرجى اختيار خطة مختلفة.