en
Feedback
Библиотека собеса по PHP | вопросы с собеседований

Библиотека собеса по PHP | вопросы с собеседований

Open in Telegram

Вопросы с собеседований по PHP и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/9f3affba Для обратной связи: @proglibrary_feeedback_bot

Show more
3 148
Subscribers
No data24 hours
-37 days
-730 days
Posts Archive
Как Laravel упрощает тестирование и почему это важно? Laravel упрощает тестирование благодаря встроенным инструментам и структуре, которые способствуют разработке тестируемого кода, обеспечивая правильную работу приложения и его удобное обслуживание по мере роста. Тестирование важно, потому что оно помогает выявлять ошибки на раннем этапе, гарантирует, что новые функции не нарушат существующую функциональность, и даёт уверенность в том, что код работает, как ожидалось, в продакшене. 1. Инструменты для тестирования и настройка окружения Тестовое окружение: Laravel включает выделенное тестовое окружение, которое можно настроить отдельно от основного приложения. Это позволяет изолировать тестовые базы данных и гарантирует, что тесты не повлияют на реальные данные. Транзакции базы данных: Трейт RefreshDatabase в Laravel позволяет откатывать транзакции базы данных после каждого теста, что сохраняет базу данных в чистом состоянии и обеспечивает согласованность тестов. 2. Интеграция с PHPUnit Интеграция с PHPUnit: Laravel использует PHPUnit как основную тестовую среду, и предоставляет конфигурационный файл phpunit.xml, предварительно настроенный для Laravel-проектов. Это обеспечивает стандартизированное тестирование и широкую поддержку для написания и запуска юнит- и функциональных тестов. Встроенные утверждения: Laravel предоставляет множество утверждений, которые упрощают проверку состояния приложения, HTTP-ответов и валидации данных. 3. Юнит-тестирование для изолированных компонентов Архитектура Laravel, поддерживающая внедрение зависимостей и поставщиков сервисов, побуждает к написанию модульного кода, который легко тестировать отдельно. С помощью библиотеки Mockery Laravel позволяет создавать моки зависимостей, чтобы можно было сосредоточиться на тестировании изолированных частей кода без учета внешних интеграций. 4. Функциональные тесты для интегрированной функциональности HTTP-тестирование: HTTP-методы Laravel позволяют тестировать маршруты, ответы, отправку форм и API через простой и читаемый синтаксис, такой как $this->get('/route'). Тестирование браузера: С помощью Laravel Dusk можно проводить сквозное тестирование взаимодействия с JavaScript и фронтендом, симулируя действия пользователя в браузере, что идеально для тестирования сложных пользовательских интерфейсов. 5. Вспомогательные инструменты и фабрики Фабрики моделей: Фабрики Laravel упрощают генерацию тестовых данных без необходимости вручную создавать экземпляры моделей. Это особенно полезно для тестирования базы данных, так как позволяет быстро создавать данные в различных состояниях. Сидеры и Faker: Laravel также интегрирован с Faker для генерации фальшивых данных и позволяет использовать сидеры для определения начальных состояний базы данных.

Что такое Composer? Composer — это инструмент для управления зависимостями в PHP-приложениях. Он позволяет легко устанавливать, обновлять и управлять библиотеками и фреймворками, которые используются в проекте. Основные функции Composer: Установка зависимостей: Composer позволяет определить необходимые библиотеки и их версии в файле composer.json, а затем установить их с помощью команды composer install. Обновление зависимостей: После установки библиотек, можно обновить их до последних версий, указанных в файле composer.json, с помощью команды composer update. Автозагрузка классов: Composer автоматически создает файл автозагрузки, который позволяет использовать классы из установленных зависимостей без необходимости явного подключения файлов. Автоматическое разрешение зависимостей: Composer управляет разрешением зависимостей, учитывая совместимость версий между различными библиотеками. Создание собственных пакетов: Composer позволяет создавать собственные пакеты для повторного использования в различных проектах и их публикации в репозитории Packagist для общего использования. Использование Composer значительно упрощает управление зависимостями в PHP-проектах и помогает поддерживать их актуальность и безопасность.

Что такое функции soundex() и metaphone() в PHP? Функция soundex(): Функция soundex() вычисляет звуковой индекс строки. Sound
Что такое функции soundex() и metaphone() в PHP? Функция soundex(): Функция soundex() вычисляет звуковой индекс строки. Soundex — это фонетический алгоритм, который назначает код слову на основе его произношения. Он применяется преимущественно для поиска слов, которые звучат похоже, но могут быть написаны по-разному. Функция сокращает слова до четырехсимвольного кода, который представляет его звучание. Это полезно для задач, таких как поиск имен, которые звучат похоже, но имеют разные написания. Функция metaphone(): Функция metaphone() вычисляет метафонический ключ строки. Metaphone — это еще один фонетический алгоритм, но он более продвинут, чем Soundex. Он преобразует слово в фонетический ключ, состоящий из одной или нескольких букв. В отличие от Soundex, Metaphone учитывает вариации произношения и более эффективен для английских слов.

📢Что делать, когда процессы «пытаются» одновременно получить доступ к данным без правильной синхронизации? Это называется «состоянием гонки». О том, как выйти из такого состояния, мы поговорим на открытом онлайн-уроке «Race condition, и как с ним бороться» 📅 Дата и время: 1 ноября, 20:00 МСК 🔗Записаться на урок Вы узнаете: - О типовых сценариях возникновения состояния гонки - Как и для чего использовать пакет Symfony Lock - Как восстанавливать работу с БД после исключений Будет интересно php-разработчикам 💡Встречаемся в преддверии старта курса «Symfony Framework». Все участники вебинара получат специальную цену на обучение! ➡️Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

📢Что делать, когда процессы «пытаются» одновременно получить доступ к данным без правильной синхронизации? Это называется «с
📢Что делать, когда процессы «пытаются» одновременно получить доступ к данным без правильной синхронизации? Это называется «состоянием гонки». О том, как выйти из такого состояния, мы поговорим на открытом онлайн-уроке «Race condition, и как с ним бороться» 📅 Дата и время: 1 ноября, 20:00 МСК 🔗Записаться на урок Вы узнаете: - О типовых сценариях возникновения состояния гонки - Как и для чего использовать пакет Symfony Lock - Как восстанавливать работу с БД после исключений Будет интересно php-разработчикам 💡Встречаемся в преддверии старта курса «Symfony Framework». Все участники вебинара получат специальную цену на обучение! ➡️Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Что такое TDD? TDD (Test-Driven Development) — это методология разработки программного обеспечения, в которой разработка программы начинается с написания тестов, которые определяют желаемое поведение программы. Затем код разрабатывается и изменяется таким образом, чтобы эти тесты проходили успешно. Процесс TDD обычно состоит из трех шагов, известных как «Красный», «Зеленый» и «Рефакторинг»: Красный (Red): Сначала пишутся тесты для новой функциональности или для исправления ошибок. Поскольку этот этап выполняется до написания реализации, все тесты должны завершаться неудачей (иметь статус «красный»). Зеленый (Green): Затем пишется минимальное количество кода, необходимое для прохождения тестов. Цель — сделать все тесты прошедшими (иметь статус «зеленый»). Рефакторинг (Refactor): После того как все тесты прошли успешно, код можно улучшить, переработав его для улучшения структуры, производительности и т. д., сохраняя при этом поведение программы неизменным. Это позволяет улучшать код без риска нарушения его функциональности.

Что такое план выполнения запроса и как его узнать? План выполнения запроса (Query Execution Plan) — это детальный анализ того, как база данных будет выполнять запрос, включая порядок обработки данных, используемые индексы, методы соединения и другие оптимизации запроса. Понимание плана выполнения запроса может помочь оптимизировать производительность запросов, выявляя возможные проблемы и улучшая структуру запроса или индексы. В разных системах управления базами данных (СУБД) есть различные способы получения плана выполнения запроса. Ниже приведены общие методы для некоторых из них: MySQL / MariaDB: Используйте ключевое слово EXPLAIN перед запросом SQL. PostgreSQL: Используйте ключевое слово EXPLAIN перед запросом SQL. Для более подробного анализа используйте ключевое слово EXPLAIN ANALYZE. SQL Server: Используйте ключевое слово EXPLAIN перед запросом SQL. Для более подробного анализа используйте команду SET SHOWPLAN_TEXT ON;, а затем выполните запрос. SQLite: Используйте ключевое слово EXPLAIN QUERY PLAN перед запросом SQL. Oracle: Используйте инструкцию EXPLAIN PLAN FOR. Полученный план выполнения запроса может быть сложным для понимания, но он предоставляет ценную информацию о том, как база данных обрабатывает ваш запрос, что может помочь в оптимизации его производительности.

Какова разница между функциями session_unregister() и session_unset()? В PHP функции session_unregister() и session_unset() использовались для работы с переменными сессии. Однако начиная с PHP 5.3.0, функция session_unregister() была признана устаревшей, и её использование крайне не рекомендуется. Вместо неё следует использовать unset($_SESSION['имя_переменной']). session_unregister() (Устарела): Эта функция использовалась для удаления глобальной переменной из текущей сессии. Была признана устаревшей в PHP 5.3.0 и удалена в PHP 5.4.0. Основная причина устаревания связана с тем, что она зависела от устаревшей функциональности register_globals, которая считается уязвимостью безопасности. session_unset(): Эта функция используется для освобождения всех переменных сессии. Она не уничтожает саму сессию или сбрасывает сессионную куку; она только очищает данные сессии. Рекомендуется использовать unset($_SESSION['имя_переменной']) для удаления определённой переменной сессии. В современной разработке на PHP рекомендуется использовать unset($_SESSION['имя_переменной']) или $_SESSION['имя_переменной'] = null; для удаления конкретных переменных сессии и session_unset() для очистки всех переменных сессии. Использование session_unregister() следует избегать из-за её устаревания и потенциальных проблем с безопасностью, связанных с register_globals.

Что вам известно о шаблонах, которые применяются в ORM? В контексте Object-Relational Mapping (ORM), шаблоны (или паттерны) играют важную роль в проектировании и организации работы с базой данных. Вот несколько распространенных шаблонов, используемых в ORM: Шаблон ActiveRecord: Этот шаблон описывает объект, который инкапсулирует как данные, так и поведение для работы с этими данными. Обычно каждая запись в базе данных представляется объектом ActiveRecord. Он обеспечивает прямое соответствие между объектами и записями в базе данных. Шаблон Repository: Repository предоставляет абстракцию для работы с коллекциями объектов. Он предоставляет методы для поиска, сохранения, удаления и запросов к данным. Репозиторий инкапсулирует логику доступа к данным и предоставляет интерфейс для работы с этими данными. Шаблон Identity Map: Этот шаблон обеспечивает глобальное отображение идентичности объектов в приложении. Он гарантирует, что каждый объект в приложении имеет только один экземпляр в памяти, даже если он загружен из базы данных несколько раз. Это помогает избежать проблем с непоследовательностью данных и улучшает производительность. Шаблон Unit of Work: Этот шаблон отслеживает изменения, сделанные с объектами в рамках одной транзакции базы данных. Он обеспечивает согласованность данных и управляет коммитом или откатом изменений. Шаблон Unit of Work также может использоваться для оптимизации работы с базой данных, пакетного сохранения изменений и управления транзакциями. Эти шаблоны предоставляют средства для упрощения работы с базой данных в объектно-ориентированных приложениях, обеспечивая гибкость, производительность и согласованность данных. Их использование позволяет разработчикам эффективно работать с данными и минимизировать повторение кода.

Как вы понимаете Exception flow в контексте PHP? Exception flow в контексте PHP относится к управлению ошибками и исключениям
+2
Как вы понимаете Exception flow в контексте PHP? Exception flow в контексте PHP относится к управлению ошибками и исключениями во время выполнения программы. Когда возникает ошибка или неожиданное условие, которое не может быть обработано нормальным образом, PHP может выбросить исключение (exception). Процесс обработки исключений в PHP следующий: Выброс исключения (Throwing an Exception): Когда в коде происходит ошибка или неожиданное событие, программа может создать объект исключения и «бросить» его с помощью ключевого слова throw. Перехват исключения (Catching an Exception): Для обработки исключений можно использовать блоки try-catch. Код, который может вызывать исключение, помещается в блок try, а блок catch используется для обработки возможного исключения. Finally: Ключевое слово finally может использоваться вместе с блоками try-catch для выполнения кода в любом случае, независимо от того, возникло исключение или нет.

⚡️Разыгрываем флагманский смартфон «Библиотека программиста» разыгрывает один из трех смартфонов на выбор: 🔹Samsung Galaxy S
⚡️Разыгрываем флагманский смартфон «Библиотека программиста» разыгрывает один из трех смартфонов на выбор: 🔹Samsung Galaxy S24 Ultra на 1 ТБ 🔹Xiaomi 14 Ultra на 512 ГБ 🔹iPhone 16 Pro Max на 512 ГБ 🔥 А еще 99 участников розыгрыша получат скидку 50% на наш курс Базовые модели ML и приложения! Промокод будет действителен до 20 ноября. Условия просты: → подписаться на Библиотека нейротекста → подписаться на Библиотека нейрозвука → подписаться на Библиотека нейрокартинок → нажать на кнопку «Участвовать» под этим постом Итоги появятся 30 октября в 20:00 по московскому времени в нашем канале Библиотека программиста. Затем мы свяжемся с победителем, который сам выберет смартфон. Тем, кто получит промокод, мы вышлем его в течение недели после окончания розыгрыша. ⚠️ Убедитесь, что вам можно написать в личные сообщения или следите за результатами — если мы не сможем с вами связаться, то не сможем и отправить приз. Доставить мы можем только в города России и Беларуси.

Какие техники вы используете для оптимизации запросов к базе данных в Laravel? 1. Жадная загрузка (Избегание проблемы N+1) По умолчанию Laravel использует ленивую загрузку, что может вызвать проблему N+1 запроса. Например, когда выполняется запрос для коллекции записей, а затем для каждой записи делается отдельный запрос к связанным данным. Жадная загрузка помогает избежать этой проблемы, выполняя один запрос для связанных данных.
// Ленивая загрузка (неэффективно)
$posts = Post::all();
foreach ($posts as $post) {
    echo $post->user->name;
}

// Жадная загрузка (оптимизировано)
$posts = Post::with('user')->get();
foreach ($posts as $post) {
    echo $post->user->name;
}
2. Использование select для ограничения извлекаемых столбцов Часто нет необходимости извлекать все столбцы таблицы. Используйте метод select, чтобы выбирать только нужные данные.
// Извлечение всех столбцов (неэффективно)
$users = User::all();

// Извлечение только необходимых столбцов (оптимизировано)
$users = User::select('id', 'name', 'email')->get();
3. Чанковка запросов При работе с большими наборами данных загрузка всего набора может перегрузить память. Используйте чанковку для извлечения данных небольшими порциями.
// Извлечение по 100 записей за раз
User::chunk(100, function ($users) {
    foreach ($users as $user) {
        // Обработка каждого пользователя
    }
});
4. Использование whereIn вместо нескольких запросов Если вам нужно проверить несколько значений для одного столбца, используйте whereIn, чтобы избежать нескольких отдельных запросов.
// Вместо выполнения нескольких запросов
$users1 = User::where('role_id', 1)->get();
$users2 = User::where('role_id', 2)->get();

// Использование whereIn для одного запроса
$users = User::whereIn('role_id', [1, 2])->get();
6. Индексация столбцов базы данных Убедитесь, что столбцы, по которым часто выполняются запросы (например, используемые в условиях where), имеют соответствующие индексы в базе данных. Это значительно ускорит выполнение запросов. Индексы можно создать через миграции Laravel:
Schema::table('users', function (Blueprint $table) {
    $table->index('email');
});
7. Избегайте COUNT(*) с Eloquent, если это не нужно Вместо загрузки всех строк только для их подсчета, используйте функцию count() напрямую.
// Неэффективно: загрузка всех записей для подсчета
$users = User::all()->count();

// Эффективно: использование count напрямую
$userCount = User::count();
8. Кэширование частых запросов Если одни и те же запросы выполняются часто, рассмотрите возможность кэширования их результатов, чтобы уменьшить нагрузку на базу данных.
// Кэширование результата запроса на 60 минут
$users = Cache::remember('users', 60, function () {
    return User::all();
});
9. Использование DB::raw для сложных SQL-запросов Для сложных запросов или в случаях, когда требуются определенные SQL-оптимизации (например, использование функций или подзапросов), можно использовать DB::raw. 10. Использование пула подключений к базе данных Использование пула подключений (connection pooling), где это возможно, позволяет повторно использовать существующие подключения к базе данных вместо открытия новых для каждого запроса. Это может значительно сократить задержки выполнения запросов, хотя это больше относится к настройкам сервера, чем к самому Laravel.

Для чего используется функция func_num_args()? В PHP функция func_num_args() используется для получения количества аргументов
Для чего используется функция func_num_args()? В PHP функция func_num_args() используется для получения количества аргументов, переданных в функцию. Она часто применяется в случае переменного числа аргументов, когда функция может принимать различное количество параметров. В примере функция sum() принимает любое количество аргументов и вычисляет их сумму. Внутри функции func_num_args() используется для определения количества переданных аргументов, а func_get_arg($i) — для получения значения каждого аргумента по его индексу ($i). Это позволяет функции динамически обрабатывать разное количество аргументов.

Какое криптографическое расширение предоставляет возможность генерации и проверки цифровых подписей? В PHP цифровые подписи м
+1
Какое криптографическое расширение предоставляет возможность генерации и проверки цифровых подписей? В PHP цифровые подписи можно генерировать и проверять с помощью расширения OpenSSL, которое предоставляет функции для различных криптографических операций, включая цифровые подписи.

Git. Что такое stash и зачем он нужен? Stash в Git — это механизм, который позволяет временно сохранить изменения в рабочей директории, чтобы потом вернуться к ним позже. Обычно он используется в следующих случаях: Переключение веток: Когда вы работаете над одной веткой и хотите переключиться на другую, но не хотите коммитить текущие изменения. Исправление ошибок в коде: Если вы обнаруживаете ошибку, но хотите сначала завершить текущую задачу, прежде чем работать над исправлением. Резервное копирование: Временное сохранение изменений, чтобы вы могли вернуться к ним в случае необходимости. Чистка рабочей директории: Если вы хотите временно убрать изменения из рабочей директории, чтобы они не мешали выполнению других задач. Для использования stash в Git можно воспользоваться командой git stash. Эта команда сохраняет текущие изменения в стеке stash. Позже, когда вам потребуется, вы можете применить эти изменения с помощью команды git stash apply или git stash pop. git stash apply применяет изменения, не удаляя их из stash, в то время как git stash pop применяет изменения и сразу удаляет их из stash.

В чём разница между методами __sleep и __wakeup в PHP? __sleep() и __wakeup() — это магические методы в PHP, которые использу
+1
В чём разница между методами __sleep и __wakeup в PHP? __sleep() и __wakeup() — это магические методы в PHP, которые используются в связке с сериализацией и десериализацией объектов. Вот их краткое описание: __sleep(): Этот метод вызывается автоматически, когда объект готовится к сериализации (например, с помощью функции serialize()). Он позволяет определить, какие свойства объекта должны быть сериализованы. Вы возвращаете массив с именами свойств, которые должны быть сериализованы. Если у вас есть чувствительные данные или ресурсы, которые не должны быть сериализованы, вы можете удалить или изменить их в этом методе. __wakeup(): Этот метод вызывается автоматически при десериализации объекта (например, с помощью функции unserialize()). Он позволяет повторно инициализировать ресурсы или выполнять любую необходимую настройку после десериализации. Если ваш объект требует специальной обработки после десериализации, вы можете определить это поведение в этом методе. В заключение, __sleep() используется для контроля над тем, какие свойства сериализуются, а __wakeup() используется для выполнения действий после десериализации. Они предоставляют хуки для настройки процесса сериализации и десериализации объектов в PHP.

❗Вакансии «Библиотеки программиста» — ждем вас в команде! Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем: 👉контент-менеджеров для ведения телеграм-каналов 👉Переводчик и автор оригинальных статей Подробности тут Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴 Ждем ваших откликов 👾

Что такое сериализация и десериализация? Сериализация и десериализация — это процессы преобразования данных из их структурированного формата (например, объекты, массивы) в последовательность байтов (обычно в виде строки) и обратно. В PHP для этих целей используются функции serialize() и unserialize(). Сериализация: Определение: Сериализация — это процесс преобразования структурированных данных (например, объектов, массивов) в строку, которую можно сохранить или передать. Функция в PHP: serialize() — принимает переменную и возвращает её строковое представление. Десериализация: Определение: Десериализация — это процесс восстановления структурированных данных из их строкового представления. Функция в PHP: unserialize() — принимает строку, созданную с помощью serialize(), и возвращает восстановленные данные. Применение сериализации и десериализации: Хранение данных: Сериализация может использоваться для сохранения состояния объектов или массивов в файле или в базе данных. Передача данных: Сериализация может быть полезной при передаче данных между разными частями приложения, например, при работе с сетью или сохранении состояния сеанса. Важно отметить, что не все данные могут быть сериализованы. Например, ресурсы (resource), некоторые типы объектов и замыкания не могут быть корректно сериализованы и десериализованы в PHP.

Как реализовать и использовать пользовательские правила валидации в Laravel? В Laravel можно создать и использовать пользовательские правила валидации с помощью механизма кастомных валидаторов. Это полезно, когда встроенных правил валидации недостаточно для ваших нужд. Шаги для создания и использования пользовательского правила валидации: 1. Создание пользовательского правила Для создания нового правила в Laravel можно воспользоваться artisan-командой: php artisan make:rule CustomRuleName Это создаст файл правила в директории app/Rules. 2. Реализация правила После создания файла правила, откройте его и настройте логику валидации. Например, правило для проверки строки на заглавную букву может выглядеть так:
<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class StartsWithUppercase implements Rule
{
    /**
     * Создать новый экземпляр правила.
     */
    public function __construct()
    {
        //
    }

    /**
     * Определить, проходит ли атрибут проверку.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        // Проверка, что первая буква заглавная
        return mb_strtoupper(mb_substr($value, 0, 1)) === mb_substr($value, 0, 1);
    }

    /**
     * Получить сообщение об ошибке валидации.
     *
     * @return string
     */
    public function message()
    {
        return 'The :attribute must start with an uppercase letter.';
    }
}
3. Использование правила в контроллере или форме Чтобы применить пользовательское правило, просто укажите его в массиве правил в вашем контроллере или форме. Например:
use App\Rules\StartsWithUppercase;

public function store(Request $request)
{
    $validated = $request->validate([
        'title' => ['required', new StartsWithUppercase()],
    ]);

    // Дальнейшая логика сохранения данных...
}
Таким образом, когда поле title не будет начинаться с заглавной буквы, сработает ошибка валидации, и сообщение будет взято из метода message() вашего правила. 4. Локализация сообщения Для того чтобы локализовать сообщение об ошибке, можно изменить метод message() так, чтобы он использовал файл локализации:
public function message()
{
    return __('validation.custom.uppercase');
}
А затем в resources/lang/ru/validation.php добавить ключ для локализации:
'custom' => [
    'uppercase' => 'Заголовок должен начинаться с заглавной буквы.',
],
5. Валидация без создания классов (быстрый способ) Если нужно быстро создать кастомную валидацию без создания отдельного класса, можно использовать замыкания в методе validate():
$request->validate([
    'title' => ['required', function ($attribute, $value, $fail) {
        if (mb_strtoupper(mb_substr($value, 0, 1)) !== mb_substr($value, 0, 1)) {
            $fail('The ' . $attribute . ' must start with an uppercase letter.');
        }
    }],
]);

Что такое агрегатные функции SQL? Приведите несколько примеров. Агрегатные функции в SQL это функции, которые применяются к набору значений и возвращают единое вычисленное значение. Они используются для выполнения вычислительных операций над группами строк данных. Некоторые из наиболее распространенных агрегатных функций в SQL включают в себя: SUM: Вычисляет сумму значений в столбце. AVG: Вычисляет среднее значение для значений в столбце. COUNT: Подсчитывает количество строк в результате запроса. MIN: Находит минимальное значение в столбце. MAX: Находит максимальное значение в столбце. GROUP_CONCAT: Собирает значения из столбца в единый текстовый список. STDEV: Вычисляет стандартное отклонение значений в столбце. VARIANCE: Вычисляет дисперсию значений в столбце. Эти функции могут быть использованы как в простых, так и в сложных запросах для анализа данных и получения нужной информации из базы данных.