Anonymous Quiz
6%
Рекурсия использует цикл, итерация — рекурсивные вызовы
87%
Рекурсия использует рекурсивные вызовы, итерация — циклы
5%
Рекурсия медленнее итерации
3%
Итерация занимает больше памяти
😁4
📌 Что такое 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-запросов и делает код более чистым и поддерживаемым.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
💬 Спрашивают в 13% собеседований
Использование ORM упрощает разработку приложений, позволяет избежать ошибок при написании SQL-запросов и делает код более чистым и поддерживаемым.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Anonymous Quiz
12%
Менеджер памяти
29%
Инструмент для работы с потоками данных
51%
Объект для управления ресурсами в блоке кода
8%
Средство для управления базами данных
👍1
Anonymous Quiz
21%
Через обычное наследование классов
15%
Используя миксины
14%
Используя абстрактные базовые классы
50%
Варианты 1 и 3
❤1👍1
Использование HTTPS стало стандартом для большинства современных веб-сайтов, особенно тех, которые обрабатывают конфиденциальную информацию. Это обеспечивает безопасность, доверие пользователей и улучшенные позиции в поисковой выдаче.
Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Quiz
23%
При высоком числе признаков
28%
При необходимости интерпретации влияния признаков
28%
При большом объеме данных
20%
При высокой нелинейности данных
🤔2
Выбор между Scrum и Kanban зависит от конкретных потребностей и условий вашей команды и проекта. Scrum может быть предпочтителен для проектов с фиксированными сроками и требованиями, требующих регулярных проверок и адаптаций. Kanban лучше подходит для команд, работающих в условиях изменяющихся приоритетов и требующих гибкости в управлении задачами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Anonymous Quiz
6%
GET
21%
POST
73%
PUT
1%
DELETE
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Anonymous Quiz
93%
200
3%
400
0%
404
3%
500
private, protected, public).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("Возраст должен быть положительным числом.");
}
}
}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
Инкапсуляция способствует созданию более стабильного и управляемого кода, повышая модульность и реиспользуемость компонентов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Quiz
82%
npm
4%
pip
6%
composer
7%
maven
❤1
COUNT, SUM, AVG, MAX, MIN), чтобы выполнять вычисления для каждой группы в результате запроса.GROUP BY группирует строки, имеющие одинаковые значения в указанных столбцах, в одну группу.GROUP BY часто используются агрегатные функции для выполнения вычислений на уровне групп, а не отдельных строк.SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;
Предположим, у нас есть таблица
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 |
Допустим, мы хотим узнать общую зарплату по каждому отделу:
SELECT department, SUM(salary) as total_salary
FROM employees
GROUP BY department;
| department | total_salary |
|------------|--------------|
| HR | 10500 |
| IT | 13000 |
| Marketing | 4500 |
SELECT, которые не являются частью агрегатной функции, должны быть перечислены в GROUP BY.GROUP BY выполняется после фильтрации строк с помощью WHERE и перед сортировкой с помощью ORDER BY.GROUP BY, используется 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
BEGIN TRANSACTION;
-- Пример операций внутри транзакции
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
-- Если все операции прошли успешно
COMMIT;
-- Если произошла ошибка
ROLLBACK;
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();
}
}
}
BEGIN или эквивалентной.COMMIT, фиксирующей все изменения, или ROLLBACK, отменяющей все изменения.Транзакции являются фундаментальным механизмом обеспечения надежности и целостности данных в реляционных базах данных, позволяя корректно обрабатывать сложные операции и защищать данные от сбоев и ошибок.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Anonymous Quiz
3%
HTML
2%
CSS
18%
JavaScript
78%
Python
🤯5👍1🤔1
Описание:
Аномалии:
Описание:
Аномалии:
Описание:
Аномалии:
Описание:
Аномалии:
-- Установка уровня изоляции
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
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
Anonymous Quiz
5%
Angular
93%
Django
1%
React
1%
Vue.js
🤔5
CHAR(n) хранит строки фиксированной длины n. Если строка короче, она дополняется пробелами до указанной длины.n, независимо от фактической длины строки.CREATE TABLE example (
fixed_char CHAR(10)
);
VARCHAR(n) хранит строки переменной длины, где n — это максимальная длина строки. Реальная длина строки определяется по количеству символов в ней.CHAR, так как длина строки не фиксирована и требует дополнительной обработки для управления памятью.CREATE TABLE example (
variable_char VARCHAR(50)
);
| Характеристика |
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
Anonymous Quiz
4%
GET
86%
POST
11%
PUT
0%
DELETE