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

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

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

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

نمایش بیشتر
2 343
مشترکین
-324 ساعت
-77 روز
-2830 روز
آرشیو پست ها
🤔 Что изменилось в приведении типов в PHP 8? PHP 8 усилил строгую типизацию, добавив поддержку объединённых типов (Union Types). Также введены типы mixed и static, расширяющие возможности определения данных. Улучшена работа с привидением типов, исключая двусмысленности, чтобы снизить вероятность ошибок. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чем преимущество hash индекс и btree индекс? Hash-индексы и B-Tree-индексы являются двумя типами индексов, используемыми для ускорения операций поиска в базах данных. Оба типа имеют свои преимущества и недостатки в зависимости от конкретных сценариев использования. 🚩Hash-индексыБыстрый доступ по точному совпадению Hash-индексы обеспечивают очень быстрый доступ к данным при выполнении точных поисков (например, SELECT * FROM table WHERE column = 'value'). Время поиска практически константное (O(1)), что делает такие запросы очень эффективными. ➕Простота реализации Hash-индексы просты в реализации и не требуют сложных структур данных для управления. 🚩B-Tree-индексыПоддержка диапазонных запросов B-Tree-индексы поддерживают операции поиска по диапазону и сортировку (например, BETWEEN, >, <, ORDER BY). Данные в B-Tree отсортированы, что делает такие запросы возможными и эффективными. ➕Сбалансированность B-Tree автоматически поддерживает балансировку, что обеспечивает стабильную производительность для всех операций (поиск, вставка, удаление). ➕Универсальность B-Tree-индексы поддерживают широкий спектр операций и типов данных, включая текстовые данные, даты и числа. 🟠Hash-индекс Подходит для сценариев, где часто выполняются точные запросы равенства, например, поиск пользователя по уникальному идентификатору или email.
CREATE INDEX idx_email_hash ON users USING HASH (email);
SELECT * FROM users WHERE email = 'example@example.com';
🟠B-Tree-индекс Подходит для сценариев, где часто выполняются диапазонные запросы, сортировка или комбинированные условия.
CREATE INDEX idx_name_btree ON users (name);
SELECT * FROM users WHERE name BETWEEN 'A' AND 'M';
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Зачем нужен шаблон Builder? Builder — это порождающий шаблон проектирования, который разделяет процесс создания сложного объекта от его представления. Он позволяет создавать объекты пошагово и конфигурировать их гибко без необходимости передавать длинные списки параметров в конструктор. 🚩Зачем нужен Builder? 🟠Упрощает создание сложных объектов Когда объект имеет много параметров, особенно опциональных (например, дом с разными опциями — бассейном, гаражом, садом). 🟠Избегает перегруженных конструкторов Вместо того чтобы передавать кучу аргументов в конструктор (new Car("red", 4, true, "diesel")), мы можем строить объект постепенно. 🟠Делает код читаемым и удобным Позволяет явно видеть, какие параметры устанавливаются и какие можно добавить. 🚩Пример использования в PHP Допустим, мы строим объект Car (Машина). Проблема без Builder'а (длинный конструктор)
class Car {
    public string $color;
    public int $wheels;
    public bool $sunroof;
    public string $engine;

    public function __construct(string $color, int $wheels, bool $sunroof, string $engine) {
        $this->color = $color;
        $this->wheels = $wheels;
        $this->sunroof = $sunroof;
        $this->engine = $engine;
    }
}

$car = new Car("red", 4, true, "diesel"); // Что значат true и 4? Непонятно.
Решение с использованием Builder
class Car {
    public string $color;
    public int $wheels;
    public bool $sunroof;
    public string $engine;

    private function __construct() {} // Закрываем прямой доступ к конструктору

    public static function builder(): CarBuilder {
        return new CarBuilder();
    }
}

class CarBuilder {
    private Car $car;

    public function __construct() {
        $this->car = new Car();
    }

    public function setColor(string $color): self {
        $this->car->color = $color;
        return $this;
    }

    public function setWheels(int $wheels): self {
        $this->car->wheels = $wheels;
        return $this;
    }

    public function setSunroof(bool $sunroof): self {
        $this->car->sunroof = $sunroof;
        return $this;
    }

    public function setEngine(string $engine): self {
        $this->car->engine = $engine;
        return $this;
    }

    public function build(): Car {
        return $this->car;
    }
}

// Использование
$car = Car::builder()
    ->setColor("red")
    ->setWheels(4)
    ->setSunroof(true)
    ->setEngine("diesel")
    ->build();

var_dump($car);
Ставь 👍 и забирай 📚 Базу знаний

Стань турагентом за 2,5 месяца Обучение с Анной Тихоновой, экспертом с 15-летним стажем. ✨ Бесплатный тест-драйв уроков. 🎓 Н
Стань турагентом за 2,5 месяца Обучение с Анной Тихоновой, экспертом с 15-летним стажем. ✨ Бесплатный тест-драйв уроков. 🎓 Наставник на всех этапах. 💻Удаленная работа 😊 Работа с реальными туристами. 💰 Заработок от 50 000 до 200 000 рублей на этапе обучения. 90% скидка на крутой тур для лучшего студента! Попробовать #реклама 16+ sbsite.pro О рекламодателе

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

Как повысить эффективность вебинаров? Организация продающего вебинара - не простая задача, ведь необходимо предусмотреть множ
Как повысить эффективность вебинаров? Организация продающего вебинара - не простая задача, ведь необходимо предусмотреть множество деталей: удобную дату, вовлекающий контент, методы продвижения и взаимодействия с участниками. Вебинары от МТС Линк помогают привлекать новых клиентов и увеличивать конверсию из участника в лид. В сервисе доступен анализ поведения пользователей во время вебинара, синхронный перевод, автовебинары и интерактивные инструменты для вовлечения участников. Делимся методичкой с кейсами, чек-листами и инструкциями для маркетологов, PR и event-менеджеров, чтобы сделать вебинары эффективным инструментом для лидогенерации. Получите методичку бесплатно на сайте. Скачать #реклама 16+ mts-link.ru О рекламодателе

🤔 Что такое декремент? декремент — это операция, используемые для увеличения или уменьшения значения переменной на единицу соответственно. 🚩Декремент Оператор уменьшает значение переменной на единицу. Он представлен двумя минусами (--). Так же, как и инкремент, декремент бывает двух видов: 🟠Префиксный декремент (`--x`) Сначала уменьшает значение переменной на единицу, затем возвращает новое значение. 🟠Постфиксный декремент (`x--`) Возвращает текущее значение переменной, а затем уменьшает его на единицу.
<?php
$x = 10;
$y = 10;

// Пример префиксного инкремента
echo ++$x; // Выводит 11, x теперь равен 11

// Пример постфиксного инкремента
echo $y++; // Выводит 10, y теперь равен 11
echo $y; // Выводит 11

// Пример префиксного декремента
echo --$x; // Выводит 10, x теперь равен 10

// Пример постфиксного декремента
echo $y--; // Выводит 11, y теперь равен 10
echo $y; // Выводит 10
?>
Ставь 👍 и забирай 📚 Базу знаний

Получи грант на обучение в Центральном университете Несгораемый грант до 2 800 000 Р на учебу в бакалавриате Центрального уни
Получи грант на обучение в Центральном университете Несгораемый грант до 2 800 000 Р на учебу в бакалавриате Центрального университета. Подробнее о гранте: – Покрывает до 100% стоимости обучения – Выдается на все 4 года обучения в вузе – Сумма гранта не уменьшается, а может увеличиться за дополнительные достижения и успехи в учебе. Для учеников 10-х и 11-х классов. Участвуй в отборе! Подать заявку #реклама apply.centraluniversity.ru О рекламодателе

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

🤔 Что такое абстрагирование? Это принцип программирования и проектирования, который позволяет выделить важные характеристики объекта или системы и скрыть их сложные детали. Основная цель абстрагирования – упростить сложные системы, делая их более понятными и управляемыми, сосредоточив внимание на их основных аспектах и поведении. 🚩Зачем нужно абстрагирование 🟠Снижение сложности Сокращает количество деталей, с которыми нужно работать, что облегчает понимание и работу с системой. 🟠Повышение читаемости кода Упрощает код, делая его более читаемым и легким для поддержки. 🟠Повторное использование кода Создаёт возможность повторного использования общих функций и логики. 🟠Инкапсуляция Позволяет скрывать реализацию и представлять только необходимые интерфейсы для взаимодействия. 🟠Гибкость и расширяемость Облегчает добавление новых функциональностей без изменения существующего кода. 🚩Как используется абстрагирование Абстрагирование в программировании часто реализуется через классы и интерфейсы. Ниже приведены примеры абстракции в объектно-ориентированном программировании (ООП). 🚩Пример абстракции с использованием классов и интерфейсов 🟠Интерфейс Определяет набор методов, которые должны быть реализованы, не указывая, как именно они должны быть реализованы.
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
🚩Плюсы и минусы Снижение сложности Абстракция скрывает сложные детали реализации, облегчая работу с системой. ➕Улучшение читаемости Код становится более понятным и структурированным. ➕Гибкость и расширяемость Облегчает добавление новых функций и изменений. ➕Повторное использование Позволяет использовать общий код в разных частях программы. ➖Избыточность Иногда может приводить к избыточной сложности, если абстракции слишком сложные или используются неправильно. ➖Накладные расходы Может потребоваться больше времени и усилий на создание абстракций и их поддержку. Ставь 👍 и забирай 📚 Базу знаний

🤔 Какое отличие у протоколов TCP и UDP? - TCP — надёжный, ориентирован на соединение: - Гарантирует доставку и порядок. - Используется для HTTP, FTP, SSH и т.п. - Медленнее из-за проверок, подтверждений, управления потоком. - UDP — ненадёжный, без соединения: - Быстрее, но без гарантии доставки и порядка. - Используется для видео/аудио-стриминга, игр, DNS, VoIP. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Получи грант на обучение в Центральном университете Несгораемый грант до 2 800 000 Р на учебу в бакалавриате Центрального уни
Получи грант на обучение в Центральном университете Несгораемый грант до 2 800 000 Р на учебу в бакалавриате Центрального университета. Подробнее о гранте: – Покрывает до 100% стоимости обучения – Выдается на все 4 года обучения в вузе – Сумма гранта не уменьшается, а может увеличиться за дополнительные достижения и успехи в учебе. Для учеников 10-х и 11-х классов. Участвуй в отборе! Подать заявку #реклама apply.centraluniversity.ru О рекламодателе

🤔 В чем преимущество hash индекс и btree индекс? Hash-индексы и B-Tree-индексы являются двумя типами индексов, используемыми для ускорения операций поиска в базах данных. Оба типа имеют свои преимущества и недостатки в зависимости от конкретных сценариев использования. 🚩Hash-индексыБыстрый доступ по точному совпадению Hash-индексы обеспечивают очень быстрый доступ к данным при выполнении точных поисков (например, SELECT * FROM table WHERE column = 'value'). Время поиска практически константное (O(1)), что делает такие запросы очень эффективными. ➕Простота реализации Hash-индексы просты в реализации и не требуют сложных структур данных для управления. 🚩B-Tree-индексыПоддержка диапазонных запросов B-Tree-индексы поддерживают операции поиска по диапазону и сортировку (например, BETWEEN, >, <, ORDER BY). Данные в B-Tree отсортированы, что делает такие запросы возможными и эффективными. ➕Сбалансированность B-Tree автоматически поддерживает балансировку, что обеспечивает стабильную производительность для всех операций (поиск, вставка, удаление). ➕Универсальность B-Tree-индексы поддерживают широкий спектр операций и типов данных, включая текстовые данные, даты и числа. 🟠Hash-индекс Подходит для сценариев, где часто выполняются точные запросы равенства, например, поиск пользователя по уникальному идентификатору или email.
CREATE INDEX idx_email_hash ON users USING HASH (email);
SELECT * FROM users WHERE email = 'example@example.com';
🟠B-Tree-индекс Подходит для сценариев, где часто выполняются диапазонные запросы, сортировка или комбинированные условия.
CREATE INDEX idx_name_btree ON users (name);
SELECT * FROM users WHERE name BETWEEN 'A' AND 'M';
Ставь 👍 и забирай 📚 Базу знаний

Дарим подписку на Яндекс Музыку Ответьте на 1 вопрос и Яндекс Музыка ваша для вас и 3-х ваших близких. Кинопоиск и Яндекс Кни
Дарим подписку на Яндекс Музыку Ответьте на 1 вопрос и Яндекс Музыка ваша для вас и 3-х ваших близких. Кинопоиск и Яндекс Книги тоже в подписке. Попробуйте бесплатно❤️ Попробовать #реклама 18+ music.yandex.ru О рекламодателе Реклама на Яндексе

🤔 Для чего предназначены форматы запросов и ответов приложения? Форматы запросов и ответов обеспечивают обмен данными между клиентом и сервером. Популярные форматы: - JSON – компактный, удобный для API. - XML – читаемый, часто используется в SOAP. - YAML – удобен для конфигураций. - Protobuf – бинарный, эффективный для высоконагруженных систем. Форматы обеспечивают унифицированное взаимодействие между различными сервисами. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что будет если мы цифру 3 int сложим плюсом со строкой 4 что будет? Если в PHP выполнить операцию сложения (+) числа 3 (int) и строки "4" (string), то PHP автоматически приведёт строку "4" к числу, и произойдёт арифметическая операция:
$result = 3 + "4";
echo $result; // 7
🚩Как это работает? PHP видит, что используется оператор +, который применяется только к числам. "4" — это строка, но она содержит только число, поэтому PHP автоматически преобразует её в int. Затем выполняется операция 3 + 4, и результатом будет 7. 🚩Что если строка не является числом? Если строка не является корректным числом, PHP попробует взять из неё число с начала строки. Если в начале строки нет цифр, то строка будет воспринята как 0. Примеры странных случаев
echo 3 + "4abc";  // 7   (строка "4abc" преобразуется в число 4)
echo 3 + "abc4";  // 3   (строка "abc4" преобразуется в 0, т.к. начинается не с цифры)
echo 3 + "0.5";   // 3.5 (строка "0.5" преобразуется в число 0.5)
echo 3 + " ";     // 3   (пробелы преобразуются в 0)
🚩Что если использовать `.` вместо `+`? Если вместо + использовать . (конкатенацию строк), то числа не складываются, а просто соединяются как строки
echo 3 . "4"; // "34" (строка)
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Что такое Rest REST (Representational State Transfer) — это архитектурный стиль для разработки веб-сервисов. Он основывается на стандартах HTTP и включает использование простых методов (GET, POST, PUT, DELETE) для взаимодействия с ресурсами, представленных в виде URL. RESTful API являются безсессионными, и каждый запрос от клиента к серверу должен содержать всю необходимую информацию для выполнения операции. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что делает бэк-слеш перед глобальными функциями? В PHP бэкслеш (\) перед именем функции или класса указывает, что мы обращаемся к глобальному пространству имён. Это важно, если код находится внутри namespace. 🚩Почему это важно? 🟠Пространства имён могут переопределять глобальные функции Если внутри namespace есть функция с таким же именем, то PHP будет искать её внутри пространства имён, а не в глобальном пространстве.
namespace App;

function strlen($str) {
    return "Фейковая длина строки";
}

echo strlen("Hello!"); // Выведет: "Фейковая длина строки"
🟠Бэкслеш заставляет PHP искать функцию в глобальном пространстве Пример использования \ для вызова стандартной функции PHP
namespace App;

function strlen($str) {
    return "Фейковая длина строки";
}

echo \strlen("Hello!"); // Выведет: 6 (из стандартной библиотеки PHP)
🟠Используется для ускорения работы кода PHP не будет искать функцию внутри namespace, а сразу возьмёт глобальную версию. Это немного ускоряет выполнение.
namespace App;

$t1 = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
    time(); // PHP ищет в namespace, потом в глобальном
}
$t2 = microtime(true);
echo "Обычный вызов: " . ($t2 - $t1) . " секунд\n";

$t1 = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
    \time(); // PHP сразу берёт глобальную функцию
}
$t2 = microtime(true);
echo "С бэкслешем: " . ($t2 - $t1) . " секунд\n";
Ставь 👍 и забирай 📚 Базу знаний