Backend
3.95K subscribers
36 photos
711 links
Комьюнити Backend программистов.
Python, Java, Golang, PHP, C#, C/C++, DevOps

Сайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp
Download Telegram
📌 Что такое операция GROUP BY ?

💬 Спрашивают в 12% собеседований

🤔 Операция `GROUP BY` — это конструкция SQL, используемая для группировки строк в таблице на основе значений одного или нескольких столбцов. Она часто используется в сочетании с агрегатными функциями (такими как COUNT, SUM, AVG, MAX, MIN), чтобы выполнять вычисления для каждой группы в результате запроса.

🤔 Основные аспекты `GROUP BY`:

1️⃣ Группировка данных:

Операция GROUP BY группирует строки, имеющие одинаковые значения в указанных столбцах, в одну группу.

2️⃣ Агрегатные функции:

В сочетании с GROUP BY часто используются агрегатные функции для выполнения вычислений на уровне групп, а не отдельных строк.

🤔 Синтаксис:
SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;


🤔 Примеры использования:

1️⃣ Пример 1: Подсчет количества записей в каждой группе

Предположим, у нас есть таблица employees со следующей структурой:

| id | department | salary |
|----|------------|--------|
| 1 | HR | 5000 |
| 2 | IT | 6000 |
| 3 | HR | 5500 |
| 4 | IT | 7000 |
| 5 | Marketing | 4500 |

Мы хотим подсчитать количество сотрудников в каждом отделе:
SELECT department, COUNT(*)
FROM employees
GROUP BY department;


🤔 Результат будет таким:

| department | count |
|------------|-------|
| HR | 2 |
| IT | 2 |
| Marketing | 1 |

2️⃣ Пример 2: Суммирование значений в каждой группе

Допустим, мы хотим узнать общую зарплату по каждому отделу:
SELECT department, SUM(salary) as total_salary
FROM employees
GROUP BY department;


🤔 Результат будет таким:

| department | total_salary |
|------------|--------------|
| HR | 10500 |
| IT | 13000 |
| Marketing | 4500 |

🤔 Важные моменты:

1️⃣ Столбцы в SELECT:

Все столбцы в операторе SELECT, которые не являются частью агрегатной функции, должны быть перечислены в GROUP BY.

2️⃣ Порядок выполнения:

GROUP BY выполняется после фильтрации строк с помощью WHERE и перед сортировкой с помощью ORDER BY.

3️⃣ Использование с HAVING:

Если необходимо отфильтровать группы после выполнения операции GROUP BY, используется HAVING.

🤔 Пример с `HAVING`:

Если мы хотим выбрать только те отделы, где общая зарплата превышает 10000:
SELECT department, SUM(salary) as total_salary
FROM employees
GROUP BY department
HAVING SUM(salary) > 10000;


🤔 Результат будет таким:

| department | total_salary |
|------------|--------------|
| HR | 10500 |
| IT | 13000 |

Операция GROUP BY является мощным инструментом для агрегирования и анализа данных в SQL, позволяя эффективно группировать и вычислять значения по определенным критериям.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Вопрос: Какой тип базы данных является нереляционной?
Anonymous Quiz
2%
MySQL
4%
PostgreSQL
90%
MongoDB
4%
SQLite
📌 Что такое транзакция в БД ?

💬 Спрашивают в 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) контролируют видимость изменений одной транзакции для других транзакций, что позволяет балансировать между производительностью и уровнем защиты от конфликтов данных.

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

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Вопрос: Какой из этих языков программирования обычно используется для написания серверной части веб-приложений?
Anonymous Quiz
3%
HTML
2%
CSS
18%
JavaScript
78%
Python
🤯5👍1🤔1
📌 Какие есть уровни изоляции транзакций ?

💬 Спрашивают в 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);


🤔 Заключение:

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

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Какой из перечисленных фреймворков является фреймворком для разработки backend на Python?
Anonymous Quiz
5%
Angular
93%
Django
1%
React
1%
Vue.js
🤔5
📌 В чем разница 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.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
🤔 Какой компонент REST API отвечает за создание нового ресурса?
Anonymous Quiz
4%
GET
86%
POST
11%
PUT
0%
DELETE
📌 В чём различие между 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: Возвращает все строки из правой таблицы и совпадающие строки из левой таблицы.

Выбор между этими операторами зависит от ваших потребностей в получении данных и требований к отображению неполных совпадений между таблицами.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🤔 Какой из перечисленных баз данных является SQL базой данных?
Anonymous Quiz
3%
MongoDB
1%
Cassandra
1%
Redis
96%
PostgreSQL
🤔5
📌 Какие бывают ограничения в Базе Данных ?

💬 Спрашивают в 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)
);


🤔 Заключение:

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

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🤔 Какой инструмент используется для автоматического развертывания приложений?
Anonymous Quiz
4%
Git
45%
Docker
29%
Jenkins
23%
Kubernetes
👍1
📌 В чём разница InnerJoin и RightJoin ?

💬 Спрашивают в 12% собеседований

🤔 `INNER JOIN` и `RIGHT JOIN` — это два типа объединения таблиц в SQL, которые используются для получения данных из нескольких таблиц на основе условий соединения. Основное различие между ними заключается в том, какие строки включаются в результирующий набор данных.

🤔 `INNER JOIN`

Описание:

INNER JOIN возвращает только те строки, которые имеют совпадающие значения в обеих таблицах, участвующих в соединении. Если нет совпадения, строки не включаются в результирующий набор данных.

🤔Пример:
SELECT A.*, B.*
FROM TableA A
INNER JOIN TableB B ON A.id = B.id;


🤔Результат:

Включает только строки, где значения id в обеих таблицах совпадают.

🤔 `RIGHT JOIN` (или `RIGHT OUTER JOIN`)

Описание:

RIGHT JOIN возвращает все строки из правой таблицы (TableB) и совпадающие строки из левой таблицы (TableA). Если совпадения нет, строки из правой таблицы все равно включаются в результат с NULL значениями для столбцов из левой таблицы.

🤔Пример:
SELECT A.*, B.*
FROM TableA A
RIGHT JOIN TableB B ON A.id = B.id;


🤔Результат:

Включает все строки из TableB и совпадающие строки из TableA. Если нет совпадения, значения столбцов из TableA будут NULL.

🤔 Визуализация различий:

🤔 Пример данных:

TableA:

| id | name |
|----|-------|
| 1 | Alice |
| 2 | Bob |
| 3 | Charlie |

TableB:

| id | dept |
|----|-------|
| 1 | HR |
| 2 | IT |
| 4 | Sales |

🤔 INNER JOIN:
SELECT A.id, A.name, B.dept
FROM TableA A
INNER JOIN TableB B ON A.id = B.id;


🤔Результат:

| id | name | dept |
|----|--------|------|
| 1 | Alice | HR |
| 2 | Bob | IT |

Только совпадающие строки включены.

🤔 RIGHT JOIN:
SELECT A.id, A.name, B.dept
FROM TableA A
RIGHT JOIN TableB B ON A.id = B.id;


🤔Результат:

| id | name | dept |
|----|---------|------|
| 1 | Alice | HR |
| 2 | Bob | IT |
| 4 | NULL | Sales |

Включены все строки из TableB, а строки из TableA включены только там, где есть совпадения. Если совпадений нет, значения столбцов из TableA будут NULL.

🤔 Основные различия:

INNER JOIN:

Возвращает только строки с совпадающими значениями в обеих таблицах.

Исключает строки без совпадений.

RIGHT JOIN:

Возвращает все строки из правой таблицы (TableB) и совпадающие строки из левой таблицы (TableA).

Включает строки из правой таблицы, даже если нет совпадений, с NULL значениями для столбцов из левой таблицы.

🤔 Применение:

INNER JOIN используется, когда необходимо получить только те записи, которые имеют соответствующие записи в обеих таблицах.

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

Оба типа соединений полезны в разных ситуациях в зависимости от требований к данным и специфики задачи.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥1
🤔 Какой из перечисленных HTTP методов используется для частичного обновления ресурса?
Anonymous Quiz
2%
GET
91%
PATCH
7%
POST
0%
DELETE
📌 Как "под капотом" работает аннотация transactional ?

💬 Спрашивают в 12% собеседований

🤔 Аннотация `@Transactional` в Spring работает следующим образом:

1️⃣ Создание прокси:

Spring обнаруживает @Transactional и создает прокси для класса или метода.

2️⃣ Перехват вызова:

Прокси перехватывает вызов метода, аннотированного @Transactional.

3️⃣ Начало транзакции:

Прокси делегирует управление TransactionInterceptor, который начинает транзакцию через PlatformTransactionManager.

4️⃣ Выполнение метода:

Исходный метод выполняется.

5️⃣ Фиксация или откат транзакции:

Если метод завершился успешно, транзакция фиксируется (commit). Если метод выбросил исключение, транзакция откатывается (rollback).

🤔 Ключевые компоненты:

Прокси: Перехватывает вызовы методов.

TransactionInterceptor: Управляет началом и завершением транзакций.

PlatformTransactionManager: Обеспечивает управление транзакциями.

Эта автоматизация позволяет легко управлять транзакциями, обеспечивая целостность данных.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🤔 Какой из перечисленных инструментов используется для мониторинга серверов?
Anonymous Quiz
2%
Git
15%
Ansible
80%
Prometheus
3%
Maven
📌 Расскажи про уровни изоляции ?

💬 Спрашивают в 12% собеседований

🤔 Уровни изоляции транзакций в SQL определяют, как взаимодействуют параллельные транзакции и какие аномалии данных они предотвращают. Основные уровни изоляции:

1️⃣ Read Uncommitted:

Видит изменения, даже если они не зафиксированы.

Аномалии: грязное чтение.

2️⃣ Read Committed:

Видит только зафиксированные изменения.

Аномалии: неповторяющееся чтение.

3️⃣ Repeatable Read:

Сохраняет консистентность чтения данных в пределах одной транзакции.

Аномалии: фантомные чтения.

4️⃣ Serializable:

Полная изоляция транзакций, как если бы они выполнялись последовательно.

Аномалии: никаких.

🤔 Применение:

Read Uncommitted: Минимальная изоляция, максимальная производительность.

Read Committed: Баланс между изоляцией и производительностью.

Repeatable Read: Повышенная изоляция, подходит для большинства сценариев.

Serializable: Максимальная изоляция, используется для критически важных операций.

Каждый уровень обеспечивает разный баланс между изоляцией и производительностью.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
3
🤔 Какой тип базы данных использует ключи и значения для хранения данных?
Anonymous Quiz
25%
Реляционная база данных
7%
Документная база данных
3%
Графовая база данных
65%
Ключ-значение база данных
😁7
📌 Как ты можешь описать абстракцию ?

💬 Спрашивают в 12% собеседований

🤔 Абстракция — это концепция в объектно-ориентированном программировании, которая позволяет выделять и использовать только значимые характеристики и поведение объекта, скрывая при этом его сложные детали реализации. Это упрощает взаимодействие с объектами, предоставляя простой интерфейс и минимизируя сложность.

🤔 Пример:

В автомобиле вы управляете рулем, педалями и переключателями передач, не думая о том, как работают двигатель или тормозная система. Это и есть абстракция: вы взаимодействуете с простым интерфейсом, не вникая в сложные внутренние механизмы.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какой из перечисленных протоколов используется для передачи сообщений между клиентом и сервером в режиме реального времени?
Anonymous Quiz
23%
HTTP
2%
FTP
72%
WebSocket
3%
SMTP
🔥1