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

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

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

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

نمایش بیشتر
2 343
مشترکین
-324 ساعت
-77 روز
-2830 روز
آرشیو پست ها
Закулисье работы контакт-центра банка В подкасте руководитель из Альфа-Банка рассказал, почему сотрудники контакт-центра — эт
Закулисье работы контакт-центра банка В подкасте руководитель из Альфа-Банка рассказал, почему сотрудники контакт-центра — это не просто люди на телефоне, а важнейшие эксперты, которые делают сервис по-настоящему человечным. В этом выпуске вы узнаете: - Какие возможности для карьерного роста ждут сотрудников Альфа-Банка? - Как устроен полный цикл обучения и адаптации начинающих специалистов? - Почему объединение разных поколений и обмен опытом делают команду сильнее? - Как искусственный интеллект помогает автоматизировать рутинные процессы и улучшать клиентский сервис? Ответы на эти вопросы и вдохновляющие истории сотрудников — в подкасте. Слушайте на любой доступной платформе. Слушать #реклама 16+ redbarn.ru О рекламодателе

🤔 Что такое мок, стап? Чем отличаются? 1. Мок (Mock): объект, имитирующий реальную зависимость и проверяющий вызовы и поведение тестируемого кода. 2. Стап (Stub): подставной объект, возвращающий заранее определённые данные, но не отслеживающий вызовы. 3. Разница в том, что моки проверяют взаимодействие, а стабы — данные. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Получи грант до 1,2 млн руб. на обучение в магистратуре 4 офлайн программы, онлайн-магистратура по ML. Гранты до 1,2 млн руб.
Получи грант до 1,2 млн руб. на обучение в магистратуре 4 офлайн программы, онлайн-магистратура по ML. Гранты до 1,2 млн руб. Стажировки, диплом гос. образца и фокус на твоей карьере в ЦУ Подать заявку #реклама 16+ apply.centraluniversity.ru О рекламодателе

🤔 В чем отличие между двойным и тройным равно? 🚩Примеры разницы между `==` и `===` Сравнение чисел и строк
var_dump(5 == "5");  // ✅ true (PHP приводит строку "5" к числу 5)
var_dump(5 === "5"); // ❌ false (5 - это int, "5" - это string)
Сравнение true и false
var_dump(0 == false);  // ✅ true  (0 считается как false)
var_dump(0 === false); // ❌ false (0 - это int, а false - это bool)
Сравнение null
var_dump(null == false);  // ✅ true  (PHP считает null как false)
var_dump(null === false); // ❌ false (null != boolean)
Ставь 👍 и забирай 📚 Базу знаний

"Фишер" 2 сезон с бесплатной подпиской на 30 дней Долгожданное возвращение героя Ивана Янковского в расследовании жутких прес
"Фишер" 2 сезон с бесплатной подпиской на 30 дней Долгожданное возвращение героя Ивана Янковского в расследовании жутких преступлений. Смотрите на Wink! Смотреть #реклама 16+ wink.ru О рекламодателе

🤔 Зачем использовать REST, если есть Soup? 1. REST: - REST API предоставляет структурированные данные в формате JSON или XML, упрощая интеграцию и обмен данными между системами. - Более эффективен и надежен для получения данных, так как сервер явно предоставляет их в нужной структуре. 2. Soup: - Используется для парсинга HTML-страниц, где данные не структурированы, и их нужно извлекать из разметки. - Подходит для веб-скрапинга, но зависит от структуры HTML, которая может часто изменяться. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Для чего нужна рефлексия? Рефлексия (Reflection) – это механизм анализа классов, методов, свойств и других структур во время выполнения. Она позволяет получать информацию о коде и даже изменять его динамически. 🚩Когда полезна рефлексия? 🟠Фреймворки и DI-контейнеры - Используется для автоматического внедрения зависимостей (Dependency Injection, DI). - Например, Laravel использует рефлексию в Container для автоматического создания объектов.
class Database {
    public function connect() {
        return "Подключение к базе данных";
    }
}

class UserService {
    private $db;

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

    public function getUser() {
        return "Пользователь найден";
    }
}

function resolve($class) {
    $reflector = new ReflectionClass($class);
    $constructor = $reflector->getConstructor();
    
    if (!$constructor) {
        return new $class;
    }

    $params = $constructor->getParameters();
    $dependencies = [];

    foreach ($params as $param) {
        $type = $param->getType();
        if ($type) {
            $dependencies[] = resolve($type->getName());
        }
    }

    return $reflector->newInstanceArgs($dependencies);
}

$service = resolve(UserService::class);
echo $service->getUser(); // "Пользователь найден"
🟠Декораторы, аннотации и атрибуты - В PHP 8 появились атрибуты (аннотации), и рефлексия помогает их читать. - Используется в Symfony, Doctrine для работы с ORM.
#[Attribute]
class Route {
    public function __construct(public string $path) {}
}

class Controller {
    #[Route('/home')]
    public function home() {
        return "Домашняя страница";
    }
}

$reflection = new ReflectionMethod(Controller::class, 'home');
$attributes = $reflection->getAttributes(Route::class);
$route = $attributes[0]->newInstance();

echo $route->path; // "/home"
🟠Автоматическая генерация документации - Реально использовать для автоматического создания Swagger/OpenAPI. - Можно извлекать PHPDoc-комментарии и на их основе генерировать документацию.
class Example {
    /**
     * Возвращает приветствие
     * @return string
     */
    public function sayHello() {
        return "Привет!";
    }
}

$reflection = new ReflectionMethod(Example::class, 'sayHello');
echo $reflection->getDocComment();
Ставь 👍 и забирай 📚 Базу знаний

В Битрикс24 теперь можно сделать сайт за 30 секунд Серьёзно. Пишешь, что нужно, и AI сам всё собирает: тексты, картинки, офор
В Битрикс24 теперь можно сделать сайт за 30 секунд Серьёзно. Пишешь, что нужно, и AI сам всё собирает: тексты, картинки, оформление. ✨Никакой магии, просто умный помощник. Попробуйте — закайфуете от скорости! Начать #реклама 16+ sites-24.bitrix24.ru О рекламодателе

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

🤔 В чем преимущество фасада? Фасад (Facade) в PHP — это паттерн проектирования, который упрощает доступ к сложной системе классов, предоставляя единый интерфейс. 🚩ПлюсыУпрощает код Фасад скрывает сложные детали реализации и предоставляет удобный интерфейс.
$logger = new Logger();
$db = new DatabaseConnection();
$mailer = new Mailer();

$user = new User($db, $logger, $mailer);
$user->register("example@example.com");
С фасадом (всё инкапсулировано в один класс)
$userFacade = new UserFacade();
$userFacade->register("example@example.com");
Ослабляет зависимость кода от реализации Вы можете изменять внутреннюю структуру классов без влияния на клиентский код. ➕Улучшает поддержку и масштабируемость - Если нужно добавить новую функциональность, можно просто изменить фасад, не переписывая весь код. - Удобно при развитии проекта и подключении новых сервисов. 🚩Пример фасада в PHP
class PaymentGateway {
    public function processPayment($amount) {
        echo "Оплата на сумму $amount выполнена.\n";
    }
}

class NotificationService {
    public function sendNotification($message) {
        echo "Отправлено уведомление: $message\n";
    }
}

class OrderFacade {
    private $payment;
    private $notification;

    public function __construct() {
        $this->payment = new PaymentGateway();
        $this->notification = new NotificationService();
    }

    public function placeOrder($amount) {
        $this->payment->processPayment($amount);
        $this->notification->sendNotification("Заказ оплачен на сумму $amount.");
    }
}

// Использование
$order = new OrderFacade();
$order->placeOrder(1000);
Ставь 👍 и забирай 📚 Базу знаний

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

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

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

🤔 Как настроить autoload через Composer? Composer предоставляет механизм автоматической загрузки классов (autoload), который позволяет не писать вручную require. Основные шаги: 1. Использовать PSR-4 или PSR-0 – правила именования классов. 2. Настроить autoload в composer.json – указать, какие пространства имен использовать. 3. Выполнить composer dump-autoload – обновить автозагрузку после изменения файлов. 4. Использовать require 'vendor/autoload.php' – подключить автозагрузку в проекте. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

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

🤔 Что такое нормализация, денормализация? Это два подхода к проектированию структуры баз данных. Они используются для оптимизации хранения данных и повышения производительности запросов. 🚩Нормализация Это процесс структурирования базы данных для уменьшения избыточности данных и устранения аномалий при обновлении, вставке или удалении данных. 🚩Цели нормализации 🟠Устранение дублирования данных Это помогает экономить место и поддерживать согласованность данных. 🟠Повышение целостности данных Например, если данные изменяются в одном месте, то изменения не нужно делать в других местах. 🚩Этапы нормализации 1⃣Первая нормальная форма (1NF) Удаление повторяющихся групп и дублирующихся данных. 2⃣Вторая нормальная форма (2NF) Устранение частичной зависимости данных от составного ключа. 3⃣Третья нормальная форма (3NF) Устранение транзитивной зависимости (когда данные зависят не от первичного ключа напрямую, а через другие поля). 4⃣Далее BCNF (нормальная форма Бойса-Кодда) и другие более сложные формы. 🚩Денормализация Это процесс намеренного добавления избыточности данных для повышения производительности запросов. 🚩Цели денормализации 🟠Ускорение чтения данных Объединение таблиц или добавление дублированных данных уменьшает количество соединений (JOIN) между таблицами.
SELECT o.OrderID, c.CustomerName, p.ProductName, p.ProductPrice
FROM Orders o
JOIN Customers c ON o.CustomerID = c.CustomerID
JOIN Products p ON o.ProductID = p.ProductID;
Ставь 👍 и забирай 📚 Базу знаний

Infinix NOTE 50 Pro+ 5G+ — максимум возможностей Infinix NOTE 50 Pro+ 5G+ — мощный и стильный смартфон, созданный в коллабора
Infinix NOTE 50 Pro+ 5G+ — максимум возможностей Infinix NOTE 50 Pro+ 5G+ — мощный и стильный смартфон, созданный в коллаборации с Honkai: Star Rail. 📱 6,78" AMOLED-дисплей 144 Гц ✨MediaTek Dimensity 8350 Ultimate (4 нм) 👍Камера Sony IMX896 с оптической стабилизацией 👌Перископ 50 МП с 100Х зумом ⚡Быстрая зарядка 100 Вт и MagCharge до 50 Вт В комплекте — эксклюзивный чехол Honkai Покупай Infinix NOTE 50 Pro+ 5G+ в официальном магазине DNS! Перейти на сайт #реклама dns-shop.ru О рекламодателе

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

🤔 Расскажи про полиморфизм Полиморфизм — это одна из ключевых концепций ООП (объектно-ориентированного программирования), которая позволяет объектам разного типа использовать один и тот же интерфейс. Это значит, что один метод может работать с разными типами данных, но при этом давать корректный результат. 🚩Зачем нужен полиморфизм? 🟠Гибкость кода можно легко заменять одни классы другими, не меняя общий код. 🟠Упрощение поддержки код становится понятнее и легче для расширения. 🟠Сокращение дублирования один общий интерфейс может использоваться разными классами. 🚩Виды полиморфизма Полиморфизм через наследование (override, переопределение методов) Полиморфизм через интерфейсы (реализация одного интерфейса разными классами) 🚩Полиморфизм через наследование Допустим, у нас есть базовый класс Animal, у которого есть метод makeSound(). Разные животные будут издавать разные звуки, но все они будут использовать этот метод.
class Animal {
    public function makeSound() {
        return "Some sound";
    }
}

class Dog extends Animal {
    public function makeSound() {
        return "Woof!";
    }
}

class Cat extends Animal {
    public function makeSound() {
        return "Meow!";
    }
}

function printSound(Animal $animal) {
    echo $animal->makeSound() . PHP_EOL;
}

printSound(new Dog()); // Выведет "Woof!"
printSound(new Cat()); // Выведет "Meow!"
🚩Полиморфизм через интерфейсы Иногда классы не связаны через наследование, но должны поддерживать общий метод. Для этого используется интерфейс:
interface Shape {
    public function getArea(): float;
}

class Circle implements Shape {
    private $radius;
    
    public function __construct($radius) {
        $this->radius = $radius;
    }

    public function getArea(): float {
        return pi() * $this->radius * $this->radius;
    }
}

class Rectangle implements Shape {
    private $width, $height;
    
    public function __construct($width, $height) {
        $this->width = $width;
        $this->height = $height;
    }

    public function getArea(): float {
        return $this->width * $this->height;
    }
}

function printArea(Shape $shape) {
    echo "Площадь: " . $shape->getArea() . PHP_EOL;
}

printArea(new Circle(5));       // Выведет площадь круга
printArea(new Rectangle(4, 6)); // Выведет площадь прямоугольника
Ставь 👍 и забирай 📚 Базу знаний

🤔 С помощью чего можно отследить скорость выполнения запроса? 1. Встроенный механизм Laravel — Query Log через DB::enableQueryLog() и DB::getQueryLog(). 2. Использование инструментов профилирования, таких как Laravel Debugbar или Telescope. 3. Внешние инструменты, например, New Relic или Xdebug. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний