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
🤔 Какие паттерны знаешь? В программировании и разработке ПО существует множество паттернов проектирования, включая: - Порождающие: Singleton, Factory, Builder, Prototype. - Структурные: Adapter, Decorator, Facade, Proxy, Bridge. - Поведенческие: Observer, Strategy, Command, State, Template Method, Iterator, Mediator. Эти паттерны помогают решать общие проблемы проектирования, повышая уровень абстракции и уменьшая связность компонентов? Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что реализует класс Datetime? Класс DateTime в PHP предоставляет удобные инструменты для работы с датами и временем. Он заменяет устаревшие функции date(), strtotime() и делает код более читаемым и гибким. 🚩Что умеет `DateTime`? Создавать даты и время. Изменять, прибавлять, вычитать дни, месяцы, годы. Преобразовывать дату в строку (format()). Работать с часовыми поясами (DateTimeZone). Сравнивать даты (diff()). Преобразовывать в Unix Timestamp (getTimestamp()). 🚩Примеры использования `DateTime` 1⃣Создание объекта DateTime
$date = new DateTime(); // Текущая дата и время
echo $date->format('Y-m-d H:i:s'); // 2025-02-24 15:30:00
2⃣Создание DateTime с конкретной датой
$date = new DateTime('2023-12-31 23:59:59');
echo $date->format('d.m.Y H:i'); // 31.12.2023 23:59
3⃣Прибавить / Вычесть дни, месяцы, годы (modify())
$date = new DateTime('2024-01-01');
$date->modify('+1 month'); // Добавить 1 месяц
echo $date->format('Y-m-d'); // 2024-02-01

$date->modify('-10 days'); // Вычесть 10 дней
echo $date->format('Y-m-d'); // 2024-01-22
4⃣Разница между датами (diff())
$date1 = new DateTime('2024-01-01');
$date2 = new DateTime('2025-01-01');

$diff = $date1->diff($date2);
echo $diff->days; // 366 (разница в днях)
echo $diff->y;    // 1 (разница в годах)
5⃣Работа с часовыми поясами (DateTimeZone)
$date = new DateTime('now', new DateTimeZone('America/New_York'));
echo $date->format('Y-m-d H:i:s'); // Время в Нью-Йорке
6⃣Преобразование DateTime в Timestamp (getTimestamp())
$date = new DateTime('2024-01-01');
echo $date->getTimestamp(); // 1704067200 (Unix-время)
7⃣Создание DateTime из Timestamp (setTimestamp())
$date = new DateTime();
$date->setTimestamp(1704067200);
echo $date->format('Y-m-d H:i:s'); // 2024-01-01 00:00:00
Ставь 👍 и забирай 📚 Базу знаний

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

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

Современные видовые домики на берегу Шхеры Ладоги! Кемпинг в Карелии на шхерах и островах: шатры, палатки, рыбалка. Ждем вас
Современные видовые домики на берегу Шхеры Ладоги! Кемпинг в Карелии на шхерах и островах: шатры, палатки, рыбалка. Ждем вас на отдыхе! Узнать больше #реклама fortvernyi-spb.ru О рекламодателе

🤔 Как спроектировать базу данных? Проектирование базы данных – это ключевой этап в создании любой системы, где хранятся данные. Если БД спроектирована плохо, это приведёт к медленной работе, избыточности данных и сложным обновлениям. 🟠Определение требований и структуры данных Сначала нужно понять, какие данные будут храниться и как они связаны. Какие объекты будут в системе? (например, пользователи, заказы, товары). Как они связаны друг с другом? (например, один пользователь может делать много заказов). Какие поля нужны в каждой таблице? (например, email, password, created_at). - Какие запросы будут выполняться чаще всего? Пример: интернет-магазин Пользователи (users) Товары (products) Заказы (orders) Связь между заказами и товарами (order_items) 🟠Определение таблиц и связей (ERD – диаграмма) Разделяем данные по таблицам и определяем связи (1-к-1, 1-к-N, N-к-N). Связи между таблицами: 1-к-1 → один профиль = один пользователь (users → user_profiles). 1-к-N → один пользователь = много заказов (users → orders). N-к-N → один заказ = много товаров, и один товар может быть в разных заказах (orders ↔️ products).
Users (id) --- (1:N) --- Orders (id, user_id) --- (N:M) --- Order_Items (order_id, product_id, quantity)
Products (id)
SQL-создание таблиц
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100),
    email VARCHAR(255) UNIQUE,
    password VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE products (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255),
    price DECIMAL(10,2),
    stock INT
);

CREATE TABLE orders (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

CREATE TABLE order_items (
    order_id INT,
    product_id INT,
    quantity INT,
    PRIMARY KEY (order_id, product_id),
    FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE,
    FOREIGN KEY (product_id) REFERENCES products(id) ON DELETE CASCADE
);
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Что такое репликация? Это процесс создания и поддержания копий данных в разных местах для обеспечения доступности, надежности и производительности системы. Она используется в базах данных, файловых системах и других системах хранения данных. 🚩Зачем нужна репликация 🟠Повышение доступности Если одна копия данных становится недоступной из-за сбоя или отключения сервера, другая копия может продолжить обслуживание запросов, минимизируя время простоя. 🟠Улучшение производительности Репликация позволяет распределить нагрузку на несколько серверов, что улучшает время отклика системы при больших объемах запросов. 🟠Резервное копирование и восстановление данных Репликация обеспечивает наличие резервных копий данных, которые можно использовать для восстановления системы после сбоя. 🟠Географическое распределение данных Репликация позволяет хранить данные ближе к пользователям, что снижает задержку при доступе к данным. 🚩Виды репликации 🟠Синхронная репликация Данные одновременно записываются на основной и реплицированный серверы. Высокая консистентность данных. Замедление операций записи, так как они должны быть подтверждены на всех репликах. 🟠Асинхронная репликация Данные сначала записываются на основной сервер, а затем копируются на реплицированный сервер с задержкой. Быстрые операции записи на основной сервер. Возможность временной неконсистентности данных между серверами. 🟠Полная репликация Все данные копируются на все реплицированные серверы. Простота реализации и высокая доступность данных. Высокие затраты на хранение и передачу данных. 🟠Частичная репликация Только часть данных копируется на реплицированные серверы. Экономия ресурсов хранения и передачи данных. Более сложное управление данными. 🚩Пример использования MySQL поддерживает репликацию, что позволяет автоматически копировать данные с одного сервера (мастера) на один или несколько других серверов (слейвов). 1⃣Настройка мастера
-- Включаем бинарные логи на мастере
[mysqld]
log-bin=mysql-bin
server-id=1
2⃣Создание пользователя для репликации на мастере
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
3⃣Настройка слейва
-- Настройки слейва
[mysqld]
server-id=2
4⃣Запуск репликации на слейве
CHANGE MASTER TO
    MASTER_HOST='master_host',
    MASTER_USER='replica_user',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS= 107;
START SLAVE;
Ставь 👍 и забирай 📚 Базу знаний

Квартиры в Новостройке СПб. Колпино. Ипотека 13,9% Жилой комплекс "Квартал Заречье" Санкт-Петербург. Колпино. 4 девятиэтажных
Квартиры в Новостройке СПб. Колпино. Ипотека 13,9% Жилой комплекс "Квартал Заречье" Санкт-Петербург. Колпино. 4 девятиэтажных жилых корпуса 8-этажный крытый гараж на 496 парковочных мест В живописном месте у реки Ижора. На первых этажах будут размещены магазины, кофейни, поликлиника и зона коворкинга. Перейти на сайт Изучите все условия кредита (займа) на сайте в соответствующем разделе. Оценивайте свои финансовые возможности и риски. Проектная декларация на сайте https://наш.дом.рф/. Застройщик: ООО "СЗ "ЗАГОРОДНАЯ, 71". Финансовые услуги оказывает: ПАО Сбербанк, ООО "СЗ "ЗАГОРОДНАЯ, 71". #реклама квартал-заречье.рф О рекламодателе

🤔 Что изменилось в приведении типов в PHP 8? PHP 8 усилил строгую типизацию, добавив поддержку объединённых типов (Union Types). Также введены типы mixed и static, расширяющие возможности определения данных. Улучшена работа с привидением типов, исключая двусмысленности, чтобы снизить вероятность ошибок. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какой принцип нарушает Active Record? Это популярный шаблон проектирования, который используется для взаимодействия с базой данных. Он сочетает в себе логику бизнес-модели и работу с базой данных в одном объекте. Несмотря на свою популярность и удобство, Active Record нарушает принцип разделения ответственности (Single Responsibility Principle, SRP) из SOLID. 🚩Почему Active Record нарушает SRP? SRP гласит, что класс должен иметь только одну причину для изменения, то есть заниматься только одной задачей. 🟠Логика бизнес-модели Класс хранит правила и поведение, связанные с сущностью (например, вычисления, валидации, связи). 🟠Работа с базой данных Класс отвечает за взаимодействие с базой данных, включая CRUD-операции (создание, чтение, обновление, удаление), построение SQL-запросов и т. д. Таким образом, Active Record совмещает две разные ответственности: бизнес-логику и взаимодействие с базой данных. Если изменится структура базы данных или логика обработки данных, класс придется менять, что нарушает SRP.
class User extends ActiveRecord {
    public function getFullName() {
        return $this->first_name . ' ' . $this->last_name;
    }

    public function saveUser() {
        $this->save(); // Метод сохранения в базе данных
    }
}
🚩Альтернатива Чтобы соблюсти SRP, можно разделить бизнес-логику и работу с базой данных на разные уровни: 🟠Data Mapper Отвечает только за преобразование данных между объектами и базой данных. 🟠Сервисы Обрабатывают бизнес-логику.
class User {
    private $firstName;
    private $lastName;

    public function __construct($firstName, $lastName) {
        $this->firstName = $firstName;
        $this->lastName = $lastName;
    }

    public function getFullName() {
        return $this->firstName . ' ' . $this->lastName;
    }
}

class UserMapper {
    public function save(User $user) {
        // SQL-запрос для сохранения данных
    }
}
Ставь 👍 и забирай 📚 Базу знаний

Получите IT профессию с официальным ДОКУМЕНТОМ! Не просто курсы – а полноценное образование с дипломом о профессиональной пер
Получите IT профессию с официальным ДОКУМЕНТОМ! Не просто курсы – а полноценное образование с дипломом о профессиональной переподготовке или удостоверением о повышении квалификации, внесенным в Росреестр! Выбирайте направление: -Web-разработчик -Инженер MikroTik -Специалист по AI и машинному обучению -Сетевой инженер -Linux-администратор -Python-программист -DevOps-инженер -Администратор Windows Server -Специалист по слаботочным сетям (СКС) Ваши гарантии: ✅Законный документ о квалификации ✅Право на ведение профдеятельности ✅Весомое преимущество при трудоустройстве ✅Поддержка ментора ✅Дистанционное обучение Инвестируйте в будущее – получите не только знания, но и официальную профессию! Перейти на сайт #реклама 16+ dms-it.ru О рекламодателе

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

Откройте пункт выдачи Ozon с поддержкой до 2 880 000 ₽! Франшиза Ozon — прибыльный бизнес с минимальными вложениями! В I квар
Откройте пункт выдачи Ozon с поддержкой до 2 880 000 ₽! Франшиза Ozon — прибыльный бизнес с минимальными вложениями! В I квартале 2025 клиенты оформили >1 млрд заказов, 95% получены в пунктах самовывоза. Почему это выгодно? — Кроме процента от оборота, можно зарабатывать на допуслугах (прием товаров, вендинг и др.). — В Москве и крупных городах ставка для партнеров уже не 5%, а выше. — На окупаемость точка выходит за 6 месяцев, и все это время Ozon выплачивает финансовую поддержку — до 2 880 000 ₽. — Бесплатно предоставляют вывеска, маркетинговые материалы и помощь на всех этапах. Спецпредложение этого лета: дополнительная выгода — 10% от оборота в первые 3 месяца. Особенно актуально перед сезоном распродаж. Интересно? Оставляйте заявку и начинайте зарабатывать с Ozon! Подать заявку #реклама pvz.ozon.ru О рекламодателе

🤔 Что делают self и static? В PHP self и static используются внутри классов для обращения к их свойствам и методам, но работают по-разному. Давайте разберёмся в их назначении и отличиях. 🚩self Используется для обращения к собственным методам и свойствам класса. Оно не учитывает наследование и всегда ссылается на тот класс, в котором написано.
class A {
    public static function who() {
        echo "Я класс A\n";
    }

    public static function call() {
        self::who(); // Вызываем метод who() внутри того же класса
    }
}

class B extends A {
    public static function who() {
        echo "Я класс B\n";
    }
}

B::call(); // Выведет: "Я класс A", а не "Я класс B"
🚩static Работает динамически, учитывает класс, из которого вызван метод. Это полезно в наследовании.
class A {
    public static function who() {
        echo "Я класс A\n";
    }

    public static function call() {
        static::who(); // Используем static вместо self
    }
}

class B extends A {
    public static function who() {
        echo "Я класс B\n";
    }
}

B::call(); // Выведет: "Я класс B"
Ставь 👍 и забирай 📚 Базу знаний

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

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

Регистрируйтесь на Yandex Ecom Open Air 8 августа Море инсайтов для бизнеса, музыкальный open-air, лекции и нетворкинг. Участ
Регистрируйтесь на Yandex Ecom Open Air 8 августа Море инсайтов для бизнеса, музыкальный open-air, лекции и нетворкинг. Участие бесплатно! Зарегистрироваться #реклама 18+ ecomfest.ru О рекламодателе

🤔 Зачем использовать Rest , если есть Soup? SOAP (Simple Object Access Protocol) и REST (Representational State Transfer) – это два подхода для обмена данными между клиентом и сервером (API). SOAP появился раньше, но REST стал более популярным, потому что он проще, быстрее и гибче. 🚩Почему REST лучше в большинстве случаев? 🟠REST проще и легче SOAP использует сложные XML-сообщения с заголовками и схемами, что делает запросы более громоздкими. REST использует JSON или XML, что делает его быстрее и удобнее.
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <getUser>
            <id>123</id>
        </getUser>
    </soap:Body>
</soap:Envelope>
Пример запроса в REST (короче и проще)
GET /users/123 HTTP/1.1
Host: api.example.com
🟠REST быстрее и легче для веба SOAP требует больше ресурсов, потому что использует XML + сложные заголовки. REST работает по HTTP и использует JSON, который легче парсится в браузере и мобильных приложениях. 🟠REST лучше интегрируется с веб-технологиями SOAP требует специальных библиотек (WSDL, WS-Security). REST использует обычные HTTP-методы: - GET – получить данные - POST – создать - PUT – обновить - DELETE – удалить 🟠REST масштабируемый и кроссплатформенный REST легко работает с JavaScript, мобильными приложениями (iOS, Android), браузерами и фронтендом. SOAP чаще используется в корпоративных системах (банки, госструктуры), но хуже подходит для современных веб-приложений. Ставь 👍 и забирай 📚 Базу знаний

Регистрируйтесь на Yandex Ecom Open Air 8 августа Море инсайтов для бизнеса, музыкальный open-air, лекции и нетворкинг. Участие бесплатно! Зарегистрироваться #реклама 18+ ecomfest.ru О рекламодателе