uz
Feedback
PHP | Вопросы собесов

PHP | Вопросы собесов

Kanalga Telegram’da o‘tish

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv

Ko'proq ko'rsatish
2 346
Obunachilar
Ma'lumot yo'q24 soatlar
-37 kunlar
-2430 kunlar
Postlar arxiv
🤔 Что такое логирование? Это запись событий, ошибок и действий приложения в журнал для диагностики и анализа. 1. Логи помогают отслеживать выполнение кода, анализировать сбои и выявлять узкие места. 2. Используются различные уровни логов: INFO, DEBUG, ERROR. 3. Это важный инструмент для отладки, мониторинга и аудита системы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какой синтаксис у заголовков? Заголовки в языках и разметки часто используются для указания ключевой информации, на которую стоит обратить внимание, и они различаются в зависимости от конкретного контекста и языка. Ниже приведены примеры синтаксиса заголовков в различных контекстах: 🚩Заголовки в HTML Поддерживает шесть уровней заголовков, от <h1> до <h6>, где <h1> представляет самый важный заголовок, а <h6> — наименее важный.
<h1>Заголовок уровня 1</h1>
<h2>Заголовок уровня 2</h2>
<h3>Заголовок уровня 3</h3>
<h4>Заголовок уровня 4</h4>
<h5>Заголовок уровня 5</h5>
<h6>Заголовок уровня 6</h6>
🚩Заголовки в Markdown Это язык разметки, который упрощает форматирование текста, особенно для написания документации. Заголовки создаются с помощью символа # перед текстом заголовка. Количество символов # определяет уровень заголовка.
# Заголовок уровня 1
## Заголовок уровня 2
### Заголовок уровня 3
#### Заголовок уровня 4
##### Заголовок уровня 5
###### Заголовок уровня 6
🚩Заголовки в LaTeX Это система подготовки документов, широко используемая для научных и технических документов. В LaTeX заголовки создаются с помощью команд \section, \subsection, \subsubsection и так далее.
\section{Заголовок уровня 1}
\subsection{Заголовок уровня 2}
\subsubsection{Заголовок уровня 3}
\paragraph{Заголовок уровня 4}
\subparagraph{Заголовок уровня 5}
🚩Заголовки в Языке разметки Wiki Многие вики-движки (например, MediaWiki) используют свои синтаксисы для создания заголовков. В MediaWiki заголовки создаются с помощью равно (=) вокруг текста заголовка.
= Заголовок уровня 1 =
== Заголовок уровня 2 ==
=== Заголовок уровня 3 ===
==== Заголовок уровня 4 ====
===== Заголовок уровня 5 =====
====== Заголовок уровня 6 ======
🚩Заголовки в языках Часто не используются так же, как в разметке, но комментарии могут выполнять схожую роль для организации и документирования кода. Примеры синтаксиса для комментариев-заголовков: Python
# Заголовок уровня 1
## Заголовок уровня 2
### Заголовок уровня 3
JavaScript
// Заголовок уровня 1
// =================
// Заголовок уровня 2
// -----------------
// Заголовок уровня 3
// ~~~~~~~~~~~~~~~~~
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое абстрагирование? Это принцип объектно-ориентированного программирования, позволяющий выделять только важные характеристики объекта и скрывать детали его реализации. 1. Оно фокусируется на том, что объект делает, а не на том, как он это делает. 2. Реализуется через абстрактные классы, интерфейсы или методы. 3. Помогает упрощать сложные системы, скрывая ненужные детали и обеспечивая высокую модульность. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

📺 База 1000+ реальных собеседований На программиста, тестировщика, аналитика, проджекта и другие IT профы. Есть собесы от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д. 🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство!

🤔 Что такое абстрагирование? Это принцип программирования и проектирования, который позволяет выделить важные характеристики объекта или системы и скрыть их сложные детали. Основная цель абстрагирования – упростить сложные системы, делая их более понятными и управляемыми, сосредоточив внимание на их основных аспектах и поведении. 🚩Зачем нужно абстрагирование 🟠Снижение сложности Сокращает количество деталей, с которыми нужно работать, что облегчает понимание и работу с системой. 🟠Повышение читаемости кода Упрощает код, делая его более читаемым и легким для поддержки. 🟠Повторное использование кода Создаёт возможность повторного использования общих функций и логики. 🟠Инкапсуляция Позволяет скрывать реализацию и представлять только необходимые интерфейсы для взаимодействия. 🟠Гибкость и расширяемость Облегчает добавление новых функциональностей без изменения существующего кода. 🚩Как используется абстрагирование Абстрагирование в программировании часто реализуется через классы и интерфейсы. Ниже приведены примеры абстракции в объектно-ориентированном программировании (ООП). 🚩Пример абстракции с использованием классов и интерфейсов 🟠Интерфейс Определяет набор методов, которые должны быть реализованы, не указывая, как именно они должны быть реализованы.
interface Shape {
    public function draw();
}
🟠Классы, реализующие интерфейс Реализуют методы, определённые в интерфейсе.
class Circle implements Shape {
    public function draw() {
        echo "Drawing a circle";
    }
}

class Square implements Shape {
    public function draw() {
        echo "Drawing a square";
    }
}
Использование абстракции
function renderShape(Shape $shape) {
    $shape->draw();
}

$circle = new Circle();
$square = new Square();

renderShape($circle); // Вывод: Drawing a circle
renderShape($square); // Вывод: Drawing a square
🚩Плюсы и минусы Снижение сложности Абстракция скрывает сложные детали реализации, облегчая работу с системой. ➕Улучшение читаемости Код становится более понятным и структурированным. ➕Гибкость и расширяемость Облегчает добавление новых функций и изменений. ➕Повторное использование Позволяет использовать общий код в разных частях программы. ➖Избыточность Иногда может приводить к избыточной сложности, если абстракции слишком сложные или используются неправильно. ➖Накладные расходы Может потребоваться больше времени и усилий на создание абстракций и их поддержку. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое шифрование? Это процесс преобразования данных в защищённый формат (шифртекст) с использованием алгоритмов и ключей. Оно защищает информацию от несанкционированного доступа. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие виды запросов есть? В контексте веб-разработки и работы с API, "виды запросов" обычно относятся к HTTP-методам. HTTP-методы — это стандартизированные типы запросов, которые определяют действие, требуемое от веб-сервера. Каждый метод указывает на определённый тип операции над ресурсами. Вот основные методы (виды запросов), используемые в веб-разработке: 🟠GET Назначение: Запрос содержимого указанного ресурса. GET-запросы должны быть идемпотентными, что означает, что их многократное выполнение приводит к одному и тому же результату и не изменяет состояние сервера. Пример использования: Запрос веб-страницы или изображения. 🟠POST Назначение: Отправка данных на сервер для создания нового ресурса. Данные отправляются в теле запроса. POST-запросы не идемпотентны, то есть многократное выполнение может приводить к разным результатам. Пример использования: Отправка формы на веб-сайте. 🟠PUT Назначение: Обновление существующего ресурса или создание нового ресурса по указанному URI. В отличие от POST, PUT идемпотентен. Пример использования: Обновление деталей пользователя. 🟠DELETE Назначение: Удаление указанного ресурса. Пример использования: Удаление записи из базы данных. 🟠PATCH Назначение: Частичное обновление существующего ресурса. PATCH может быть не идемпотентным, в зависимости от того, как он реализован на сервере. Пример использования: Обновление части данных пользователя, например, смена пароля. 🟠HEAD Назначение: Аналогичен GET, но сервер возвращает только заголовки ответа без тела. Используется для извлечения метаданных. Пример использования: Проверка существования ресурса или его последнего обновления. 🟠OPTIONS Назначение: Определение возможностей веб-сервера или параметров подключения для конкретного ресурса. Пример использования: Определение поддерживаемых методов HTTP для URL. 🟠TRACE Назначение: Эхо-запрос. Возвращает в теле ответа полученный запрос. Это может использоваться для диагностики. Из-за соображений безопасности его поддержка на серверах часто отключена. Пример использования: Отладка веб-запросов. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое traits? Traits — это механизм PHP, который позволяет использовать повторно код в разных классах, без необходимости наследования. Traits содержат методы, которые можно внедрить в классы, что позволяет избегать дублирования кода. Они особенно полезны для разделения функциональности между классами, которые не могут наследоваться напрямую. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое сервис локатор? Это паттерн проектирования, который используется для абстрагирования процесса поиска и предоставления зависимостей объектам. Вместо того чтобы объекты сами создавали свои зависимости или получали их через конструкторы, они запрашивают их у специального объекта – локатора сервисов. 🚩Зачем нужен 🟠Упрощение управления зависимостями Все зависимости находятся в одном месте, что упрощает их управление и замену. 🟠Гибкость Легко менять конкретные реализации зависимостей без изменения клиентского кода. 🟠Централизация Все зависимости зарегистрированы и управляются в одном месте. 🟠Улучшение тестирования Легко подменять зависимости на моки для проведения тестов. 🚩Как используется Паттерн Service Locator может быть реализован через создание централизованного реестра, который хранит информацию о различных сервисах и предоставляет их по запросу. 1⃣Создание интерфейсов сервисов
interface Logger {
    public function log($message);
}

interface PaymentProcessor {
    public function processPayment($amount);
}
2⃣Реализация сервисов
class FileLogger implements Logger {
    public function log($message) {
        echo "Logging message to a file: $message";
    }
}

class StripePaymentProcessor implements PaymentProcessor {
    public function processPayment($amount) {
        echo "Processing payment of $amount through Stripe";
    }
}
3⃣Реализация Service Locator
class ServiceLocator {
    private $services = [];

    public function register($serviceName, $service) {
        $this->services[$serviceName] = $service;
    }

    public function get($serviceName) {
        if (!isset($this->services[$serviceName])) {
            throw new Exception("Service not found: " . $serviceName);
        }
        return $this->services[$serviceName];
    }
}
4⃣Регистрация и использование сервисов
$serviceLocator = new ServiceLocator();

// Регистрация сервисов
$serviceLocator->register('logger', new FileLogger());
$serviceLocator->register('paymentProcessor', new StripePaymentProcessor());

// Использование сервисов
$logger = $serviceLocator->get('logger');
$logger->log("This is a log message."); // Вывод: Logging message to a file: This is a log message.

$paymentProcessor = $serviceLocator->get('paymentProcessor');
$paymentProcessor->processPayment(100); // Вывод: Processing payment of 100 through Stripe
🚩Плюсы и минусыЦентрализация Все зависимости хранятся и управляются в одном месте. ➕Гибкость Легко изменять зависимости без изменения кода, который их использует. ➕Удобство тестирования Легко подменять реальные зависимости на моки для тестирования. ➖Скрытые зависимости Зависимости не видны явно в коде, что может усложнить понимание. ➖Сложность Может привести к более сложной архитектуре, особенно в больших приложениях. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое Factory? Это паттерн проектирования, который предоставляет способ создания объектов без указания точного класса. • Фабрика скрывает детали создания объектов, предоставляя интерфейс для их создания. • Пример: ShapeFactory может возвращать объекты разных классов (Circle, Square) на основе входных параметров. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как посчитать функцию если внутри неё много различных действий? Сложность функции можно оценить с помощью Big O (O-нотация) – это способ понять, как увеличивается время работы функции при росте входных данных. 🚩Определение сложности по Big O Константные операции (+, -, *, /, if, return) считаются за O(1). Циклы (for, while) увеличивают сложность** (например, for на N итераций → O(N)). Вложенные циклы (for внутри for) дают O(N²). Рекурсия учитывается как глубина рекурсии. 🚩Примеры расчёта сложности Простая функция (O(1)) – не зависит от входных данных
function addNumbers($a, $b) {
    return $a + $b;
}
Линейная сложность O(N) (цикл)
function printNumbers($n) {
    for ($i = 0; $i < $n; $i++) {
        echo $i;
    }
}
Квадратичная сложность O(N²) (вложенные циклы)
function printPairs($n) {
    for ($i = 0; $i < $n; $i++) {
        for ($j = 0; $j < $n; $j++) {
            echo "($i, $j) ";
        }
    }
}
Логарифмическая сложность O(log N) (деление пополам, бинарный поиск)
function binarySearch($arr, $target) {
    $left = 0;
    $right = count($arr) - 1;

    while ($left <= $right) {
        $mid = floor(($left + $right) / 2);
        
        if ($arr[$mid] == $target) {
            return $mid;
        } elseif ($arr[$mid] < $target) {
            $left = $mid + 1;
        } else {
            $right = $mid - 1;
        }
    }
    return -1;
}
Факториальная сложность O(N!) (перебор всех вариантов)
function factorial($n) {
    if ($n == 1) return 1;
    return $n * factorial($n - 1);
}
🚩Как считать сложность функции с разными действиями? Если в функции разные действия, считаем их отдельно и берём наибольшую сложность.
function complexFunction($n) {
    // O(1)
    $sum = 0;

    // O(N)
    for ($i = 0; $i < $n; $i++) {
        $sum += $i;
    }

    // O(N²)
    for ($i = 0; $i < $n; $i++) {
        for ($j = 0; $j < $n; $j++) {
            echo "Hello";
        }
    }

    return $sum;
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что содержит инкапсуляция кроме сокрытия данных? 1. Контроль доступа: использование модификаторов public, protected, private для ограничения доступа. 2. Инкапсуляция логики: методы класса предоставляют контролируемый интерфейс для работы с данными. 3. Сохранение целостности: защита данных от некорректных изменений извне. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое репликация? Это процесс создания и поддержания копий данных в разных местах для обеспечения доступности, надежности и производительности системы. Она используется в базах данных, файловых системах и других системах хранения данных. 🚩Зачем нужна репликация 🟠Повышение доступности Если одна копия данных становится недоступной из-за сбоя или отключения сервера, другая копия может продолжить обслуживание запросов, минимизируя время простоя. 🟠Улучшение производительности Репликация позволяет распределить нагрузку на несколько серверов, что улучшает время отклика системы при больших объемах запросов. 🟠Резервное копирование и восстановление данных Репликация обеспечивает наличие резервных копий данных, которые можно использовать для восстановления системы после сбоя. 🟠Географическое распределение данных Репликация позволяет хранить данные ближе к пользователям, что снижает задержку при доступе к данным. 🚩Виды репликации 🟠Синхронная репликация Данные одновременно записываются на основной и реплицированный серверы. Высокая консистентность данных. Замедление операций записи, так как они должны быть подтверждены на всех репликах. 🟠Асинхронная репликация Данные сначала записываются на основной сервер, а затем копируются на реплицированный сервер с задержкой. Быстрые операции записи на основной сервер. Возможность временной неконсистентности данных между серверами. 🟠Полная репликация Все данные копируются на все реплицированные серверы. Простота реализации и высокая доступность данных. Высокие затраты на хранение и передачу данных. 🟠Частичная репликация Только часть данных копируется на реплицированные серверы. Экономия ресурсов хранения и передачи данных. Более сложное управление данными. 🚩Пример использования MySQL поддерживает репликацию, что позволяет автоматически копировать данные с одного сервера (мастера) на один или несколько других серверов (слейвов). 1⃣Настройка мастера
-- Включаем бинарные логи на мастере
[mysqld]
log-bin=mysql-bin
server-id=1
2⃣Создание пользователя для репликации на мастере
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
3⃣Настройка слейва
-- Настройки слейва
[mysqld]
server-id=2
4⃣Запуск репликации на слейве
CHANGE MASTER TO
    MASTER_HOST='master_host',
    MASTER_USER='replica_user',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS= 107;
START SLAVE;
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое Entity? Это объект, представляющий конкретную сущность в системе или домене. Обычно он имеет уникальный идентификатор и может изменяться в течение своего жизненного цикла. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое di container? Это специальный инструмент или объект в программировании, который управляет созданием и внедрением зависимостей в объекты. Этот контейнер автоматически решает, какие зависимости требуются объекту, и предоставляет их при создании объекта, тем самым упрощая управление зависимостями в приложении. 🚩Зачем нужен DI-контейнер 🟠Автоматизация управления зависимостями DI-контейнер автоматически создает и внедряет зависимости, избавляя от необходимости вручную передавать их в объекты. 🟠Гибкость и модульность Позволяет легко заменять реализации зависимостей, не изменяя код, который их использует. 🟠Упрощение тестирования Обеспечивает легкую замену зависимостей на моки или заглушки для тестирования. 🟠Улучшение структуры кода Разделяет создание объектов и их использование, способствуя более чистой архитектуре. 🚩Как используется DI-контейнер DI-контейнеры предоставляют различные методы для регистрации зависимостей и их последующего получения. Ниже приведен пример реализации простого DI-контейнера. 1⃣Создание интерфейсов и реализаций зависимостей
interface Logger {
    public function log($message);
}

class FileLogger implements Logger {
    public function log($message) {
        echo "Logging message to a file: $message";
    }
}

interface PaymentProcessor {
    public function processPayment($amount);
}

class StripePaymentProcessor implements PaymentProcessor {
    public function processPayment($amount) {
        echo "Processing payment of $amount through Stripe";
    }
}
2⃣Реализация DI-контейнера
class DIContainer {
    private $bindings = [];

    public function bind($abstract, $concrete) {
        $this->bindings[$abstract] = $concrete;
    }

    public function resolve($abstract) {
        if (!isset($this->bindings[$abstract])) {
            throw new Exception("No binding found for $abstract");
        }

        $concrete = $this->bindings[$abstract];

        // Если $concrete является замыканием, вызываем его
        if ($concrete instanceof Closure) {
            return $concrete($this);
        }

        // Создаем новый объект конкретного класса
        return new $concrete;
    }
}
3⃣Регистрация зависимостей и их использование
$container = new DIContainer();

// Регистрация зависимостей
$container->bind(Logger::class, FileLogger::class);
$container->bind(PaymentProcessor::class, function($container) {
    return new StripePaymentProcessor();
});

// Получение зависимостей
$logger = $container->resolve(Logger::class);
$logger->log("This is a log message."); // Вывод: Logging message to a file: This is a log message.

$paymentProcessor = $container->resolve(PaymentProcessor::class);
$paymentProcessor->processPayment(100); // Вывод: Processing payment of 100 through Stripe
🚩Плюсы и минусыАвтоматизация Снижает необходимость ручного создания и передачи зависимостей. ➕Гибкость Легко изменять конкретные реализации зависимостей. ➕Тестируемость Упрощает замену зависимостей на моки для тестирования. ➕Чистота кода Упрощает код, делая его более модульным и читаемым. ➖Сложность настройки Могут потребоваться значительные усилия для первоначальной настройки DI-контейнера. ➖Производительность В некоторых случаях может снижать производительность из-за необходимости разрешения зависимостей. Ставь 👍 и забирай 📚 Базу знаний

🤔 Как реализуется полиморфизм ? 1. Полиморфизм реализуется через наследование, интерфейсы и абстрактные классы. 2. Родительский класс или интерфейс может быть заменён его наследником, сохраняя единообразие вызовов. 3. Пример: использование одного метода render() для вывода разного контента в зависимости от конкретного класса. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое транзакции? Это последовательности операций с базой данных, которые рассматриваются как единое целое. Они обеспечивают целостность данных, гарантируя, что либо все операции в транзакции выполнены успешно, либо никакие изменения не будут применены, если произошла ошибка. 🟠Atomicity (Атомарность) Гарантирует, что все операции в рамках транзакции будут выполнены полностью или не будут выполнены вовсе. Если любая из операций внутри транзакции не удалась, все изменения откатываются.
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
COMMIT;    
🟠Consistency (Согласованность) Обеспечивает перевод базы данных из одного согласованного состояния в другое. Транзакции должны оставлять базу данных в корректном состоянии, удовлетворяющем всем правилам и ограничениям. 🟠Isolation (Изолированность) Обеспечивает изолированность транзакций друг от друга. Это означает, что результаты промежуточных операций одной транзакции невидимы для других транзакций до завершения первой транзакции. 🟠Durability (Долговечность) Гарантирует, что изменения, внесённые успешно завершённой транзакцией, будут сохранены в базе данных даже в случае сбоя системы. 🚩Использования транзакций 🟠Перевод денег между счетами Необходимо убедиться, что обе операции (списание и зачисление) выполнены успешно, чтобы избежать ситуации, когда деньги списаны, но не зачислены.
BEGIN TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;

COMMIT; -- Если обе операции прошли успешно
-- ROLLBACK; -- Если произошла ошибка    
🟠Создание заказа в интернет-магазине Важно убедиться, что все связанные операции (добавление записи о заказе, обновление статуса товаров, запись данных о платеже) выполнены успешно.
BEGIN TRANSACTION;

INSERT INTO orders (user_id, order_date) VALUES (1, NOW());
UPDATE products SET stock = stock - 1 WHERE product_id = 101;
INSERT INTO payments (order_id, amount) VALUES (LAST_INSERT_ID(), 99.99);

COMMIT; -- Если все операции прошли успешно
-- ROLLBACK; -- Если произошла ошибка
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое DI Container? Это инструмент для управления зависимостями приложения. • Он автоматически создаёт объекты и предоставляет их другим компонентам, решая, какие зависимости инъектировать. • Контейнер упрощает реализацию DI, улучшает модульность и тестируемость приложения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чем заключается Enterprise Service Bus? Enterprise Service Bus (ESB) – это промежуточное программное обеспечение (middleware), которое объединяет разные системы и управляет их взаимодействием. 🚩Зачем нужен ESB? (Проблема без него) Допустим, у нас есть 4 системы: CRM (Клиенты) ERP (Бухгалтерия) Склад Интернет-магазин Без ESB каждая система должна напрямую связываться со всеми остальными
CRM ↔️ ERP
CRM ↔️ Склад
CRM ↔️ Интернет-магазин
ERP ↔️ Склад
ERP ↔️ Интернет-магазин
Склад ↔️ Интернет-магазин
🚩Как ESB решает проблему? ESB действует как единый центр интеграции
CRM → ESB → ERP
Склад → ESB → Интернет-магазин
ERP → ESB → CRM
🚩Как работает ESB? (Принцип) ESB использует 4 ключевых компонента Маршрутизация (Routing) – определяет, куда отправлять данные. Трансформация данных (Transformation) – конвертирует данные (например, из XML в JSON). Безопасность (Security) – контролирует доступ. Очереди сообщений (Message Queue) – управляет очередями и асинхронными задачами. CRM отправляет заказ в формате JSON → ESB принимает его. ESB конвертирует JSON в XML, понятный ERP. ESB отправляет данные в ERP и склад. Если склад временно недоступен, ESB ставит запрос в очередь и отправляет позже. 🚩Где используется ESB? Крупные компании с множеством сервисов (банки, ритейл, логистика). Интеграция старых и новых систем (например, SAP + микросервисы). Высоконагруженные системы, где важна отказоустойчивость. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое подготовка запросов? Это запросы, которые компилируются сервером перед выполнением. 1. Они защищают от SQL-инъекций, так как параметры передаются отдельно от запроса. 2. Улучшают производительность, так как один запрос можно выполнить несколько раз с разными данными. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний