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

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

Open in Telegram

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

Show more
2 342
Subscribers
-224 hours
-67 days
-2530 days
Posts Archive
🤔 Слово "global" для чего используется? Слово global позволяет получить доступ к переменной, определённой за пределами текущей функции. Используется, чтобы модифицировать глобальные переменные внутри функций. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Чем HTTP первой версии отличается от второй? HTTP/1.1 и HTTP/2 — это две версии протокола передачи гипертекста (HTTP), которые имеют ряд ключевых отличий. Каждая версия протокола внесла значительные улучшения в эффективность, производительность и возможности веб-коммуникации. 🚩HTTP/1.1 🟠Постоянные соединения По умолчанию соединения остаются открытыми после завершения запроса, что позволяет отправлять несколько запросов по одному соединению и уменьшает нагрузку на сеть и серверы. 🟠Кэширование Введены более сложные механизмы кэширования с использованием заголовков ETag, If-Modified-Since, что улучшает управление кэшем и эффективность передачи данных. 🟠Коды состояния HTTP Добавлены новые коды состояния для более точного представления различных сценариев веб-взаимодействия. 🟠Чанковая передача данных Поддержка передачи данных в частях (chunks), что позволяет динамически генерировать содержимое и отправлять его по мере готовности. 🟠Хосты и виртуальные хосты Поддержка заголовка Host, позволяющего размещать несколько доменов на одном IP-адресе. 🚩HTTP/2 🟠Бинарный протокол В отличие от текстового HTTP/1.1, HTTP/2 использует бинарный формат, который упрощает и ускоряет его разбор. 🟠Мультиплексирование Одно соединение теперь может одновременно передавать несколько потоков данных, что устраняет проблему "заголовочного блока" и значительно повышает производительность. 🟠Управление потоками HTTP/2 позволяет приоритизировать запросы, что улучшает загрузку ресурсов на странице. 🟠Сжатие заголовков В HTTP/2 используется сжатие заголовков HPACK для уменьшения накладных расходов, связанных с метаданными HTTP. 🟠Server Push Серверы могут активно отправлять ресурсы клиенту до того, как клиент явно запросит их, что улучшает время загрузки страниц. Ставь 👍 и забирай 📚 Базу знаний

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

Инструменты Carrot quest приносят 50% выручки с сайта Как увеличить конверсию сайта в 2,5 раза на том же трафике с помощью ли
Инструменты Carrot quest приносят 50% выручки с сайта Как увеличить конверсию сайта в 2,5 раза на том же трафике с помощью лид-ботов и поп-апов? Об этом рассказал Тимур Шахмурзаев, CRO Growth-Marketing онлайн-школы Умскул. Подробнее #реклама 16+ carrotquest.io О рекламодателе

🤔 Что такое ссылочная целостность связей? Ссылочная целостность (Referential Integrity) – это правило, которое гарантирует, что связи между таблицами остаются корректными. 🚩Пример в базе данных Допустим, у нас есть 2 таблицы: users (Пользователи) orders (Заказы) Связь: каждый заказ (orders) должен ссылаться на существующего пользователя (users) через user_id.
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(100)
);

CREATE TABLE orders (
    id INT PRIMARY KEY,
    user_id INT,
    amount DECIMAL(10,2),
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
🚩Как работает ссылочная целостность? Запрещает вставку "несуществующих" ссылок
INSERT INTO orders (id, user_id, amount) VALUES (1, 999, 100.00);
-- ❌ Ошибка! Пользователя с id = 999 нет в users
Запрещает удаление родительской записи, если есть зависимые
DELETE FROM users WHERE id = 1;
-- ❌ Ошибка! Есть заказы, которые ссылаются на пользователя id = 1
Автоматическое удаление связанных данных (ON DELETE CASCADE)
DELETE FROM users WHERE id = 1;
-- ✅ Все заказы с user_id = 1 тоже удалятся
🚩Способы управления ссылочной целостностью ON DELETE CASCADE → при удалении пользователя удаляются все его заказы. ON DELETE SET NULL → при удалении пользователя поле user_id в заказах становится NULL. ON DELETE RESTRICT → запрещает удалять пользователя, если у него есть заказы.
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL;
Ставь 👍 и забирай 📚 Базу знаний

Ищу желающих заполнять карточки товаров на ВБ! Работа полностью на удаленке с зп до150 000 рублей в месяц. Без опыта, нужен т
Ищу желающих заполнять карточки товаров на ВБ! Работа полностью на удаленке с зп до150 000 рублей в месяц. Без опыта, нужен только телефон, занятость 3-6 часов в день. Всему обучат на бесплатном курсе и после возьму на работу: ✅ 3 дня уроков по 30 минут ✅ Домашки с проверкой и оплатой бонусами ✅ Плачу 10 тыс за каждую выполненную домашку Все кто пройдет курс, получат сертификат от школы с образовательной лицензией. ⚡ Набор заканчивается завтра. 👍 Для регистрации жмите кнопку "Зарегистрироваться" Зарегистрироваться #реклама 16+ course.wildmanager.ru О рекламодателе

🤔 Чем класс отличается от объекта? 1. Класс — это шаблон или "чертёж", описывающий свойства и поведение объектов. 2. Объект — это экземпляр класса, созданный с использованием его структуры. 3. Класс определяет, что объект может делать, а объект выполняет это поведение. 4. Класс — это абстракция, объект — конкретное воплощение. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое метрики? Это количественные показатели, используемые для оценки, мониторинга и улучшения различных аспектов работы систем, процессов и проектов. Они предоставляют объективные данные, которые помогают принимать обоснованные решения и улучшать эффективность и качество работы. 🚩Зачем нужны метрики 🟠Измерение производительности Метрики позволяют оценивать, насколько эффективно работают системы или процессы. Например, метрики производительности могут показать, сколько запросов обрабатывается сервером в секунду или как быстро выполняются алгоритмы. 🟠Мониторинг и контроль Постоянный мониторинг метрик помогает выявлять проблемы на ранних стадиях. Например, мониторинг времени отклика сервера позволяет обнаружить ухудшение производительности до того, как это повлияет на пользователей. 🟠Принятие решений Объективные данные, предоставляемые метриками, помогают принимать обоснованные решения по улучшению процессов, распределению ресурсов и планированию. Например, данные о загрузке серверов могут помочь определить, когда нужно добавить новые ресурсы. 🟠Улучшение качества Метрики качества позволяют оценивать, насколько хорошо продукт или процесс соответствует установленным стандартам и требованиям. Например, метрики кода, такие как количество ошибок или покрытие тестами, помогают улучшать качество программного обеспечения. 🟠Управление проектами В проектном управлении метрики помогают следить за прогрессом, оценивать риски и управлять ресурсами. Например, метрики времени и затрат помогают следить за выполнением проекта в рамках бюджета и сроков. 🚩Примеры метрик 🟠Метрики производительности Время отклика (Response Time): Время, за которое система обрабатывает запрос. Пропускная способность (Throughput): Количество запросов, обработанных системой за единицу времени. Время простоя (Downtime): Время, в течение которого система недоступна. 🟠Метрики качества программного обеспечения Покрытие тестами (Test Coverage): Процент кода, покрытого автоматизированными тестами. Количество ошибок (Bug Count): Количество ошибок, обнаруженных в программном обеспечении. Плотность дефектов (Defect Density): Количество ошибок на единицу кода (например, на 1000 строк кода). 🟠Метрики управления проектами Завершение задач (Task Completion): Процент выполненных задач от общего количества задач в проекте. Отклонение от плана (Schedule Variance): Разница между планируемым и фактическим временем выполнения задач. Затраты (Cost): Фактические затраты по сравнению с запланированными затратами. 🚩Применение метрик 🟠В разработке программного обеспечения CI/CD: Метрики сборок и развертываний помогают отслеживать стабильность и скорость релизов. Анализ кода: Метрики сложности кода, дублирования и покрытия тестами помогают улучшать качество и поддерживаемость кода. 🟠В бизнесе и управлении KPI (Key Performance Indicators): Ключевые показатели эффективности помогают оценивать успехи бизнеса или отдельных процессов. OKR (Objectives and Key Results): Цели и ключевые результаты помогают ставить и достигать стратегические цели. 🟠В IT-инфраструктуре Мониторинг серверов: Метрики использования CPU, памяти, дискового пространства помогают поддерживать высокую производительность и доступность серверов. Безопасность: Метрики инцидентов безопасности, обнаружения уязвимостей и реагирования на угрозы помогают обеспечивать защиту данных и систем. Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Как расшифровывается Rest? REST расшифровывается как REpresentational State Transfer (Представленческая передача состояния). Это архитектурный стиль для создания сетевых приложений, который определяет набор ограничений и принципов для проектирования и взаимодействия с веб-службами. 🚩Основные принципы 🟠Клиент-серверная архитектура (Client-Server) Клиент и сервер разделены. Клиенты запрашивают ресурсы, а серверы предоставляют их. Это разделение позволяет независимое развитие клиента и сервера. 🟠Отсутствие состояния (Stateless) Каждое взаимодействие между клиентом и сервером не зависит от предыдущих взаимодействий. Вся необходимая информация для выполнения запроса должна быть включена в сам запрос. 🟠Кешируемость (Cacheable) Ответы могут быть кешируемыми. Это улучшает производительность, снижая необходимость повторных обращений к серверу для получения одних и тех же данных. 🟠Единообразный интерфейс (Uniform Interface) Определяет единообразный способ взаимодействия с ресурсами, независимо от конкретного клиента или сервера. Включает четыре подпринципа: Идентификация ресурсов: Каждый ресурс имеет уникальный идентификатор (обычно URL). Манипуляция ресурсами через представления: Клиенты взаимодействуют с ресурсами, используя их представления (например, JSON, XML). Самоописываемые сообщения: Сообщения содержат всю необходимую информацию для обработки запроса или ответа. Гипермедиа как движок приложения (HATEOAS): Клиенты получают информацию о доступных действиях через гиперссылки в ответах сервера. 🟠Слои (Layered System) Архитектура может быть многослойной, где каждый слой имеет свои обязанности и скрывает сложность соседних слоев. 🟠Код по требованию (Code on Demand, необязательный) Сервер может передавать исполняемый код клиенту для выполнения. Например, JavaScript для выполнения на стороне клиента. 🚩Пример REST GET: Получить ресурс. POST: Создать новый ресурс. PUT: Обновить существующий ресурс. DELETE: Удалить ресурс. 🚩Пример API 1⃣Получить список пользователей
GET /users
Ответ
      [
       {"id": 1, "name": "Alice"},
       {"id": 2, "name": "Bob"}
   ]
2⃣Получить пользователя по ID
GET /users/1
Ответ
      {"id": 1, "name": "Alice"}
   
3️⃣Создать нового пользователя
POST /users
Тело запроса
{"name": "Charlie"}
Ответ
{"id": 3, "name": "Charlie"}
4⃣Обновить информацию о пользователе
PUT /users/1   
Тело запроса
{"name": "Alice Smith"}
5⃣Удалить пользователя
DELETE /users/1
Ставь 👍 и забирай 📚 Базу знаний

Узнайте, как с 0 стать дизайнером без опыта в рисовании Бесплатный практический 3-х дневный интенсив по дизайну интерьера На
Узнайте, как с 0 стать дизайнером без опыта в рисовании Бесплатный практический 3-х дневный интенсив по дизайну интерьера На интенсиве: - сделаете планировку и мудборд - познакомитесь с программами для дизайна - узнаете про бесплатные способы найти клиентов Участники марафона получат именные сертификаты школы. Зарегистрируйтесь на интенсив прямо сейчас и получите подарок - "Шпаргалка начинающего дизайнера" Узнать больше #реклама 16+ geometrium-lesson.ru О рекламодателе

🤔 Какие типизации существуют? 1. Динамическая типизация: PHP автоматически определяет тип переменной на основе её значения. 2. Явная типизация: начиная с PHP 7, можно указывать типы аргументов и возвращаемых значений функций (int, string, array и т.д.). 3. Слабая типизация: PHP преобразует типы данных автоматически при необходимости. 4. Строгая типизация: включает строгую проверку типов через директиву declare. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое CQRS? CQRS (Command Query Responsibility Segregation) – это архитектурный паттерн, который разделяет операции чтения (Query) и записи (Command) в приложении. Вместо одной модели данных используется две: Модель для чтения – оптимизирована для запросов. Модель для записи – отвечает за изменение данных. 🚩Зачем нужен CQRS? 🟠Производительность запросы можно кэшировать, а запись может происходить в другой базе. 🟠Гибкость можно использовать разные структуры данных для чтения и записи. 🟠Масштабируемость можно масштабировать чтение и запись отдельно. 🟠Безопасность можно ограничить доступ к записи. 🚩Как это работает? В классическом приложении чтение и запись используют одну модель данных
class User {
    public $id;
    public $name;
    public $email;
    
    public function updateEmail($newEmail) {
        $this->email = $newEmail;
    }
}
Команда (Command) – запись
class UpdateUserEmailCommand {
    public int $userId;
    public string $newEmail;
    
    public function __construct($userId, $newEmail) {
        $this->userId = $userId;
        $this->newEmail = $newEmail;
    }
}

class UserCommandHandler {
    public function handle(UpdateUserEmailCommand $command) {
        // Логика обновления в БД
        $db = new PDO("mysql:host=localhost;dbname=test", "root", "password");
        $stmt = $db->prepare("UPDATE users SET email = :email WHERE id = :id");
        $stmt->execute([
            ':email' => $command->newEmail,
            ':id' => $command->userId
        ]);
    }
}
Запрос (Query) – чтение
class UserQueryHandler {
    public function getUserById($userId) {
        $db = new PDO("mysql:host=localhost;dbname=test", "root", "password");
        $stmt = $db->prepare("SELECT id, name, email FROM users WHERE id = :id");
        $stmt->execute([':id' => $userId]);
        return $stmt->fetch(PDO::FETCH_ASSOC);
    }
}
🚩CQRS + Event Sourcing Часто CQRS используется вместе с Event Sourcing – вместо изменения данных мы создаем события.
class UserEmailUpdatedEvent {
    public int $userId;
    public string $newEmail;
    
    public function __construct($userId, $newEmail) {
        $this->userId = $userId;
        $this->newEmail = $newEmail;
    }
}
Ставь 👍 и забирай 📚 Базу знаний

Онлайн-игра «Агент Пуля» на сервисе Яндекс Игры Онлайн-игра «Агент Пуля» — увлекательная головоломка. 40 уровней. ⚡ Не нужно скачивать и устанавливать на устройство. 💰 Совершенно бесплатно. Играйте онлайн! Узнать больше #реклама 16+ yandex.ru О рекламодателе

🤔 В чем заключается Enterprise Service Bus (ESB)? Это интеграционная архитектура, которая связывает разные сервисы и системы, обеспечивая обмен данными между ними. Ключевые аспекты: - Централизованное управление обменом сообщениями. - Упрощение интеграции систем с разными форматами данных. - Гибкость – можно легко добавлять и удалять сервисы. - Масштабируемость – упрощает распределение нагрузки между сервисами. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие виды запросов есть? В контексте веб-разработки и работы с API, "виды запросов" обычно относятся к HTTP-методам. HTTP-методы — это стандартизированные типы запросов, которые определяют действие, требуемое от веб-сервера. Каждый метод указывает на определённый тип операции над ресурсами. Вот основные методы (виды запросов), используемые в веб-разработке: 🟠GET Назначение: Запрос содержимого указанного ресурса. GET-запросы должны быть идемпотентными, что означает, что их многократное выполнение приводит к одному и тому же результату и не изменяет состояние сервера. Пример использования: Запрос веб-страницы или изображения. 🟠POST Назначение: Отправка данных на сервер для создания нового ресурса. Данные отправляются в теле запроса. POST-запросы не идемпотентны, то есть многократное выполнение может приводить к разным результатам. Пример использования: Отправка формы на веб-сайте. 🟠PUT Назначение: Обновление существующего ресурса или создание нового ресурса по указанному URI. В отличие от POST, PUT идемпотентен. Пример использования: Обновление деталей пользователя. 🟠DELETE Назначение: Удаление указанного ресурса. Пример использования: Удаление записи из базы данных. 🟠PATCH Назначение: Частичное обновление существующего ресурса. PATCH может быть не идемпотентным, в зависимости от того, как он реализован на сервере. Пример использования: Обновление части данных пользователя, например, смена пароля. 🟠HEAD Назначение: Аналогичен GET, но сервер возвращает только заголовки ответа без тела. Используется для извлечения метаданных. Пример использования: Проверка существования ресурса или его последнего обновления. 🟠OPTIONS Назначение: Определение возможностей веб-сервера или параметров подключения для конкретного ресурса. Пример использования: Определение поддерживаемых методов HTTP для URL. 🟠TRACE Назначение: Эхо-запрос. Возвращает в теле ответа полученный запрос. Это может использоваться для диагностики. Из-за соображений безопасности его поддержка на серверах часто отключена. Пример использования: Отладка веб-запросов. Ставь 👍 и забирай 📚 Базу знаний

🤔 Как устроен Git? Это распределенная система контроля версий, работающая на основе графа коммитов и хранения изменений через хеши (SHA-1). 1. Объектная модель: - Commit – снимок состояния проекта. - Tree – каталог файлов в коммите. - Blob – сами файлы (содержимое). 2. Система ссылок (HEAD, branches, tags). 3. Механизм staging (индексация изменений) перед коммитом. 4. Быстрая работа за счет хранения только изменений (deltas) и поддержки локального репозитория. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое SSH-протокол? SSH (Secure Shell) — это сетевой протокол, который используется для безопасного доступа к удаленным компьютерам и управления ими. Он обеспечивает шифрование данных, аутентификацию и целостность передаваемой информации, что делает его предпочтительным средством для удаленного администрирования и передачи файлов. 🚩Основные характеристики и возможности 🟠Безопасность SSH использует криптографические методы для шифрования данных, что защищает передаваемую информацию от перехвата и анализа. Протокол поддерживает различные методы аутентификации, включая использование паролей и публичных/приватных ключей. 🟠Аутентификация Парольная аутентификация: Пользователь вводит свой логин и пароль для доступа к удаленной системе. Аутентификация с помощью ключей: Вместо пароля используется пара ключей (публичный и приватный). Публичный ключ размещается на удаленном сервере, а приватный ключ остается на клиентской машине. 🟠Шифрование данных Шифрует все передаваемые данные, включая пароли, команды и файлы, что предотвращает их перехват и несанкционированный доступ. 🟠Целостность данных Обеспечивает контроль целостности передаваемых данных, используя алгоритмы хеширования, которые обнаруживают любые изменения данных в процессе передачи. 🟠Туннелирование Позволяет создавать зашифрованные туннели для передачи данных других протоколов (например, HTTP, FTP), обеспечивая их безопасность. 🚩Основные компоненты 🟠SSH-клиент Установленное на локальном компьютере, которое используется для установления соединения с удаленным сервером. 🟠SSH-сервер Работающее на удаленной машине, которое принимает и обрабатывает соединения от SSH-клиентов. 🚩Пример 🟠Установка соединения с удаленным сервером: Для подключения к удаленному серверу используется команда ssh в терминале.
ssh username@remote_host   
🟠Копирование файлов через SSH Для копирования файлов с локального компьютера на удаленный сервер или наоборот используется команда scp.
scp localfile.txt username@remote_host:/remote/directory/   
Копирование файлов с удаленного сервера на локальный компьютер
scp username@remote_host:/remote/file.txt /local/directory/   
🟠Использование ключей для аутентификации Генерация пары ключей (публичного и приватного)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"   
Копирование публичного ключа на удаленный сервер
ssh-copy-id username@remote_host
Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Какие бывают массивы в PHP? Это гибкая структура данных, которая может использоваться для хранения набора значений. 🟠Индексные массивы Это массивы, в которых элементы индексируются числовыми индексами. Индексы начинаются с 0.
$fruits = ["apple", "banana", "cherry"];
echo $fruits[0]; // apple
🟠Ассоциативные массивы В ассоциативных массивах индексы (или ключи) являются строками. Они позволяют хранить данные в формате "ключ => значение".
$user = [
    "name" => "Alice",
    "age" => 25,
    "email" => "alice@example.com"
];
echo $user["name"]; // Alice
🟠Многомерные массивы Это массивы, которые содержат другие массивы в качестве элементов. Они могут быть как индексными, так и ассоциативными.
$matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];
echo $matrix[1][2]; // 6
Пример (ассоциативный многомерный массив)
$users = [
    [
        "name" => "Alice",
        "email" => "alice@example.com"
    ],
    [
        "name" => "Bob",
        "email" => "bob@example.com"
    ]
];
echo $users[0]["email"]; // alice@example.com
🟠Массивы смешанного типа Это массивы, которые содержат одновременно числовые индексы и строковые ключи.
$mixedArray = [
    0 => "apple",
    "color" => "red",
    1 => "banana",
    "size" => "large"
];
echo $mixedArray[1]; // banana
echo $mixedArray["color"]; // red
🚩Особенности массивов в PHP В PHP массивы реализованы как хэш-таблицы, поэтому они поддерживают как числовые, так и строковые индексы. Вы можете работать с массивами с помощью множества встроенных функций, например: count() — возвращает количество элементов в массиве. array_keys() — возвращает все ключи массива. array_values() — возвращает все значения массива.
$colors = ["red", "green", "blue"];
echo count($colors); // 3
Ставь 👍 и забирай 📚 Базу знаний