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

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

رفتن به کانال در Telegram

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

نمایش بیشتر
2 341
مشترکین
-124 ساعت
-47 روز
-2430 روز
آرشیو پست ها
🤔 В каких случаях используют индексы? Индексы в базах данных используются для ускорения операций поиска и сортировки данных. Они создаются на столбцах, по которым часто выполняются запросы, такие как `SELECT`, `WHERE` или `ORDER BY`. Индексы позволяют базе данных быстро находить нужные записи без необходимости сканировать всю таблицу. Однако индексы занимают дополнительное место и могут замедлять операции вставки и обновления данных, поэтому их следует использовать с осторожностью. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое транзакции? Это последовательности операций с базой данных, которые рассматриваются как единое целое. Они обеспечивают целостность данных, гарантируя, что либо все операции в транзакции выполнены успешно, либо никакие изменения не будут применены, если произошла ошибка. 🟠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; -- Если произошла ошибка   
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Что такое микросервисная архитектура? Это стиль архитектуры программного обеспечения, при котором приложение разбивается на множество мелких, независимых сервисов, каждый из которых выполняет свою узкую задачу и взаимодействует с другими сервисами через четко определенные интерфейсы, такие как HTTP API или сообщения. 🚩Основные принципы 🟠Декомпозиция: Приложение разбивается на независимые сервисы, каждый из которых отвечает за конкретную функциональность или бизнес-логику. 🟠Автономность: Каждый микросервис может разрабатываться, деплоиться и масштабироваться независимо от других. 🟠Технологическая гибкость: Микросервисы могут быть написаны на разных языках программирования и использовать различные технологии, подходящие для их задач. 🟠Легковесные коммуникации: Сервисы взаимодействуют друг с другом через легковесные протоколы, такие как HTTP/REST, gRPC, AMQP и другие. 🟠Децентрализованное управление данными: Каждый микросервис может иметь свою собственную базу данных или хранилище данных, что упрощает управление и масштабирование. 🚩ПлюсыМасштабируемость: Легко масштабировать отдельные компоненты системы в зависимости от их нагрузки. ➕Гибкость в разработке: Различные команды могут работать над разными микросервисами одновременно, используя подходящие для них технологии. Надежность: Отказ одного микросервиса не приводит к краху всей системы, так как остальные продолжают работать. Упрощенное развертывание: Можно обновлять и развертывать микросервисы независимо друг от друга. ➕Улучшенное управление кодовой базой: Кодовая база становится более управляемой благодаря меньшему размеру каждого микросервиса. 🚩МинусыСложность: Управление распределенной системой может быть сложным, включая мониторинг, логирование, и отладку. ➖Коммуникационные накладные расходы: Взаимодействие между сервисами через сеть может добавить задержки и требует надежной сетевой инфраструктуры. ➖Управление данными: Децентрализованные данные могут привести к проблемам согласованности и необходимости сложной синхронизации. ➖Тестирование: Тестирование системы из множества микросервисов может быть более сложным по сравнению с монолитными приложениями. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое SOLID? SOLID — это набор из пяти принципов объектно-ориентированного проектирования, направленных на создание более устойчивого и поддерживаемого кода. Эти принципы включают: Single Responsibility (одна ответственность), Open/Closed (открытость для расширения, закрытость для изменений), Liskov Substitution (замещение Лисков), Interface Segregation (разделение интерфейсов) и Dependency Inversion (инверсия зависимостей). Применение SOLID помогает избежать чрезмерной сложности и делает код более гибким. Эти принципы часто используются для улучшения архитектуры приложений. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое магические методы? Это специальные методы, которые имеют префикс __ (две подчёркивания) и предназначены для выполнения определённых действий, когда происходят определённые события в объектах. 🚩Основные 🟠`__construct` и `__destruct` __construct: Вызывается при создании нового объекта. __destruct: Вызывается при удалении объекта.
class MyClass {
    public function __construct() {
        echo "Object created";
    }

    public function __destruct() {
        echo "Object destroyed";
    }
}

$obj = new MyClass(); // выводит: Object created
unset($obj); // выводит: Object destroyed    
🟠`__call` и `__callStatic` __call: Вызывается при вызове недоступного метода в контексте объекта. __callStatic: Вызывается при вызове недоступного статического метода.
    class MyClass {
        public function __call($name, $arguments) {
            echo "Calling method '$name' with arguments: " . implode(', ', $arguments);
        }

        public static function __callStatic($name, $arguments) {
            echo "Calling static method '$name' with arguments: " . implode(', ', $arguments);
        }
    }

    $obj = new MyClass();
    $obj->nonExistingMethod('arg1', 'arg2'); // выводит: Calling method 'nonExistingMethod' with arguments: arg1, arg2

    MyClass::nonExistingStaticMethod('arg1', 'arg2'); // выводит: Calling static method 'nonExistingStaticMethod' with arguments: arg1, arg2    
🟠`__get` и `__set` __get: Вызывается при доступе к недоступным свойствам. __set: Вызывается при установке значений недоступным свойствам.
class MyClass {
    private $data = [];

    public function __get($name) {
        return $this->data[$name];
    }

    public function __set($name, $value) {
        $this->data[$name] = $value;
    }
}

$obj = new MyClass();
$obj->nonExistingProperty = 'value';
echo $obj->nonExistingProperty; // выводит: value    
🟠`__isset` и `__unset` __isset: Вызывается при вызове isset() или empty() на недоступных свойствах. __unset: Вызывается при вызове unset() на недоступных свойствах.
class MyClass {
    private $data = [];

    public function __isset($name) {
        return isset($this->data[$name]);
    }

    public function __unset($name) {
        unset($this->data[$name]);
    }
}

    $obj = new MyClass();
    $obj->property = 'value';
    var_dump(isset($obj->property)); // выводит: bool(true)
    unset($obj->property);
    var_dump(isset($obj->property)); // выводит: bool(false)    
🟠`__toString` Вызывается при попытке использовать объект как строку (например, при echo или print).
class MyClass {
    public function __toString() {
        return "This is MyClass object";
    }
}

$obj = new MyClass();
echo $obj; // выводит: This is MyClass object
🟠`__invoke` Вызывается при попытке использовать объект как функцию.
class MyClass {
    public function __invoke($arg) {
        echo "Called with argument: $arg";
    }
}

$obj = new MyClass();
$obj('some argument'); // выводит: Called with argument: some argument
🟠`__clone` Вызывается при клонировании объекта.
class MyClass {
   public function __clone() {
        echo "Object cloned";
    }
}

$obj = new MyClass();
$clonedObj = clone $obj; // выводит: Object cloned  
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Какие бывают области видимости? В PHP существуют четыре основных области видимости (scope), которые определяют, где переменные и другие элементы кода могут быть использованы. Это глобальная, локальная, область видимости статических переменных и область видимости классов (свойств и методов). 🟠Глобальная область видимости Переменные, объявленные вне всех функций и классов, имеют глобальную область видимости. Такие переменные доступны в любом месте кода, за исключением функций и методов классов, если они не объявлены явно как глобальные внутри этих функций или методов.
$globalVar = "I am global";

function testGlobal() {
    global $globalVar; // делаем глобальную переменную доступной внутри функции
    echo $globalVar; // выводит: I am global
}

testGlobal();
🟠Локальная область видимости Переменные, объявленные внутри функции, имеют локальную область видимости и доступны только внутри этой функции. Они недоступны вне функции или в других функциях.
function testLocal() {
    $localVar = "I am local";
    echo $localVar; // выводит: I am local
}

testLocal();
echo $localVar; // ошибка, так как $localVar не доступна вне функции
🟠Область видимости статических переменных Статические переменные внутри функции сохраняют своё значение между вызовами этой функции. Они имеют локальную область видимости, но их значение сохраняется.
function testStatic() {
    static $count = 0;
    $count++;
    echo $count; // при каждом вызове функции значение $count будет увеличиваться
}

testStatic(); // выводит: 1
testStatic(); // выводит: 2
testStatic(); // выводит: 3
🟠Область видимости классов (свойства и методы) В контексте классов области видимости определяют доступ к свойствам и методам. В PHP существуют три модификатора доступа: public, protected и private. public: Свойства и методы, доступные отовсюду (изнутри класса, из дочерних классов и вне классов). protected: Свойства и методы, доступные только изнутри класса и его дочерних классов. private: Свойства и методы, доступные только изнутри класса.
class MyClass {
    public $publicVar = "Public";
    protected $protectedVar = "Protected";
    private $privateVar = "Private";

    public function showVars() {
        echo $this->publicVar; // доступно
        echo $this->protectedVar; // доступно
        echo $this->privateVar; // доступно
    }
}

$obj = new MyClass();
echo $obj->publicVar; // доступно
// echo $obj->protectedVar; // ошибка, доступно только изнутри класса и дочерних классов
// echo $obj->privateVar; // ошибка, доступно только изнутри класса
$obj->showVars(); // доступно и выводит все три свойства
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Что такое PHP FPM? PHP-FPM (PHP FastCGI Process Manager) – это альтернативная реализация PHP FastCGI, предназначенная для обеспечения высокой производительности и управляемости PHP-приложений. 🚩ПлюсыПовышение производительности: PHP-FPM позволяет значительно улучшить производительность веб-серверов за счет управления пулом PHP-процессов, которые могут обрабатывать запросы параллельно. ➕Масштабируемость: Он легко масштабируется для работы с большим количеством одновременных запросов. ➕Настраиваемость: PHP-FPM предлагает широкие возможности для настройки, такие как управление количеством процессов, лимиты на использование ресурсов, настройка поведения при возникновении ошибок и многое другое. ➕Изоляция окружений: Можно настроить несколько пулов процессов для различных приложений, что позволяет изолировать их друг от друга. 🚩Как работает? 1⃣Запуск пула процессов: При старте PHP-FPM инициализирует пул процессов, которые готовы принимать запросы. 2⃣Обработка запросов: Веб-сервер перенаправляет запросы на сокет PHP-FPM, где процессы обрабатывают их и возвращают результаты. 3⃣Управление процессами: PHP-FPM управляет количеством процессов, создавая новые при необходимости и завершая неиспользуемые для оптимизации использования ресурсов. 🚩Пример конфигурации PHP-FPM PHP-FPM (обычно находится в /etc/php/7.x/fpm/pool.d/www.conf):
[www]
user = www-data
group = www-data
listen = /run/php/php7.x-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
Nginx для использования PHP-FPM:
server {
    listen 80;
    server_name example.com;
    root /var/www/html;

    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.x-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 В чём суть абстрактного класса? Абстрактный класс — это класс, который нельзя инстанцировать напрямую, и он предназначен для того, чтобы служить базой для других классов. Он может содержать абстрактные методы, которые должны быть реализованы в классах-наследниках. Абстрактный класс позволяет определять общую функциональность для всех наследников, предоставляя возможность переопределять или дополнять её. Это помогает улучшить структуру кода и избежать дублирования. Ставь 👍 и забирай 📚 Базу знаний

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

🤔 Как сделать так, чтобы сессии не хранились в файле? Для хранения сессий не в файлах в PHP, можно использовать другие механизмы хранения, такие как базы данных, кэш-сервисы (например, Redis или Memcached) или специализированные хранилища. 🚩Хранение сессий в базе данных 1⃣Создайте таблицу для хранения сессий:
CREATE TABLE sessions (
    id VARCHAR(255) PRIMARY KEY,
    data TEXT,
    last_access TIMESTAMP
);
2⃣Создайте обработчики сессий: Создайте класс для обработки сессий, реализующий интерфейс SessionHandlerInterface.
class DBSessionHandler implements SessionHandlerInterface {
    private $pdo;

    public function __construct(PDO $pdo) {
        $this->pdo = $pdo;
    }

    public function open($savePath, $sessionName) {
        return true;
    }

    public function close() {
        return true;
    }

    public function read($id) {
        $stmt = $this->pdo->prepare("SELECT data FROM sessions WHERE id = :id");
        $stmt->bindParam(':id', $id);
        $stmt->execute();
        $session = $stmt->fetch(PDO::FETCH_ASSOC);
        return $session ? $session['data'] : '';
    }

    public function write($id, $data) {
        $stmt = $this->pdo->prepare("REPLACE INTO sessions (id, data, last_access) VALUES (:id, :data, NOW())");
        $stmt->bindParam(':id', $id);
        $stmt->bindParam(':data', $data);
        return $stmt->execute();
    }

    public function destroy($id) {
        $stmt = $this->pdo->prepare("DELETE FROM sessions WHERE id = :id");
        $stmt->bindParam(':id', $id);
        return $stmt->execute();
    }

    public function gc($maxlifetime) {
        $stmt = $this->pdo->prepare("DELETE FROM sessions WHERE last_access < NOW() - INTERVAL :maxlifetime SECOND");
        $stmt->bindParam(':maxlifetime', $maxlifetime, PDO::PARAM_INT);
        return $stmt->execute();
    }
}
3⃣Инициализация сессий:
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'username', 'password');
$handler = new DBSessionHandler($pdo);
session_set_save_handler($handler, true);
session_start();
🚩Хранение сессий в Redis 1⃣Установите расширение `phpredis`Для Ubuntu:
sudo apt-get install php-redis
2⃣Используйте Redis для хранения сессий: Настройте PHP для использования Redis в качестве хранилища сессий, добавив настройки в файл php.ini или в коде.
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
Ставь 👍 и забирай 📚 Базу знаний

🤔 Чем отличается абстрактный класс от интерфейса? Абстрактный класс может содержать как абстрактные методы (без реализации), так и методы с реализацией, в то время как интерфейс не содержит реализации методов до PHP 8. Абстрактный класс может содержать поля и конструкторы, а интерфейс — только сигнатуры методов. Класс может наследовать только один абстрактный класс, но реализовать несколько интерфейсов. Абстрактный класс используется, когда требуется частичная реализация, а интерфейс — для создания контракта. Ставь 👍 и забирай 📚 Базу знаний

Обучаем Java-разработчиков оплата после выхода на работу В Kata Academy можно выучиться на Java-разработчика бесплатно, а зап
Обучаем Java-разработчиков оплата после выхода на работу В Kata Academy можно выучиться на Java-разработчика бесплатно, а заплатить уже после трудоустройства по специальности из фактической зарплаты. Если задуматься, то все в выигрыше: — ты получаешь работу в Москве или Санкт-Петербурге с хорошей зарплатой, мы получаем процент за инвестиции в тебя; — в наших интересах научить тебя так, чтобы твоя зарплата была как можно выше; — мы прокачиваем твои навыки еще 2 года после курса: проводим выездные мероприятия и мастер-классы — и доходы наших выпускников растут; — мы не зависим от банков и их рассрочек — кризис не повлиял на доступность курсов. Чтобы попасть на курс, нужно выполнить небольшое тестовое задание. Переходи по ссылке и оставляй заявку! Узнать больше #реклама 16+ kata.academy О рекламодателе

🤔 Что такое агрегат? Агрегат – это термин, часто используемый в области баз данных и программирования, который обозначает способ группировки данных для выполнения различных операций, таких как суммирование, подсчёт, нахождение среднего значения и другие. В реляционных базах данных агрегаты применяются для выполнения агрегатных функций, таких как SUM(), COUNT(), AVG(), MAX(), MIN() и других. 🚩Зачем нужны? 🟠Анализ данных: Агрегаты позволяют получить сводные данные, которые помогают анализировать и понимать большие наборы данных. Например, можно узнать общее количество продаж, среднюю стоимость заказа, максимальную и минимальную зарплату сотрудников и т.д. 🟠Оптимизация запросов: Использование агрегатных функций позволяет выполнять сложные вычисления на сервере базы данных, что экономит время и ресурсы по сравнению с выполнением этих операций на клиентской стороне. 🚩Примеры использования агрегатных функций: Суммирование (SUM):
-- Получение общей суммы всех заказов
SELECT SUM(total_amount) AS total_sales
FROM orders;
Подсчёт (COUNT):
-- Подсчёт общего количества заказов
SELECT COUNT(*) AS total_orders
FROM orders;
Среднее значение (AVG):
-- Нахождение средней суммы заказа
SELECT AVG(total_amount) AS average_order_value
FROM orders;
Максимальное значение (MAX):
-- Нахождение максимальной суммы заказа
SELECT MAX(total_amount) AS max_order_value
FROM orders;
Минимальное значение (MIN):
-- Нахождение минимальной суммы заказа
SELECT MIN(total_amount) AS min_order_value
FROM orders;
🚩 Группировка данных с использованием GROUP BY: Для более сложных запросов можно использовать агрегатные функции вместе с оператором GROUP BY, чтобы группировать данные по определённому критерию. В этом запросе результаты будут сгруппированы по customer_id, и для каждого клиента будет рассчитана общая сумма заказов.
-- Получение общей суммы заказов для каждого клиента
SELECT customer_id, SUM(total_amount) AS total_sales_per_customer
FROM orders
GROUP BY customer_id;
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какое ключевое слово используется для указания класса в PHP, который не может быть унаследован?
Anonymous voting

🤔 Что такое внешний ключ? Внешний ключ (foreign key) – это понятие из области реляционных баз данных, которое помогает устанавливать связи между таблицами. 🚩Зачем нужен внешний ключ? 🟠Обеспечение целостности данных: Внешние ключи помогают гарантировать, что значения в столбце внешнего ключа всегда соответствуют значениям в первичном ключе другой таблицы. Это предотвращает создание "висячих" ссылок, когда запись в одной таблице ссылается на несуществующую запись в другой таблице. 🟠Упрощение управления связями между таблицами: Внешние ключи облегчают управление и обновление связанных данных. Например, если удалить запись в родительской таблице, можно настроить каскадное удаление связанных записей в дочерней таблице. 🚩Как используется внешний ключ? Внешний ключ создаётся при помощи SQL-запросов. Рассмотрим пример двух таблиц: orders (заказы) и customers (клиенты). Каждому заказу в таблице orders соответствует клиент в таблице customers.
-- Создание таблицы клиентов
CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    customer_name VARCHAR(100)
);

-- Создание таблицы заказов с внешним ключом
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    order_date DATE,
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
customer_id в таблице orders является внешним ключом, который ссылается на customer_id в таблице customers. Это гарантирует, что каждое значение customer_id в таблице orders соответствует существующему customer_id в таблице customers. 🚩Каскадные действия Существует возможность настроить каскадные действия для внешних ключей. Например:
-- Создание таблицы заказов с каскадным удалением
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    order_date DATE,
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
    ON DELETE CASCADE
);
Ставь 👍 и забирай 📚 Базу знаний

⚡️ IT-обучение теперь в Telegram! В cвязи с недавнем замедлением Ютуба — лучшие обучающие каналы переехали в Telegram Вот кан
⚡️ IT-обучение теперь в Telegram! В cвязи с недавнем замедлением Ютуба — лучшие обучающие каналы переехали в Telegram Вот каналы для айтишников: 👩‍💻 PHP: @PHP 🖥 Базы Данных & SQL: @SQL 👩‍💻 Frontend: @Frontend ⚙️ Backend: @Backend 🤓 Общее айти: @portalToIT 👩‍💻 Python: @Python 📱 GitHub: @GitHub 👩‍💻 Java: @Java 👩‍💻 C#: @Csharp 👩‍💻 С/С++: @Cpp 👩‍💻 Golang: @Golang 👩‍💻 Моб. разработка: @MobDev 👩‍💻 Разработка игр: @GameDev 👩‍💻 DevOps: @DevOps 🖥 Data Science: @DataScience 🤔 Хакинг & ИБ: @InfoSec 🐞 Тестирование: @QA 📱 Маркетинг: @Marketing 🖥 Дизайн: @Design ➡️ Сохраняйте себе, чтобы не потерять

🤔 Какой результат выполнения функции ceil(4.3) в PHP?
Anonymous voting