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

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

前往频道在 Telegram

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

显示更多
2 347
订阅者
+124 小时
-87
-2430
帖子存档
🤔 Зачем использовать 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 чаще используется в корпоративных системах (банки, госструктуры), но хуже подходит для современных веб-приложений. Ставь 👍 и забирай 📚 Базу знаний

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

Завтра последний день! Успей купить пожизненный easyoffer PRO - по цене 1 года Покупаешь один раз — пользуешься всю жизнь. 👉
Завтра последний день! Успей купить пожизненный easyoffer PRO - по цене 1 года Покупаешь один раз — пользуешься всю жизнь. 👉 Акция до 31 марта: https://easyoffer.ru/pro

🤔 Какие протоколы ты знаешь? Протоколы в сетевых системах обеспечивают правила передачи данных. Они работают на разных уровнях модели OSI и TCP/IP. Вот основные виды протоколов: 🚩Основные виды протоколов 🟠Физический и канальный уровни Ethernet: Передача данных по проводным сетям. Wi-Fi (IEEE 802.11): Беспроводная передача данных. PPP (Point-to-Point Protocol): Соединение между двумя узлами. HDLC (High-Level Data Link Control): Передача данных на канальном уровне. 🟠Сетевой уровень IP (Internet Protocol): Основной протокол для передачи данных в интернете (IPv4 и IPv6). ICMP (Internet Control Message Protocol): Передача сообщений об ошибках и контроля. 🟠Транспортный уровень TCP (Transmission Control Protocol): Надежная передача данных. UDP (User Datagram Protocol): Быстрая, но ненадежная передача данных. 🟠Сеансовый и представительный уровни SSL/TLS (Secure Sockets Layer / Transport Layer Security): Обеспечение безопасности передачи данных. NetBIOS: Работа сетевых приложений в локальных сетях. 🟠Прикладной уровень HTTP/HTTPS (HyperText Transfer Protocol / Secure): Передача веб-страниц. FTP (File Transfer Protocol): Передача файлов. SMTP (Simple Mail Transfer Protocol): Передача электронной почты. POP3/IMAP: Получение электронной почты. DNS (Domain Name System): Преобразование доменных имен в IP-адреса. SSH (Secure Shell): Безопасное удаленное управление серверами. SNMP (Simple Network Management Protocol): Управление сетевыми устройствами. LDAP (Lightweight Directory Access Protocol): Доступ и управление каталогами. DHCP (Dynamic Host Configuration Protocol): Динамическое назначение IP-адресов. 🟠Специализированные протоколы VoIP (Voice over IP): Передача голосовых данных (SIP, RTP). MQTT (Message Queuing Telemetry Transport): Обмен сообщениями в IoT. CoAP (Constrained Application Protocol): Работа с ограниченными устройствами в IoT. Ставь 👍 и забирай 📚 Базу знаний

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

🤔 Что такое составной индекс? Составной индекс (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 пропущен)
Ставь 👍 и забирай 📚 Базу знаний

🤔 Есть ли какое-то различие между одинарными и двойными кавычками? - В большинстве языков программирования разницы нет. - В PHP двойные кавычки позволяют интерполировать переменные, а одинарные – нет. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какое отличие у протоколов tcp и udp? Это два основных транспортных протокола в интернете. Они имеют разные характеристики и используются для различных целей. 🚩Основные отличия 🟠Надежность TCP: Обеспечивает надежную передачу данных. Он использует механизмы установления соединения, подтверждение получения (ACK), контроль потерь пакетов, повторную передачу потерянных пакетов и контроль потока. Это гарантирует, что данные будут доставлены корректно и в правильном порядке. UDP: Не обеспечивает надежную передачу данных. Нет подтверждений получения, нет повторной передачи потерянных пакетов и нет контроля потока. Это делает передачу менее надежной, но более быстрой и с меньшими накладными расходами. 🟠Установление соединения TCP: Перед началом передачи данных устанавливается соединение с помощью процедуры "трехстороннего рукопожатия" (three-way handshake). Это означает, что обе стороны сначала обмениваются сигналами SYN и ACK для установления соединения. UDP: Не требует установления соединения. Пакеты (датаграммы) просто отправляются к получателю без предварительного установления соединения. 🟠Порядок доставки TCP: Обеспечивает доставку данных в правильном порядке. Если пакеты приходят в неправильном порядке, TCP собирает их в правильном порядке перед передачей приложению. UDP: Не гарантирует порядок доставки. Пакеты могут приходить в произвольном порядке, и приложение должно обрабатывать их соответствующим образом, если это необходимо. 🟠Пропускная способность и задержки TCP: Из-за механизмов контроля потока и подтверждений имеет большие накладные расходы и, следовательно, может быть медленнее. Это особенно заметно на сетях с высокой задержкой или потерей пакетов. UDP: Из-за отсутствия контроля потока и подтверждений имеет меньшие накладные расходы, что может привести к меньшим задержкам и большей пропускной способности. Подходит для приложений, где важна скорость, а не надежность. 🟠Применение TCP: Используется для приложений, где важна надежность и порядок передачи данных, таких как веб-браузеры (HTTP/HTTPS), электронная почта (SMTP, IMAP, POP3), файловые передачи (FTP), удаленный доступ (SSH). UDP: Используется для приложений, где важна скорость и где потеря некоторых пакетов не критична, таких как потоковое видео и аудио (VoIP, IPTV), онлайн-игры, службы доменных имен (DNS). 🚩Примеры использования TCP
HTTP/HTTPS: Веб-серфинг
SMTP: Отправка электронной почты
IMAP/POP3: Получение электронной почты
FTP: Передача файлов
SSH: Безопасный удаленный доступ
UDP
DNS: Запросы доменных имен
VoIP: Передача голоса через IP
IPTV: Потоковое видео
Онлайн-игры: Быстрая передача данных игровой логики
NTP: Синхронизация времени
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как работает динамическая типизация? Динамическая типизация позволяет переменной менять тип во время выполнения программы. Тип определяется автоматически на основе присвоенного значения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

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

🤔 Чем отличается BacktimeTable от Backtime? 1. BacktimeTable может быть структурой данных или таблицей, используемой для хранения промежуточных результатов в задаче обратного отсчёта или обработки данных. 2. Backtime часто означает сам процесс обратного отсчёта или времени ожидания. 3. Различие зависит от контекста: таблица — для хранения, backtime — для логики. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Пожизненный PRO доступ на easyoffer — по цене одного года! До 31 марта вы можете купить PRO навсегда. Запускаем акцию, чтобы
Пожизненный PRO доступ на easyoffer — по цене одного года! До 31 марта вы можете купить PRO навсегда. Запускаем акцию, чтобы ускорить развитие сервиса. Что добавим в PRO в ближайшие полгода: – Автоотклики – Агрегатор вакансий – Проход ATS без отсева – Уникальные резюме и письма под каждую вакансию Покупаешь один раз — пользуешься всю жизнь. 👉 Купить PRO со скидкой 70%: https://easyoffer.ru/pro

🤔 Что такое агрегатные функции? Агрегатные функции в контексте управления базами данных и SQL — это специальные функции, которые выполняют вычисление над набором значений и возвращают единственный результат. Они часто используются для выполнения математических, статистических и других операций с данными в запросах для анализа и обобщения информации из множества записей. 🚩Основные агрегатные функции 🟠COUNT() Подсчитывает количество элементов в наборе. Эта функция может использоваться для подсчета количества строк в таблице или количества строк, соответствующих определенным критериям. Пример: SELECT COUNT(*) FROM users; — подсчитывает количество всех строк в таблице users. 🟠SUM() Суммирует числовые значения столбца. Используется для получения общей суммы числовых данных. Пример: SELECT SUM(salary) FROM employees; — считает общую сумму зарплат всех сотрудников. 🟠AVG() Вычисляет среднее значение числовых данных. Эта функция полезна для нахождения среднего значения определенного столбца. Пример: SELECT AVG(price) FROM products; — рассчитывает среднюю цену продукта. 🟠MIN() и MAX() Возвращают минимальное и максимальное значения в столбце соответственно. Эти функции используются для нахождения наименьших и наибольших значений. Пример: SELECT MIN(age), MAX(age) FROM users; — находит минимальный и максимальный возраст среди пользователей. 🟠GROUP_CONCAT() (в MySQL) / STRING_AGG() (в PostgreSQL) Склеивают строки из столбца, объединяя их в одну строку с разделителем. Пример (MySQL): SELECT GROUP_CONCAT(username SEPARATOR ', ') FROM users WHERE city = 'New York'; — объединяет имена пользователей из Нью-Йорка через запятую. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое агрегатные функции? Агрегатные функции в SQL и других языках обработки данных (как PHP при работе с базами данных) выполняют вычисление набора значений и возвращают единственное значение. Примеры включают `SUM()`, `AVG()`, `MIN()`, `MAX()`, и `COUNT()`.? Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 По какому принципу будешь выбирать архитектуру? Это сложный и ответственный процесс, который зависит от множества факторов. Принятие правильного решения требует анализа требований, условий и ограничений проекта. Основные принципы, по которым выбирается архитектура, включают следующие: 🚩Принципы выбор 🟠Требования к проекту Функциональные требования: Какие функции должно выполнять приложение? Нефункциональные требования: Производительность, масштабируемость, надежность, безопасность и т.д. 🟠Объем и сложность проекта Размер команды: Количество разработчиков, их опыт и навыки. Сложность бизнес-логики: Насколько сложны процессы и операции, которые будет выполнять система. 🟠Масштабируемость и производительность Нагрузка: Ожидаемое количество пользователей, объем данных и частота операций. Горизонтальная и вертикальная масштабируемость: Возможность добавления новых серверов или улучшения существующих для обработки увеличивающейся нагрузки. 🟠Надежность и отказоустойчивость Требования к доступности: Время безотказной работы и допустимые уровни простоя. Механизмы резервирования и восстановления: Способы обеспечения бесперебойной работы при сбоях. 🟠Безопасность Конфиденциальность данных: Как будет обеспечиваться защита данных от несанкционированного доступа. Целостность данных: Меры для предотвращения и обнаружения изменений данных. 🟠Управляемость и поддержка Обслуживаемость: Легкость управления, мониторинга и обновления системы. Документирование: Наличие подробной документации для поддержки и развития. 🟠Интеграция с другими системами Совместимость: Как система будет взаимодействовать с другими приложениями и сервисами. Стандарты и протоколы: Используемые стандарты для обеспечения совместимости и взаимодействия. 🟠Стоимость и сроки Бюджет: Стоимость разработки, развертывания и поддержки системы. Временные ограничения: Сроки выполнения проекта и время на разработку. 🚩Примеры выбора 🟠Monolithic Architecture (Монолитная архитектура) Небольшие или средние проекты с низкой сложностью. Ограниченные требования к масштабируемости. Ограниченные ресурсы и сроки разработки. Простое веб-приложение для управления контентом (CMS), где все компоненты (база данных, интерфейс пользователя, логика приложения) развернуты на одном сервере. 🟠Microservices Architecture (Микросервисная архитектура) Большие и сложные проекты с высокой нагрузкой. Требуется высокая масштабируемость и отказоустойчивость. Разделение разработки на независимые команды. Электронная коммерция, где отдельные микросервисы управляют различными аспектами системы, такими как управление продуктами, корзина, платежи, учетные записи пользователей и т.д. 🟠Event-Driven Architecture (Событийно-ориентированная архитектура) Системы, которые должны реагировать на события в реальном времени. Высокая гибкость и адаптивность к изменяющимся условиям. Финансовая торговая платформа, где события от биржи передаются и обрабатываются различными сервисами в реальном времени для выполнения сделок и анализа данных. 🟠Serverless Architecture (Безсерверная архитектура) Приложения с переменной нагрузкой. Минимизация операционных расходов и управление серверной инфраструктурой. Ставь 👍 и забирай 📚 Базу знаний

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

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

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

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

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

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

Мы больше не можем держать это в секрете! Запись на курсы в Академии Авто.ру Бизнес уже открыта. Это отличная возможность пол
Мы больше не можем держать это в секрете! Запись на курсы в Академии Авто.ру Бизнес уже открыта. Это отличная возможность получить актуальные знания, лучше разобраться в инструментах автобизнеса и найти практические решения для работы. Если вы хотите развиваться в профессии, систематизировать опыт и применять новые подходы на практике, сейчас самое время присоединиться. Переходите по ссылке, выбирайте подходящую программу и записывайтесь Перейти на сайт #реклама 16+ business.auto.ru О рекламодателе

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

🤔 В чем ставится всегда цель теста? Цель тестирования всегда заключается в том, чтобы выявить ошибки, дефекты и недостатки в программном обеспечении до того, как оно будет выпущено или внедрено. Тестирование помогает убедиться, что программа работает правильно, соответствует требованиям и ожиданиям пользователей, а также обеспечивает высокое качество и надежность продукта. 🚩Основные цели 🟠Выявление ошибок и дефектов Найти и исправить ошибки, которые могли возникнуть в ходе разработки. Это помогает предотвратить сбои в работе программы. 🟠Подтверждение соответствия требованиям Убедиться, что программное обеспечение соответствует заданным требованиям и спецификациям. Это включает проверку функциональности, производительности, безопасности и других аспектов. 🟠Повышение качества продукта Тестирование помогает улучшить общее качество программного обеспечения, делая его более стабильным, надежным и удобным в использовании. 🟠Обеспечение пользовательского опыта Убедиться, что конечные пользователи получат продукт, который удовлетворяет их потребности и ожидания, обеспечивая тем самым положительный пользовательский опыт. 🚩Типы 🟠Функциональное тестирование Проверка того, что каждый компонент системы работает в соответствии с требованиями. 🟠Нефункциональное тестирование Проверка аспектов, не связанных напрямую с функциональностью, таких как производительность, безопасность, удобство использования и т.д. 🟠Юнит-тестирование Тестирование отдельных компонентов или модулей кода. 🟠Интеграционное тестирование Проверка взаимодействия между различными модулями или компонентами системы. 🟠Системное тестирование Полная проверка всей системы в целом. 🟠Приемочное тестирование Проверка системы на соответствие бизнес-требованиям и готовность к использованию конечными пользователями.
use PHPUnit\Framework\TestCase;

class CalculatorTest extends TestCase {
    public function testAdd() {
        $calc = new Calculator();
        $this->assertEquals(4, $calc->add(2, 2));
        $this->assertEquals(0, $calc->add(-1, 1));
    }
}

class Calculator {
    public function add($a, $b) {
        return $a + $b;
    }
}
Ставь 👍 и забирай 📚 Базу знаний