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

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

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish
2 343
Obunachilar
-324 soatlar
-77 kunlar
-2830 kunlar
Postlar arxiv
🤔 Что такое поведение copy-on-write? Это механизм оптимизации памяти, при котором копия объекта создаётся только в случае изменения исходного объекта. До изменений объекты разделяют один и тот же адрес в памяти. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чём суть абстрактного класса? Абстрактный класс и в ООП в целом — это специальный тип класса, который не может быть инстанциирован напрямую. Это означает, что вы не можете создать объект абстрактного класса используя оператор new напрямую. Суть его заключается в том, чтобы служить основой для других классов, от которых будут создаваться объекты.
abstract class ТранспортноеCредство {
    protected $скорость;

    public function установитьСкорость($скорость) {
        $this->скорость = $скорость;
    }

    abstract public function двигаться();
}

class Автомобиль extends ТранспортноеCредство {
    public function двигаться() {
        echo "Движется на скорости: " . $this->скорость . " км/ч";
    }
}

// $транспорт = new ТранспортноеCредство(); // Ошибка: не может быть инстанциирован
$автомобиль = new Автомобиль();
$автомобиль->установитьСкорость(60);
$автомобиль->двигаться();
Ставь 👍 и забирай 📚 Базу знаний

Реклама для бизнеса любого уровня в Яндекс Директе Создайте эффективную рекламную кампанию с алгоритмами Яндекс Директа 👌 На
Реклама для бизнеса любого уровня в Яндекс Директе Создайте эффективную рекламную кампанию с алгоритмами Яндекс Директа 👌 Начните прямо сейчас ⚡ Зарегистрироваться #реклама direct.yandex.ru О рекламодателе

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

🤔 Что такое SOLID? Это акроним, представляющий пять основных принципов ООП и проектирования, предложенных Робертом Мартином. Эти принципы направлены на повышение гибкости, читаемости, и поддерживаемости кода, а также упрощение его тестирования и рефакторинга. Вот они: 🟠S: Принцип единственной ответственности (Single Responsibility Principle) Каждый класс должен иметь только одну причину для изменения. Этот принцип подчеркивает, что класс должен заниматься только одной задачей или иметь одну область ответственности. 🟠O: Принцип открытости/закрытости (Open/Closed Principle) Сущности программы должны быть открыты для расширения, но закрыты для модификации. Это означает, что можно добавлять новые функциональности без изменения существующего кода. 🟠L: Принцип подстановки Барбары Лисков (Liskov Substitution Principle) Объекты в программе можно заменять их наследниками без изменения свойств программы. Это предполагает, что объекты подклассов должны действовать так же, как объекты суперкласса, от которых они произошли. 🟠I: Принцип разделения интерфейса (Interface Segregation Principle) Клиенты не должны зависеть от интерфейсов, которые они не используют. Этот принцип говорит о том, что лучше иметь много специализированных интерфейсов, чем один универсальный. 🟠D: Принцип инверсии зависимостей (Dependency Inversion Principle) Модули высокого уровня не должны зависеть от модулей низкого уровня. Обе категории должны зависеть от абстракций. Кроме того, абстракции не должны зависеть от деталей; детали должны зависеть от абстракций. Это способствует ослаблению связности компонентов системы. Ставь 👍 и забирай 📚 Базу знаний

Увидеть белого медведя в природе — реально! Вместе с нами — в единственной в этом году экспедиции на Крайний Север! Уникальны
Увидеть белого медведя в природе — реально! Вместе с нами — в единственной в этом году экспедиции на Крайний Север! Уникальный маршрут, включающий два самых красивых и труднодоступных архипелага Русского Севера – Новую Землю и Землю Франца-Иосифа. Дальше – только Северный полюс. Стоимость места в каюте – от 800 000 ₽. Остались последние места! Оставьте заявку, и персональный менеджер ответит на все вопросы. Жизнь слишком коротка, чтобы провести отпуск на пляже! Узнать больше #реклама sea-practice.com О рекламодателе

🤔 Зачем нужно ключевое слово final? Ключевое слово final в PHP используется для того, чтобы запретить наследование классов или переопределение методов в дочерних классах. Это помогает защитить важные части кода от изменения и сохранять логику в неприкосновенности. Final используется для обеспечения предсказуемости поведения в классах. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Для чего нужно пространство имен в PHP? Пространства имён (namespace) в PHP используются для разделения кода и предотвращения конфликтов имён классов, функций и констант. 🚩Почему нужны `namespace`? Избегают конфликтов имён (если два разных файла объявляют одинаковые классы). Упрощают организацию кода (структура похожа на файловую систему). Работают с автозагрузкой (PSR-4) – Composer использует namespace для загрузки файлов. 🚩Пример использования `namespace` Без пространства имён – конфликт классов
// Файл: models/User.php
class User {
    public function getRole() {
        return "Пользователь";
    }
}

// Файл: controllers/User.php
class User {
    public function getRole() {
        return "Администратор";
    }
}

// Ошибка! PHP не знает, какой User использовать.
$user = new User();
С namespace – классы разделены
// Файл: models/User.php
namespace App\Models;

class User {
    public function getRole() {
        return "Пользователь";
    }
}

// Файл: controllers/User.php
namespace App\Controllers;

class User {
    public function getRole() {
        return "Администратор";
    }
}

// Используем классы с указанием namespace
$modelUser = new App\Models\User();
echo $modelUser->getRole(); // ✅ "Пользователь"

$controllerUser = new App\Controllers\User();
echo $controllerUser->getRole(); // ✅ "Администратор"
🟠Импорт (`use`) – сокращает длинные пути Вместо длинных App\Models\User, можно импортировать
use App\Models\User;

$user = new User(); // PHP понимает, что это App\Models\User
🟠Работа с функциями и константами Пространства имён работают не только с классами, но и с функциями и константами.
namespace Utils;

function hello() {
    return "Привет!";
}

echo hello(); // ✅ "Привет!"
echo \Utils\hello(); // ✅ "Привет!" (полный путь)
Ставь 👍 и забирай 📚 Базу знаний

Гайд для маркетологов по эффективным онлайн-встречам Как CMO, PR и digital-маркетологам повысить результативность брейнштормо
Гайд для маркетологов по эффективным онлайн-встречам Как CMO, PR и digital-маркетологам повысить результативность брейнштормов, совещаний и планерок с командой с помощью онлайн-встреч? Гайд МТС Линк: 37 страниц полезных материалов, чек-листов и кейсов для эффективных видеовстреч и совещаний. ✅ В гайде: - Как создать постоянную ссылку на регулярные встречи с подрядчиками, командой или агентствами и подключаться в 2 клика; - Как управлять встречей и завершить ее четкими договоренностями с ИИ-расшифровкой голоса в текст; - Как проводить кастдевы, брейнштормы и формулировать гипотезы с помощью 15+ шаблонов в онлайн-досках МТС Линк; - Как разом пригласить всех участников на синк таким образом, чтобы все пришли. Бонус внутри: 5 способов не выгореть от бесконечных синков. ✨ Скачайте гайд бесплатно по ссылке Скачать #реклама 16+ mts-link.ru О рекламодателе

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

🤔 Что такое Docker? Это платформа для разработки, доставки и запуска приложений в изолированных контейнерах. Она позволяет упаковывать приложения и все их зависимости в контейнеры, которые могут работать на любой системе, поддерживающей Docker, что делает приложения более переносимыми и независимыми от окружения. 🚩Основные концепции 🟠Контейнеры Контейнеры — это легковесные, автономные, исполняемые пакеты, которые включают в себя все необходимое для запуска приложения: код, библиотеки, зависимости и системные инструменты. Контейнеры изолированы друг от друга и от хоста, что обеспечивает консистентность работы приложения в различных средах. 🟠Образы (Images) Образ Docker — это неизменяемый шаблон, из которого создаются контейнеры. Образы могут базироваться на других образах и содержат все необходимое для запуска приложения. Например, образ может содержать операционную систему, веб-сервер и само приложение. 🟠Dockerfile Dockerfile — это текстовый файл с инструкциями по созданию Docker-образа. Он содержит последовательность команд, которые Docker выполняет для сборки образа.
          # Используем базовый образ
     FROM php:8.0-apache

     # Копируем локальные файлы в контейнер
     COPY src/ /var/www/html/

     # Устанавливаем зависимости
     RUN docker-php-ext-install mysqli
🟠Docker Hub Docker Hub — это облачный сервис для хранения и обмена Docker-образами. Он позволяет публиковать свои образы и загружать образы, созданные другими пользователями. 🚩Плюсы Портативность Контейнеры могут работать на любом сервере, где установлен Docker, что позволяет легко перемещать приложения между различными средами (разработка, тестирование, продакшн). ➕Изоляция Контейнеры изолируют приложения и их зависимости, предотвращая конфликты между различными версиями библиотек и инструментов, используемых на одном сервере. ➕Легковесность Контейнеры используют общие ресурсы ядра хостовой операционной системы, что делает их более легковесными по сравнению с виртуальными машинами. ➕Быстрое развертывание Контейнеры можно запускать и останавливать за считанные секунды, что ускоряет процессы разработки, тестирования и развертывания приложений. Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Расскажи про функциональное программирование? Функциональное программирование (FP) – это парадигма программирования, в которой основное внимание уделяется использованию функций как первичных элементов кода. Код строится из чистых функций, без изменения состояний и без побочных эффектов. 🚩Зачем нужно функциональное программирование? 🟠Меньше багов чистые функции всегда дают один и тот же результат для одних и тех же входных данных. 🟠Легко тестировать код предсказуем и изолирован. 🟠Меньше зависимостей нет глобальных переменных и скрытых состояний. 🟠Легко писать параллельные программы нет изменяемых данных, значит, нет конфликтов в многопоточности. 🚩Принципы функционального программирования Чистые функции (Pure Functions) Иммутабельность (Immutable Data) Функции высшего порядка (Higher-Order Functions) Функциональные композиции Отсутствие побочных эффектов 🟠Чистые функции Это функция, которая: Возвращает один и тот же результат для одинаковых аргументов. Не изменяет внешние переменные и не имеет побочных эффектов.
$total = 0;
function addToTotal($num) {
    global $total;
    $total += $num;
    return $total;
}
Пример чистой функции
function add($a, $b) {
    return $a + $b;
}
echo add(3, 4); // 7
🟠Иммутабельность В FP данные не изменяются – вместо изменения переменных создаются новые.
$arr = [1, 2, 3];
$arr[] = 4; // Изменяет массив
Пример иммутабельности
$arr = [1, 2, 3];
$newArr = array_merge($arr, [4]); // Создает новый массив
🟠Функции высшего порядка Это функции, которые: Принимают другие функции в качестве аргументов. Возвращают другие функции.
function applyFunction($func, $value) {
    return $func($value);
}

$square = function ($x) {
    return $x * $x;
};

echo applyFunction($square, 5); // 25
🟠Функциональные композиции Вместо длинных процедур можно сочетать функции.
function double($x) {
    return $x * 2;
}

function increment($x) {
    return $x + 1;
}

function compose($f, $g) {
    return function ($x) use ($f, $g) {
        return $f($g($x));
    };
}

$doubleThenIncrement = compose('increment', 'double');

echo $doubleThenIncrement(3); // (3 * 2) + 1 = 7
🟠Отсутствие побочных эффектов Функции не должны изменять внешние данные (например, глобальные переменные, файлы, БД).
function logMessage($message) {
    file_put_contents("log.txt", $message, FILE_APPEND);
}
Функция без побочных эффектов:
function formatMessage($message) {
    return strtoupper($message);
}
echo formatMessage("hello"); // HELLO
🚩Функциональное программирование в PHP PHP – это не чисто функциональный язык, но поддерживает FP-стиль: array_map() – применяет функцию ко всем элементам массива. array_filter() – фильтрует массив по функции. array_reduce() – сворачивает массив в одно значение.
$numbers = [1, 2, 3, 4, 5];

// Умножаем каждый элемент на 2
$doubled = array_map(fn($x) => $x * 2, $numbers);
print_r($doubled); // [2, 4, 6, 8, 10]

// Фильтруем только четные числа
$evens = array_filter($numbers, fn($x) => $x % 2 === 0);
print_r($evens); // [2, 4]

// Суммируем все числа
$sum = array_reduce($numbers, fn($carry, $x) => $carry + $x, 0);
echo $sum; // 15
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Что такое замыкание? Это функция вместе с окружением, в котором она была создана. Замыкание позволяет функции "запомнить" переменные из внешнего контекста, даже после того, как этот контекст завершил свое выполнение. Это делает замыкания мощным инструментом для создания функций, которые могут работать с данными, доступными во время их создания. 🚩Основные особенности замыканий 🟠Доступ к внешним переменным Функция может использовать переменные из внешнего контекста, в котором она была создана. 🟠Сохранение состояния Замыкания могут сохранять состояние между вызовами. 🟠Инкапсуляция Замыкания могут использоваться для создания частных данных и методов. 🚩Примеры замыканий в различных языках программирования 🟠JavaScript В JavaScript замыкания используются очень часто. Рассмотрим простой пример:
function createCounter() {
    let count = 0; // внешняя переменная

    return function() { // внутренная функция
        count++;
        return count;
    }
}

const counter = createCounter(); // создаем замыкание
console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3
🟠Python В Python замыкания также поддерживаются:
def create_counter():
    count = 0

    def increment():
        nonlocal count
        count += 1
        return count

    return increment

counter = create_counter()
print(counter())  # 1
print(counter())  # 2
print(counter())  # 3
🟠PHP В PHP замыкания реализуются через анонимные функции и использование use:
function createCounter() {
    $count = 0;

    return function() use (&$count) {
        $count++;
        return $count;
    };
}

$counter = createCounter();
echo $counter(); // 1
echo $counter(); // 2
echo $counter(); // 3
🚩Применение замыканий 🟠Создание фабричных функций Замыкания могут использоваться для создания фабричных функций, которые генерируют другие функции с определенным поведением. 🟠Инкапсуляция Замыкания позволяют скрывать переменные и методы внутри функции, предоставляя интерфейс для взаимодействия с ними. 🟠Обработка событий В языках, таких как JavaScript, замыкания часто используются в обработчиках событий для доступа к контексту, в котором был назначен обработчик. 🟠Мемоизация Замыкания могут использоваться для создания функций, которые запоминают результаты предыдущих вычислений и используют их для ускорения последующих вызовов. Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Какие типы объединений есть в таблицах? Типы объединений: INNER JOIN (только совпадающие строки), LEFT JOIN (все строки из левой таблицы), RIGHT JOIN (все строки из правой таблицы), FULL JOIN (объединение всех строк обеих таблиц), CROSS JOIN (декартово произведение), SELF JOIN (объединение таблицы с самой собой). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Зачем придумали анонимные классы? Анонимные классы в PHP были введены в версии 7.0 и позволяют создавать одноразовые объекты без необходимости предварительного объявления класса. Они имеют несколько преимуществ и предназначены для решения ряда задач в программировании. Вот основные причины и случаи, для которых они были придуманы: 🚩Зачем придумали анонимные классы 🟠Упрощение кода Анонимные классы позволяют создать класс на месте, в том же файле, где он используется, без необходимости его предварительного определения. Это упрощает и сокращает код, особенно для одноразовых задач.
$logger = new class {
public function log($message) {
echo $message;
}
};

$logger->log("Hello, World!"); // Выведет: Hello, World!
🟠Инкапсуляция и уменьшение загрязнения пространства имен Поскольку анонимные классы не имеют имен, они не добавляют новых имен в глобальное пространство имен, что помогает избежать конфликтов имен и делает код более чистым. 🟠Использование одноразовых объектов Анонимные классы удобны, когда нужно создать объект для одноразового использования, например, в тестах, или для передачи в функции или методы.
function handleRequest($handler) {
$handler->process();
}

handleRequest(new class {
public function process() {
echo "Processing request";
}
}); // Выведет: Processing request
🟠Более гибкая реализация интерфейсов и абстрактных классов: Анонимные классы могут реализовывать интерфейсы или наследовать от абстрактных классов, предоставляя быстрый способ создать конкретные реализации на месте.
interface Logger {
public function log($message);
}

$logger = new class implements Logger {
public function log($message) {
echo $message;
}
};

$logger->log("Logging message"); // Выведет: Logging message
🟠Улучшение тестирования В юнит-тестах анонимные классы позволяют быстро создавать мок-объекты (mock objects) для тестирования без необходимости создавать отдельные классы для каждой тестовой ситуации.
class Service {
private $logger;

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

public function execute() {
$this->logger->log("Service executed");
}
}

$mockLogger = new class {
public function log($message) {
echo "Mock: " . $message;
}
};

$service = new Service($mockLogger);
$service->execute(); // Выведет: Mock: Service executed
Ставь 👍 и забирай 📚 Базу знаний

Износостойкие эмали для бетонных полов 👍Срок службы до 15 лет. Надежность, проверенная временем! Вы ищете идеальное решение
+4
Износостойкие эмали для бетонных полов 👍Срок службы до 15 лет. Надежность, проверенная временем! Вы ищете идеальное решение для защиты ваших бетонных полов? Мы знаем, что вам нужно! Завод Мицар предлагает широкий ассортимент износостойких эмалей, которые подойдут как для гаражных помещений, так и для больших производственных площадей с высокой нагрузкой. ✨ Почему выбирают нас? Уже на протяжении 18 лет мы не словами, а делом доказываем, что материалы Made-in-Russia могут быть лучшими в мире! 📞 Хотите узнать больше о наших продуктах или получить консультацию? Переходите на наш сайт! Перейти на сайт #реклама tdmitsar.ru О рекламодателе

🤔 В чем заключается обработка ошибок и исключений? Это механизм выявления и реагирования на непредвиденные ситуации в коде. - Ошибки (Errors) – критические сбои (OutOfMemoryError, StackOverflowError). - Исключения (Exceptions) – проблемы в логике (NullPointerException, IOException). Обрабатываются с помощью try-catch-finally, throw, throws, а также глобальных обработчиков (onError, fallback strategies). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний