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

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

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

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

نمایش بیشتر
2 342
مشترکین
-224 ساعت
-67 روز
-2530 روز
آرشیو پست ها
🤔 Что такое Cookies? Это небольшие файлы, которые хранят данные на стороне клиента (в браузере). Они используются для: 1. Идентификации пользователя и управления сессиями. 2. Сохранения предпочтений пользователя. 3. Отслеживания активности пользователя на сайте. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чем разница кэширования, кодирования, шифрования? 🚩Кэширование – для быстродействия Кэширование – это временное хранение данных, чтобы избежать повторных вычислений или загрузок. Пример кэширования (PHP + Redis)
$cacheKey = "user_123";
$cachedData = $redis->get($cacheKey);

if ($cachedData === false) {
    $user = getUserFromDatabase(123);
    $redis->set($cacheKey, json_encode($user), 3600); // Кэшируем на 1 час
} else {
    $user = json_decode($cachedData, true);
}
🚩Кодирование – для совместимости Кодирование (Encoding) – это преобразование данных в другой формат, чтобы их можно было передавать или хранить. Пример кодирования в Base64 (PHP)
$original = "Hello, World!";
$encoded = base64_encode($original);
echo $encoded; // ✅ "SGVsbG8sIFdvcmxkIQ=="

$decoded = base64_decode($encoded);
echo $decoded; // ✅ "Hello, World!"
🚩Шифрование – для безопасности Шифрование (Encryption) – это преобразование данных в секретный формат с помощью ключа, чтобы их нельзя было прочитать без расшифровки. Пример шифрования AES-256 (PHP + OpenSSL)
$key = "supersecretkey123456"; // Должен быть длинным!
$data = "Пароль123";

$encrypted = openssl_encrypt($data, "AES-256-CBC", $key, 0, "1234567812345678");
echo $encrypted; // 🔐 Зашифрованный текст

$decrypted = openssl_decrypt($encrypted, "AES-256-CBC", $key, 0, "1234567812345678");
echo $decrypted; // ✅ "Пароль123"
Ставь 👍 и забирай 📚 Базу знаний

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

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

🤔 Как работает зацепление? Зацепление (coupling) — это степень зависимости одного модуля от другого. В PHP (и вообще в разработке) мы стремимся уменьшить зацепление, чтобы код был гибким, удобным для тестирования и сопровождения. 🚩Виды зацепления 🟠Слабое зацепление (Loose Coupling) – Хорошо - Модули мало зависят друг от друга. - Можно заменять части системы без изменений в других частях. - Используется интерфейсы, DI (Dependency Injection), события.
interface Logger {
    public function log($message);
}

class FileLogger implements Logger {
    public function log($message) {
        echo "Запись в файл: $message\n";
    }
}

class DatabaseLogger implements Logger {
    public function log($message) {
        echo "Запись в базу: $message\n";
    }
}

class User {
    private $logger;

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

    public function register($name) {
        echo "Регистрация пользователя: $name\n";
        $this->logger->log("Пользователь $name зарегистрирован.");
    }
}

// Можно легко менять логгер без изменения класса User
$user = new User(new FileLogger());
$user->register("Иван");

$user = new User(new DatabaseLogger());
$user->register("Петр");
🟠Жёсткое зацепление (Tight Coupling) – Плохо - Модули сильно связаны, нельзя поменять один без изменения другого. - Код трудно тестировать и расширять. - Используется жёсткая привязка классов внутри других классов.
class FileLogger {
    public function log($message) {
        echo "Запись в файл: $message\n";
    }
}

class User {
    private $logger;

    public function __construct() {
        $this->logger = new FileLogger(); // Жесткая зависимость!
    }

    public function register($name) {
        echo "Регистрация пользователя: $name\n";
        $this->logger->log("Пользователь $name зарегистрирован.");
    }
}

// User всегда использует FileLogger, его нельзя легко заменить
$user = new User();
$user->register("Иван");
Ставь 👍 и забирай 📚 Базу знаний

Три дня, которые изменят ваш взгляд на кибербезопасность Миссия посетителей SOC Forum: влиять на будущее индустрии безопаснос
+5
Три дня, которые изменят ваш взгляд на кибербезопасность Миссия посетителей SOC Forum: влиять на будущее индустрии безопасности. Стиль: разный. Собрали несколько характерных портретов участников! А каким участником планируете быть вы? - целеустремленным - основательным - многозадачным - тусовщиком - расслабленным И все это не выходя из дома. Зарегистрируйтесь, и мы напомним о старте трансляции и пришлем ссылку, чтобы вы ничего не пропустили. Записаться онлайн #реклама 16+ registration.forumsoc.ru О рекламодателе

🤔 Для чего нужен ELT? ELT (Extract, Load, Transform) – это процесс обработки данных, используемый в аналитике: - Extract (Извлечение) – загрузка данных из источников (БД, API). - Load (Загрузка) – сохранение данных в хранилище (например, в Data Warehouse). - Transform (Преобразование) – очистка, фильтрация, агрегация данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое extend? В PHP extends используется для наследования классов. Он позволяет одному классу (дочернему) наследовать свойства и методы другого класса (родительского). 🚩Пример наследования через `extends` Базовый пример (extends)
class Animal {
    public function makeSound() {
        return "Какой-то звук";
    }
}

class Dog extends Animal {
    public function makeSound() {
        return "Гав-гав!";
    }
}

$dog = new Dog();
echo $dog->makeSound(); // ✅ "Гав-гав!"
Использование parent:: для вызова родительского метода
class Animal {
    public function makeSound() {
        return "Какой-то звук";
    }
}

class Cat extends Animal {
    public function makeSound() {
        return parent::makeSound() . " Мяу-мяу!";
    }
}

$cat = new Cat();
echo $cat->makeSound(); // ✅ "Какой-то звук Мяу-мяу!"
Наследование свойств
class User {
    protected string $role = "Гость";

    public function getRole() {
        return $this->role;
    }
}

class Admin extends User {
    protected string $role = "Администратор";
}

$admin = new Admin();
echo $admin->getRole(); // ✅ "Администратор"
Ставь 👍 и забирай 📚 Базу знаний

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

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

🤔 Что такое инкапсуляция? Инкапсуляция — это принцип ООП, при котором детали реализации скрыты от внешнего мира, предоставляя доступ к данным через методы. В PHP это реализуется с помощью модификаторов доступа (private, protected, public). Она обеспечивает безопасность данных и облегчает поддержку кода. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

📺 База 1000+ реальных собеседований На программиста, тестировщика, аналитика, проджекта и другие IT профы. Есть собесы от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д. 🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство!

🤔 Слово "global" для чего используется? Ключевое слово global используется в PHP для доступа к глобальным переменным внутри функций. 🚩Как работает `global`? Доступ к глобальной переменной внутри функции
$counter = 10; // Глобальная переменная

function increment() {
    global $counter; // Доступ к глобальной переменной
    $counter++;
}

increment();
echo $counter; // ✅ 11
Использование нескольких глобальных переменных
$a = 5;
$b = 10;

function sum() {
    global $a, $b;
    $b = $a + $b; // Меняем глобальную переменную $b
}

sum();
echo $b; // ✅ 15
🟠Альтернативный способ – `$GLOBALS` Можно использовать суперглобальный массив $GLOBALS, который хранит все глобальные переменные.
$x = 3;
$y = 7;

function multiply() {
    $GLOBALS['y'] = $GLOBALS['x'] * $GLOBALS['y'];
}

multiply();
echo $y; // ✅ 21
🚩Когда `global` – плохая идея? Глобальные переменные усложняют отладку (их можно случайно изменить). Функции становятся зависимыми от внешних данных (плохо для тестирования). Лучше передавать переменные через аргументы функции. Альтернативный способ (без global)
function increment($counter) {
    return $counter + 1;
}

$counter = 10;
$counter = increment($counter);
echo $counter; // ✅ 11
Ставь 👍 и забирай 📚 Базу знаний

VK RecSys Challenge — решите задачу холодного старта Привет! Открываем регистрацию на VK RecSys Challenge – соревнование по р
VK RecSys Challenge — решите задачу холодного старта Привет! Открываем регистрацию на VK RecSys Challenge – соревнование по разработке рекомендательных систем. Задача – решить одну из ключевых проблем рекомендаций: как показать пользователю ролик, который он точно посмотрит, даже если никто этот ролик не видел. Вам предстоит поработать с реальным датасетом VK-LSVD: 40 миллиардов обезличенных пользовательских взаимодействий и 20 миллионов коротких видео. Ждём студентов, исследователей, ML-инженеров – всех, кому интересен мир рекома. Формат участия: - индивидуально или в команде до 4 человек - 5 сабмитов в день - призовой фонд – 2 500 000 рублей Приём заявок – до 15 декабря Подробности и регистрация – по ссылке Зарегистрироваться #реклама 16+ dev-events.com О рекламодателе

🤔 Что запрещает final? Модификатор final запрещает наследование класса, если он указан перед его объявлением. Если final используется для метода, он запрещает переопределение этого метода в дочерних классах. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что знаешь про нормальные формы в БД? Нормальные формы (Normal Forms, NF) в базах данных — это правила, которые помогают организовать данные так, чтобы избежать избыточности и аномалий при обновлении, удалении и вставке. 🚩Основные нормальные формы 🟠Первая нормальная форма (1NF) убирает повторяющиеся группы и делает все столбцы атомарными. Что нужно сделать? Каждое поле должно содержать только одно значение. В таблице нет повторяющихся строк. 🟠Вторая нормальная форма (2NF) убирает зависимости от части составного ключа. Что нужно сделать? Данные, которые зависят не от всего первичного ключа, вынести в отдельные таблицы. Должна быть уже в 1NF. 🟠Третья нормальная форма (3NF) убирает транзитивные зависимости. Что нужно сделать? Данные должны зависеть только от первичного ключа и не зависеть от других неключевых полей. Должна быть уже в 2NF. 🚩Дополнительные нормальные формы 🟠Бойса-Кодда (BCNF) более строгая версия 3NF, исключает случаи, когда таблица имеет несколько потенциальных ключей, но один из них влияет на другой. 🟠Четвёртая нормальная форма (4NF) убирает многозначные зависимости (например, если студент изучает несколько предметов, но предметы никак не связаны друг с другом). 🟠Пятая нормальная форма (5NF) разбиение таблицы на подтаблицы для минимизации избыточности данных. Ставь 👍 и забирай 📚 Базу знаний

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

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

Бесплатный курс по дизайну: веб, графический и UX/UI Научись создавать дизайн сайтов и приложений, инфографику для карточек н
Бесплатный курс по дизайну: веб, графический и UX/UI Научись создавать дизайн сайтов и приложений, инфографику для карточек на маркетплейсах и работать в Figma! Студенты курса в среднем зарабатывают от 68 000 ₽ уже во время обучения💰 Этот курс для тебя, если ты: ✅ мечтаешь о новой профессии в digital, но не знаешь, с чего начать; ✅ чувствуешь, что хочешь большего — свободы, самореализации, творчества; ✅ полный новичок и хочешь систему, а не хаос; ✅ хочешь начать зарабатывать удалённо. Зарегистрироваться #реклама 16+ ydaev.ru О рекламодателе

🤔 Что такое составной индекс? Составной индекс (Composite Index) – это индекс, который создаётся сразу на несколько колонок таблицы. 🚩Как работает составной индекс? 🟠Пример без индекса (медленный поиск) Допустим, у нас есть таблица orders
CREATE TABLE orders (
    id INT PRIMARY KEY,
    user_id INT,
    status VARCHAR(50),
    created_at DATETIME
);
И мы выполняем поиск по user_id и status
SELECT * FROM orders WHERE user_id = 5 AND status = 'paid';
Создаём составной индекс (ускоряем поиск)
CREATE INDEX idx_user_status ON orders(user_id, status);
Как SQL использует составной индекс? (Правило слева направо) Важный момент: составной индекс работает слева направо.
SELECT * FROM orders WHERE user_id = 5 AND status = 'paid'; -- ✅ Использует индекс
SELECT * FROM orders WHERE user_id = 5; -- ✅ Использует индекс (user_id - первый в индексе)
НЕ работает
SELECT * FROM orders WHERE status = 'paid'; -- ❌ Индекс не используется (user_id пропущен)
Ставь 👍 и забирай 📚 Базу знаний