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
📌 Что такое ORM?

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

🤔 ORM (Object-Relational Mapping) — это техника программирования, которая используется для преобразования данных между несовместимыми системами типов в объектно-ориентированных языках программирования. ORM позволяет разработчикам работать с базами данных, используя объектно-ориентированную парадигму вместо традиционного написания SQL-запросов. Основные функции ORM включают:

1️⃣ Маппинг объектов: ORM сопоставляет классы и их свойства в объектно-ориентированном языке программирования с таблицами и столбцами в реляционной базе данных.

2️⃣ Автоматическое создание запросов: ORM автоматически генерирует SQL-запросы для выполнения операций с базой данных (CRUD - Create, Read, Update, Delete).

3️⃣ Управление связями: ORM обрабатывает отношения между объектами, такие как один к одному, один ко многим и многие ко многим, что упрощает управление связями между таблицами в базе данных.

4️⃣ Кэширование: Многие ORM включают механизмы кэширования, чтобы уменьшить количество обращений к базе данных и улучшить производительность приложения.

🤔 Популярные ORM-фреймворки:

Hibernate (для Java)

Entity Framework (для .NET)

SQLAlchemy (для Python)

ActiveRecord (для Ruby on Rails)

Django ORM (для Django, Python)

Использование ORM упрощает разработку приложений, позволяет избежать ошибок при написании SQL-запросов и делает код более чистым и поддерживаемым.

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

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
📌 Какая разница у протоколов http и https ?

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

🤔 Основное различие между протоколами HTTP (HyperText Transfer Protocol) и HTTPS (HyperText Transfer Protocol Secure) заключается в уровне безопасности, который они обеспечивают при передаче данных между клиентом (например, веб-браузером) и сервером.

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

1️⃣ Шифрование:

HTTP: Данные передаются в открытом виде, что делает их уязвимыми для перехвата и чтения злоумышленниками.

HTTPS: Данные передаются в зашифрованном виде с использованием SSL/TLS (Secure Sockets Layer/Transport Layer Security). Это обеспечивает защиту данных от перехвата и несанкционированного доступа.

2️⃣ Аутентификация:

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

HTTPS: Использует сертификаты SSL/TLS, которые удостоверяют подлинность веб-сайта, подтверждая, что соединение установлено с тем сервером, с которым намеревался связаться пользователь.

3️⃣ Интегритет данных:

HTTP: Данные могут быть изменены или повреждены во время передачи, и это не будет обнаружено.

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

4️⃣ Порт:

HTTP: Использует порт 80 по умолчанию.

HTTPS: Использует порт 443 по умолчанию.

🤔 Преимущества HTTPS:

1️⃣ Безопасность: Обеспечивает защиту конфиденциальной информации, такой как логины, пароли, номера кредитных карт.

2️⃣ Доверие пользователей: Пользователи склонны больше доверять веб-сайтам, использующим HTTPS, так как это указывает на то, что сайт заботится о безопасности данных.

3️⃣SEO: Поисковые системы, такие как Google, предпочитают сайты, использующие HTTPS, и ранжируют их выше по сравнению с сайтами, использующими HTTP.

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

Использование HTTPS стало стандартом для большинства современных веб-сайтов, особенно тех, которые обрабатывают конфиденциальную информацию. Это обеспечивает безопасность, доверие пользователей и улучшенные позиции в поисковой выдаче.

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

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔2
📌 В чем разница между Scrum и Kanban ?

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

🤔 Scrum и Kanban — это два популярных метода управления проектами и процессами, используемых в Agile-разработке. Оба они помогают командам улучшать производительность и управление работой, но имеют различные подходы и принципы. Вот основные различия между Scrum и Kanban:

🤔 Scrum:

1️⃣ Структура:

Фиксированные спринты: Работа делится на временные интервалы, называемые спринтами, обычно длительностью 2-4 недели.

Роли: В Scrum определены конкретные роли, такие как Scrum-мастер, Product Owner и команда разработки.

2️⃣ Процессы и церемонии:

Планирование спринта: Каждому спринту предшествует планирование, где команда определяет, какие задачи будут выполнены.

Ежедневные Scrum-встречи: Короткие ежедневные встречи (Stand-ups) для обсуждения прогресса, препятствий и планов на день.

Ретроспектива спринта: В конце каждого спринта команда анализирует, что прошло хорошо, что можно улучшить, и как это сделать.

3️⃣ Артефакты:

Product Backlog: Список всех задач и требований для продукта.

Sprint Backlog: Список задач, выбранных для выполнения в текущем спринте.

Burn-down Chart: График, показывающий оставшееся количество работы в спринте.

4️⃣ Изменения в ходе спринта:

Изменения в задачах не допускаются после начала спринта. Все задачи должны быть зафиксированы до начала спринта.

🤔 Kanban:

1️⃣ Структура:

Непрерывный поток работы: Kanban не имеет фиксированных временных интервалов или спринтов. Работа выполняется непрерывно.

Роли: В Kanban нет строгих определений ролей. Команда может включать любые роли по мере необходимости.

2️⃣ Процессы и церемонии:

Визуализация работы: Kanban использует доску с колонками для визуализации рабочего процесса (например, "To Do", "In Progress", "Done").

Лимиты на количество задач в работе (WIP): Ограничивает количество задач, которые могут находиться в определенных колонках одновременно, чтобы предотвратить перегрузку и улучшить поток работы.

3️⃣ Артефакты:

Kanban-доска: Основной инструмент для визуализации работы и контроля за её состоянием.

Карточки задач: Представляют отдельные задачи на Kanban-доске.

4️⃣ Изменения в ходе работы:

Изменения допускаются в любой момент времени. Задачи могут добавляться, изменяться и удаляться по мере необходимости.

🤔 Преимущества и недостатки:

Scrum:

Преимущества: Четкая структура, регулярная обратная связь, улучшение прогнозируемости и планирования.

Недостатки: Меньше гибкости вносить изменения в течение спринта, может быть сложным для внедрения в нестабильных или динамических средах.

Kanban:

Преимущества: Гибкость, визуализация рабочего процесса, возможность быстрого реагирования на изменения.

Недостатки: Меньше структурированности, отсутствие фиксированных временных интервалов может привести к меньшему чувству срочности.

🤔 Выбор между Scrum и Kanban:

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

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

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Вопрос: Какой HTTP метод обычно используется для обновления ресурса на сервере?
Anonymous Quiz
6%
GET
21%
POST
73%
PUT
1%
DELETE
📌 Что такое git ?

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

🤔 Git — это распределённая система контроля версий, разработанная Линусом Торвальдсом в 2005 году. Она предназначена для отслеживания изменений в исходном коде во время разработки программного обеспечения. Git позволяет нескольким разработчикам работать над одним и тем же проектом одновременно, не опасаясь потерять работу или перезаписать изменения друг друга.

🤔 Основные понятия и функции Git:

1️⃣ Репозиторий (Repository):

Это хранилище для проекта, в котором хранятся все файлы и история их изменений.

2️⃣ Коммит (Commit):

Зафиксированный снимок текущего состояния файлов в репозитории. Коммиты образуют историю изменений проекта.

3️⃣ Ветвь (Branch):

Отдельная линия разработки. Ветви позволяют параллельно работать над разными функциями или исправлениями без вмешательства в основную кодовую базу.

4️⃣ Слияние (Merge):

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

5️⃣ Клон (Clone):

Создание копии удалённого репозитория на локальной машине разработчика.

6️⃣ Форк (Fork):

Создание копии чужого репозитория (обычно на платформе вроде GitHub) для внесения собственных изменений без воздействия на оригинальный проект.

7️⃣ Запрос на слияние (Pull Request или Merge Request):

Запрос на включение изменений из одной ветви в другую, часто используемый в коллаборативных платформах (например, GitHub, GitLab).

8️⃣ Ремот (Remote):

Удалённый репозиторий, который может быть связан с локальным репозиторием. Основные команды взаимодействуют с ним для синхронизации данных.

🤔 Основные команды Git:

git init: Создание нового локального репозитория.

git clone [URL]: Клонирование удалённого репозитория на локальную машину.

git add [файл/папка]: Добавление изменений в индекс (стадия подготовки к коммиту).

git commit -m "Сообщение": Создание коммита с заданным сообщением.

git status: Проверка состояния файлов в рабочем каталоге и индексе.

git log: Просмотр истории коммитов.

git branch: Управление ветвями (создание, просмотр, удаление).

git checkout [ветка/коммит]: Переключение между ветвями или возврат к определённому коммиту.

git merge [ветка]: Слияние указанной ветки с текущей.

git pull: Получение изменений из удалённого репозитория и слияние с текущей веткой.

git push: Отправка изменений из локального репозитория в удалённый.

🤔 Преимущества использования Git:

Распределённость: Каждый разработчик имеет полную копию истории проекта, что повышает отказоустойчивость.

Лёгкость ветвления и слияния: Git делает работу с ветками и их слиянием простой и эффективной.

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

Поддержка параллельной работы: Несколько разработчиков могут работать над разными частями проекта одновременно, не мешая друг другу.

🤔 Git является стандартом де-факто для контроля версий в разработке программного обеспечения благодаря своей мощности, гибкости и эффективности.

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

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Вопрос: Какой статусный код HTTP указывает на успешное выполнение запроса?
Anonymous Quiz
93%
200
3%
400
0%
404
3%
500
📌 В чём смысл инкапсуляции ?

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

🤔 Инкапсуляция — один из основных принципов объектно-ориентированного программирования (ООП), наряду с наследованием и полиморфизмом. Смысл инкапсуляции заключается в объединении данных и методов, работающих с этими данными, в одном объекте, а также в ограничении доступа к этим данным из внешнего мира.

🤔 Основные аспекты инкапсуляции:

1️⃣ Сокрытие данных:

В инкапсуляции данные (свойства) объекта скрываются от внешнего доступа и защищаются от некорректных изменений. Это достигается путем использования модификаторов доступа (например, private, protected, public).

2️⃣ Контролируемый доступ:

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

3️⃣ Защита целостности данных:

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

🤔 Примеры инкапсуляции:

🤔 На Java:
public class Person {
private String name;
private int age;

// Конструктор
public Person(String name, int age) {
this.name = name;
this.age = age;
}

// Геттер для имени
public String getName() {
return name;
}

// Сеттер для имени
public void setName(String name) {
this.name = name;
}

// Геттер для возраста
public int getAge() {
return age;
}

// Сеттер для возраста
public void setAge(int age) {
if (age > 0) {
this.age = age;
} else {
System.out.println("Возраст должен быть положительным числом.");
}
}
}


🤔 На Python:
class Person:
def __init__(self, name, age):
self._name = name
self._age = age

# Геттер для имени
@property
def name(self):
return self._name

# Сеттер для имени
@name.setter
def name(self, name):
self._name = name

# Геттер для возраста
@property
def age(self):
return self._age

# Сеттер для возраста
@age.setter
def age(self, age):
if age > 0:
self._age = age
else:
print("Возраст должен быть положительным числом.")

# Пример использования
person = Person("John", 30)
print(person.name) # John
person.age = -5 # Возраст должен быть положительным числом.
print(person.age) # 30


🤔 Преимущества инкапсуляции:

1️⃣ Сокрытие реализации: Внешние объекты не знают, как данные реализованы и хранятся. Они работают только с публичными методами.

2️⃣ Легкость изменения и расширения: Изменения внутренней реализации не влияют на код, использующий объект, если интерфейс остается неизменным.

3️⃣ Повышение безопасности данных: Инкапсуляция позволяет защитить данные от некорректных изменений.

4️⃣ Упрощение отладки и тестирования: Так как доступ к данным контролируется, становится легче отслеживать и исправлять ошибки.

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

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

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Вопрос: Какой инструмент используется для управления зависимостями в проекте Node.js?
Anonymous Quiz
82%
npm
4%
pip
6%
composer
7%
maven
1
📌 Что такое операция 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