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

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

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

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

نمایش بیشتر
2 342
مشترکین
-224 ساعت
-67 روز
-2530 روز
آرشیو پست ها
🤔 Что такое составной индекс? Составной индекс (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 пропущен)
Ставь 👍 и забирай 📚 Базу знаний

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

🤔Что такое Service Locator? Это паттерн проектирования, предоставляющий объект (локатор), который отвечает за предоставление зависимостей (сервисов) в приложении. • Он хранит ссылки на зависимости и позволяет получить их по запросу. • Недостаток: сложнее отслеживать зависимости и тестировать код, так как локатор создаёт скрытые связи. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

SOC Forum 2025 онлайн: все профи кибербеза в одном месте 📅 18–20 ноября пройдет ключевое событие Недели кибербезопасности —
SOC Forum 2025 онлайн: все профи кибербеза в одном месте 📅 18–20 ноября пройдет ключевое событие Недели кибербезопасности — SOC Forum. 👍 Ведущие эксперты соберутся, чтобы обсудить самые острые темы и представить лучшие практические кейсы: каждый доклад прошел строгий отбор, так что вас ждет концентрат пользы. ⚡ Станьте частью форума даже онлайн! Помимо прямой трансляции лекций, для удаленных участников будут работать «Кибербез ТВ» и радиостанция «ЭХО лОСЕЙ» — с новостными дайджестами, эксклюзивными интервью, мастер-классами и специальными сюжетами, доступными только в онлайн-формате. ✅ Зарегистрируйтесь, и мы пришлем напоминание перед стартом. Узнать больше #реклама 16+ registration.forumsoc.ru О рекламодателе

🤔 Что такое репликация? Это процесс создания и поддержания копий данных в разных местах для обеспечения доступности, надежности и производительности системы. Она используется в базах данных, файловых системах и других системах хранения данных. 🚩Зачем нужна репликация 🟠Повышение доступности Если одна копия данных становится недоступной из-за сбоя или отключения сервера, другая копия может продолжить обслуживание запросов, минимизируя время простоя. 🟠Улучшение производительности Репликация позволяет распределить нагрузку на несколько серверов, что улучшает время отклика системы при больших объемах запросов. 🟠Резервное копирование и восстановление данных Репликация обеспечивает наличие резервных копий данных, которые можно использовать для восстановления системы после сбоя. 🟠Географическое распределение данных Репликация позволяет хранить данные ближе к пользователям, что снижает задержку при доступе к данным. 🚩Виды репликации 🟠Синхронная репликация Данные одновременно записываются на основной и реплицированный серверы. Высокая консистентность данных. Замедление операций записи, так как они должны быть подтверждены на всех репликах. 🟠Асинхронная репликация Данные сначала записываются на основной сервер, а затем копируются на реплицированный сервер с задержкой. Быстрые операции записи на основной сервер. Возможность временной неконсистентности данных между серверами. 🟠Полная репликация Все данные копируются на все реплицированные серверы. Простота реализации и высокая доступность данных. Высокие затраты на хранение и передачу данных. 🟠Частичная репликация Только часть данных копируется на реплицированные серверы. Экономия ресурсов хранения и передачи данных. Более сложное управление данными. 🚩Пример использования 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;
Ставь 👍 и забирай 📚 Базу знаний

Ищете стабильную видеосвязь и мессенджер? ⚡WhatsApp и Telegram работают с перебоями, Skype с октября без техподдержки — публи
Ищете стабильную видеосвязь и мессенджер? ⚡WhatsApp и Telegram работают с перебоями, Skype с октября без техподдержки — публичные мессенджеры не подходят для бизнеса. ✅Российская платформа МТС Линк доступна 99,9% времени. Попробуйте и убедитесь сами. Попробовать #реклама 16+ mts-link.ru О рекламодателе

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

🤔 Как сделать так, чтобы приложение разворачивалось быстрее в Dockerе? Для ускорения развертывания приложений в Docker существует несколько методов и практик, которые помогают оптимизировать сборку и запуск контейнеров. Вот некоторые из них: 🚩Оптимизация Dockerfile 🟠Меньше слоев Каждая инструкция в Dockerfile создает новый слой в образе. Старайтесь минимизировать количество слоев, объединяя инструкции, где это возможно.
# Плохо
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y vim

# Хорошо
RUN apt-get update && \
    apt-get install -y curl vim
🟠Использование правильного базового образа Выберите наиболее подходящий базовый образ, который минимально необходим для вашего приложения. Использование минималистичных образов, таких как alpine, может существенно уменьшить размер образа.
FROM php:7.4-fpm-alpine
🟠Кэширование зависимостей Сначала копируйте файлы с зависимостями (например, composer.json, package.json) и устанавливайте их, а затем копируйте остальной код. Это позволит Docker использовать кэш на этапе установки зависимостей, если они не изменились.
FROM php:7.4-fpm-alpine

# Установка зависимостей
COPY composer.json composer.lock /app/
WORKDIR /app
RUN composer install --no-dev --optimize-autoloader

# Копирование кода
COPY . /app
🟠Использование многоступенчатой сборки Многоступенчатая сборка позволяет собирать и тестировать ваше приложение в одном этапе и копировать только необходимые файлы в финальный образ, что уменьшает размер финального образа.
# Сборочный этап
FROM composer:latest AS builder
WORKDIR /app
COPY composer.json composer.lock /app/
RUN composer install --no-dev --optimize-autoloader

# Финальный этап
FROM php:7.4-fpm-alpine
WORKDIR /app
COPY --from=builder /app /app
COPY . /app
🟠Использование кэша сборки При разработке используйте кэш Docker для ускорения сборки. Для этого нужно правильно организовать порядок инструкций в Dockerfile, чтобы неизменные части использовали кэш. 🟠Оптимизация Docker Compose Если вы используете Docker Compose, убедитесь, что сервисы поднимаются параллельно и что вы используете возможность кэширования сборок.
version: '3.8'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/app
    ports:
      - "8080:80"
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: app_db
    ports:
      - "3306:3306"
🟠Использование кэшированных слоев и промежуточных образов При частых изменениях кода старайтесь кэшировать слои, которые не меняются, и использовать промежуточные образы для ускорения сборки.
# Использование промежуточного образа
FROM php:7.4-fpm-alpine AS base
COPY . /app
WORKDIR /app
RUN composer install --no-dev --optimize-autoloader

FROM base AS dev
RUN apk add --no-cache bash
CMD ["php-fpm"]

FROM base AS prod
CMD ["php-fpm"]
🟠Использование готовых образов для разработки Используйте готовые образы, где уже установлены все необходимые зависимости для разработки, что сократит время сборки образов. 🟠Параллельная сборка и запуск Используйте параллельную сборку и запуск контейнеров, если это возможно. Docker Compose поддерживает параллельный запуск, что может значительно ускорить процесс развертывания. Ставь 👍 и забирай 📚 Базу знаний

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

Repost from easyoffer
⏳ Осталось 20 мест Акция со скидкой 50% для первых 500 пользователей easyoffer подходит к концу 🔥 Узнай вопросы и задачи с с
⏳ Осталось 20 мест Акция со скидкой 50% для первых 500 пользователей easyoffer подходит к концу 🔥 Узнай вопросы и задачи с собеседований в конкретных компаниях 🔥 Получи лучшие ответы и видео-примеры от middle/senior специалистов 🔥 Обходи фильтры ATS, добавив топ30 ключевых слов в свое резюме 🔥 Экономь время с помощью автоматических откликов 🔥 Подготовься идеально к интервью с тренажёрами и симуляторами Успей забрать место по акции: 👉 https://easyoffer.ru/pro

🤔 Что такое acid? Это акроним, описывающий четыре ключевых свойства транзакций в системах управления базами данных (СУБД), обеспечивающие надежное выполнение транзакций даже в условиях ошибок, сбоев и множественного доступа. Эти свойства важны для обеспечения правильности и устойчивости данных. Он состоит из следующих компонентов: 🟠Атомарность (Atomicity) Гарантирует, что все операции в рамках одной транзакции либо выполняются полностью, либо не выполняются вообще. Если какая-либо часть транзакции не может быть завершена, система откатит все уже выполненные операции, возвращая базу данных в состояние, которое существовало до начала транзакции. Это "всё или ничего". 🟠Согласованность (Consistency) Означает, что каждая транзакция переводит базу данных из одного согласованного состояния в другое. Согласованность обеспечивает соблюдение всех правил и ограничений базы данных, таких как ключи, ограничения целостности и триггеры, после завершения транзакции. 🟠Изолированность (Isolation) Определяет способ одновременного выполнения множества транзакций без оказания влияния друг на друга. Это свойство предотвращает проблемы, связанные с одновременным доступом, такие как "грязное чтение", "неповторяющееся чтение" и "фантомное чтение". СУБД обычно предлагают различные уровни изоляции, которые могут быть настроены в зависимости от нужд приложения. 🟠Долговечность (Durability) Гарантирует, что как только транзакция была подтверждена, все изменения, сделанные транзакцией, сохраняются и остаются в базе данных даже в случае сбоя, например, при потере питания. Это означает, что система должна сохранять все записи в надежное, неизменяемое хранилище. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое абстрактный класс? Абстрактный класс — это класс, который не может быть создан как объект и служит для того, чтобы задавать общие свойства и методы для классов-наследников. Он может содержать как абстрактные, так и конкретные методы с реализацией. Наследники обязаны реализовать все абстрактные методы родительского класса. Абстрактные классы полезны, когда требуется частичная реализация с обязательной реализацией некоторых методов в дочерних классах. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое типизация? Типизация в программировании — это механизм, который определяет, как значения различных типов (например, целые числа, строки, объекты и т.д.) обрабатываются и взаимодействуют в языке программирования. Типизация помогает предотвратить ошибки, связанные с некорректным использованием данных, и улучшает читаемость и поддержку кода. 🚩Виды типизации 🟠Статическая типизация: Типы переменных известны и проверяются на этапе компиляции. Примеры языков: Java, C++, TypeScript. 🟠Динамическая типизация: Типы переменных определяются и проверяются во время выполнения программы. Примеры языков: Python, JavaScript, PHP. 🟠Сильная типизация: Язык строго следит за типами, не позволяя неявные преобразования между ними. Примеры языков: Haskell, Java. 🟠Слабая типизация: Язык допускает неявные преобразования между типами. Примеры языков: PHP, JavaScript. PHP — язык с динамической и слабой типизацией, но с версией 7.0 и выше появилась возможность использовать строгую типизацию.
$number = 10;
$number = "ten"; // PHP позволяет это, так как тип переменной может изменяться
С PHP 7.0 можно использовать строгую типизацию для функций и методов. Это позволяет явно указывать, какого типа аргументы и возвращаемое значение должны быть.
declare(strict_types=1); // Включает строгую типизацию

function add(int $a, int $b): int {
    return $a + $b;
}

echo add(2, 3); // Работает
// echo add(2, "3"); // Ошибка, так как второй аргумент не является целым числом
🚩ПлюсыПредотвращение ошибок: Типизация помогает обнаруживать ошибки на ранних этапах разработки, таких как попытка выполнения некорректных операций с данными. ➕Улучшение читаемости и поддержки кода: Явное указание типов делает код более понятным и предсказуемым, что облегчает его поддержку и развитие. ➕Оптимизация выполнения: Статически типизированные языки позволяют компиляторам оптимизировать выполнение кода, так как типы известны на этапе компиляции. ➕Документирование кода: Типизация служит дополнительной документацией, помогая разработчикам понять, какие данные ожидаются и возвращаются функциями и методами. Ставь 👍 и забирай 📚 Базу знаний

🤔 Чем HTTP первой версии отличается от второй? HTTP/1.1 требует для каждого запроса нового соединения, что создает дополнительную нагрузку. HTTP/2 поддерживает мультиплексирование, позволяя передавать несколько запросов и ответов одновременно по одному соединению, что улучшает производительность.? Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🖼️ PHP вакансии всех грейдов: удалёнка, реклок, щедрый оффер! Вакансии, только с прямыми контактами в Telegram! Ноль автоотказов — живой диалог и быстрые объективные решения. 🖼️ PHP 👩‍💻 Python 👩‍💻 Java 👣 Go 🤖 ML & DS 👩‍💻 C# 🔎 QA 👩‍💻 Frontend 👩‍💻 Node.js 🖥 SQL 👩‍💻 UX/UI 👩‍💻 DevOps 👩‍💻 Mobile 📋 Analyst 💼 1C 👨‍✈️ CyberSec 👩‍💻 IT HR Подпишись чтобы не упустить свой шанс получить лучший оффер!

Repost from easyoffer
⏳ 90 акционных мест Акция со скидкой 50% для первых 500 пользователей easyoffer подходит к концу 🔥 Узнай вопросы и задачи с
⏳ 90 акционных мест Акция со скидкой 50% для первых 500 пользователей easyoffer подходит к концу 🔥 Узнай вопросы и задачи с собеседований в конкретных компаниях 🔥 Получи лучшие ответы и видео-примеры от middle/senior специалистов 🔥 Обходи фильтры ATS, добавив топ30 ключевых слов в свое резюме 🔥 Экономь время с помощью автоматических откликов 🔥 Подготовься идеально к интервью с тренажёрами и симуляторами Успей забрать место по акции: 👉 https://easyoffer.ru/pro

🤔 Какие уровни ошибок есть в PHP? В PHP существуют различные уровни ошибок, которые помогают разработчикам выявлять и исправлять проблемы в коде. Эти уровни ошибок задаются с помощью констант и управляются функцией error_reporting(). Рассмотрим основные уровни ошибок: 🚩Основные уровни ошибок в PHP 🟠E_ERROR (фатальная ошибка, код: 1) Критическая ошибка, которая приводит к завершению работы скрипта. Например, вызов несуществующей функции
someUndefinedFunction(); // Вызовет E_ERROR
🟠E_WARNING (предупреждение, код: 2) Не фатальная ошибка, скрипт продолжит выполнение. Например, деление на ноль или использование include() для несуществующего файла:
echo 10 / 0; // Вызовет E_WARNING
🟠E_PARSE (ошибка парсинга, код: 4) Ошибка синтаксиса в коде, обнаруживаемая на этапе компиляции. Например, забытая точка с запятой:
echo "Hello" // Отсутствует ;
🟠E_NOTICE (замечание, код: 8) Сообщает о некритичных ошибках, например, об использовании неинициализированной переменной:
echo $undefinedVariable; // Вызовет E_NOTICE
🟠E_CORE_ERROR (фатальная ошибка ядра, код: 16) Аналогична E_ERROR, но возникает на этапе загрузки PHP. 🟠E_CORE_WARNING (предупреждение ядра, код: 32) Аналогична E_WARNING, но на этапе загрузки PHP. 🟠E_COMPILE_ERROR (ошибка компиляции, код: 64) Ошибки, связанные с компиляцией скрипта, например, при ошибке в require. 🟠E_COMPILE_WARNING (предупреждение компиляции, код: 128) Предупреждения компилятора. 🟠E_USER_ERROR (пользовательская фатальная ошибка, код: 256) Вызывается вручную с помощью trigger_error():
trigger_error("Критическая ошибка!", E_USER_ERROR);
🟠E_USER_WARNING (пользовательское предупреждение, код: 512) Аналогично E_WARNING, но создаётся пользователем. 🟠E_USER_NOTICE (пользовательское замечание, код: 1024) Аналогично E_NOTICE, но вызывается вручную. 🟠E_STRICT (строгие предупреждения, код: 2048) Сообщает о потенциальных проблемах совместимости. 🟠E_RECOVERABLE_ERROR (обрабатываемая фатальная ошибка, код: 4096) Фатальная ошибка, которую можно обработать через set_error_handler(). 🟠E_DEPRECATED (предупреждение об устаревших функциях, код: 8192) Указывает, что используется устаревшая функция. 🟠E_USER_DEPRECATED (пользовательское предупреждение об устаревании, код: 16384) Вызывается пользователем через trigger_error(). 🚩Как управлять уровнями ошибок? PHP позволяет включать или выключать определённые ошибки с помощью error_reporting()
error_reporting(E_ALL); // Включить все ошибки
error_reporting(0); // Отключить вывод ошибок
error_reporting(E_ERROR | E_WARNING); // Только критические ошибки и предупреждения
Также можно использовать display_errors для отображения ошибок в браузере
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
Ставь 👍 и забирай 📚 Базу знаний

CRM, которая помогает управлять отделом продаж Что делает Битрикс24 CRM: – ставит задачи менеджерам автоматически – интегриру
CRM, которая помогает управлять отделом продаж Что делает Битрикс24 CRM: – ставит задачи менеджерам автоматически – интегрируется с 1С и онлайн-кассами – показывает, где теряются деньги – возвращает клиентов и ищет повторные продажи – помогает руководителю контролировать процессы. Битрикс24 CRM работает на результат. Регистрируйтесь бесплатно Зарегистрироваться #реклама 16+ bitrix24.ru О рекламодателе

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

🤔 Что такое middleware? Это ПО, которое располагается между веб-сервером и приложением. Оно обрабатывает входящие запросы до того, как они достигнут вашего приложения, или обрабатывает исходящие ответы после того, как приложение их сгенерировало. 🚩Зачем нужен Middleware 🟠Управление запросами Может изменять или проверять запросы перед передачей их в приложение. Например, оно может проверять наличие валидных токенов доступа для аутентификации или осуществлять проверку прав доступа. 🟠Перехват ответов Также может изменять ответы перед тем, как они будут отправлены пользователю, например, добавлять нужные заголовки HTTP или сжимать данные. 🟠Логирование и мониторинг Оно может записывать информацию о запросах и ответах для анализа трафика или обнаружения ошибок. 🟠Обработка ошибок Часто используется для централизованной обработки ошибок, позволяя управлять ошибками элегантно и единообразно.
namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class CheckAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (!Auth::check()) {
            return redirect('/login');
        }

        return $next($request);
    }
}
Ставь 👍 и забирай 📚 Базу знаний