Подготовка к собеседованию

Что такое Cloud Identity в Laravel 12?
Это новая опция аутентификации в стартовых наборах, которая предоставляет корпоративные функции, такие как социальный вход, ключи доступа и единый вход (SSO) из коробки, на базе WorkOS.
Как изменилась встроенная поддержка MongoDB в Laravel 12?
Laravel 12 теперь включает более надежную, похожую на встроенную, поддержку MongoDB, что упрощает ее использование в качестве основной базы данных с Eloquent и другими функциями фреймворка.
Какой рекомендуемый способ обработки параллелизма в современном Laravel (2026)?
Использование фасада `Concurrency` (представленного в Laravel 11 и доработанного в 12), который позволяет выполнять несколько задач параллельно и ожидать их результатов, улучшая производительность для операций, связанных с вводом-выводом.
Объясните концепцию "Модульных монолитов" в контексте Laravel 12.
Это архитектурная тенденция, при которой большое приложение Laravel организуется в отдельные, слабо связанные модули в рамках одного репозитория. Это обеспечивает преимущества микросервисов (разделение ответственности) без операционной сложности нескольких развертываний.
Что такое фасад "Context" в Laravel, и когда его следует использовать?
Фасад Context (представленный в Laravel 11) позволяет хранить и извлекать информацию, которая сохраняется на протяжении всего жизненного цикла запроса или фоновой задачи. Он особенно полезен для логирования и трассировки, поскольку автоматически прикрепляет данные контекста к записям журнала.
Объясните четыре столпа объектно-ориентированного программирования (ООП).
Четыре столпа:\n - **Инкапсуляция:** Объединение данных (атрибутов) и методов (функций), которые оперируют этими данными, в единый блок или класс, а также ограничение прямого доступа к некоторым компонентам объекта.\n - **Наследование:** Механизм, при котором новый класс (подкласс) наследует свойства и поведение от существуческого класса (суперкласса), способствуя повторному использованию кода.\n - **Полиморфизм:** Способность объекта принимать множество форм. В ООП это позволяет рассматривать объекты разных классов как объекты общего суперкласса, часто достигается путем переопределения методов или использования интерфейсов.\n - **Абстракция:** Скрытие сложных деталей реализации и показ только существенных особенностей объекта. Она фокусируется на том, "что" делает объект, а не на том, "как" он это делает, часто используя абстрактные классы и интерфейсы.
В чем разница между `interface` и `abstract class` в PHP?
\n - **Интерфейс:** Определяет контракт, которому должны соответствовать классы. Он может содержать только сигнатуры методов (без реализации) и константы. Класс может реализовывать несколько интерфейсов.\n - **Абстрактный класс:** Может иметь как абстрактные методы (без реализации), так и конкретные методы (с реализацией). Он также может иметь свойства. Класс может наследовать только от одного абстрактного класса. Абстрактные классы предназначены для расширения, а интерфейсы — для реализации.
Объясните Трейты (Traits) в PHP и когда их следует использовать?
Трейты — это механизм повторного использования кода в языках с одиночным наследованием, таких как PHP. Они позволяют классу использовать методы из нескольких трейтов, эффективно имитируя множественное наследование поведения. Трейты полезны для совместного использования общей функциональности между различными классами, которые не имеют общего родителя в иерархии наследования.
Что такое Внедрение Зависимостей (DI) и почему оно важно в PHP/Laravel?
Внедрение Зависимостей — это шаблон проектирования, при котором класс получает свои зависимости из внешнего источника, а не создает их сам. В Laravel он активно используется через Service Container. Он способствует слабой связанности, делая код более модульным, тестируемым и поддерживаемым. Он также упрощает управление зависимостями классов.
Опишите принципы SOLID в ООП.
SOLID — это аббревиатура из пяти принципов проектирования, предназначенных для того, чтобы сделать программные проекты более понятными, гибкими и поддерживаемыми:\n - **S - Принцип единственной ответственности (SRP):** Класс должен иметь только одну причину для изменения, то есть он должен иметь только одну задачу или ответственность.\n - **O - Принцип открытости/закрытости (OCP):** Программные сущности (классы, модули, функции и т. д.) должны быть открыты для расширения, но закрыты для модификации.\n - **L - Принцип подстановки Барбары Лисков (LSP):** Объекты в программе должны быть заменяемы экземплярами их подтипов без нарушения корректности этой программы.\n - **I - Принцип разделения интерфейса (ISP):** Клиенты не должны быть вынуждены зависеть от интерфейсов, которые они не используют. Множество специфичных для клиента интерфейсов лучше, чем один универсальный интерфейс.\n - **D - Принцип инверсии зависимостей (DIP):** Модули высокого уровня не должны зависеть от модулей низкого уровня. Оба должны зависеть от абстракций. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
Объясните жизненный цикл запроса в Laravel.
Жизненный цикл запроса Laravel начинается, когда запрос поступает в файл `public/index.php`. Этот файл загружает автозагрузчик Composer и получает экземпляр приложения Laravel. Затем HTTP-ядро обрабатывает запрос, пропуская его через ряд промежуточных программ (глобальных, маршрутных и групповых) для таких задач, как аутентификация, защита от CSRF и управление сессиями. После промежуточных программ маршрутизация сопоставляет входящий URL-адрес с определенным маршрутом, который отправляет запрос в действие контроллера или замыкание. Контроллер обрабатывает запрос, взаимодействует с моделями/сервисами и возвращает ответ. Наконец, ответ отправляется обратно через HTTP-ядро и промежуточные программы, прежде чем быть отправленным пользователю.
Что такое Eloquent ORM в Laravel и каковы его преимущества?
Eloquent — это встроенный в Laravel Object-Relational Mapper (ORM). Он предоставляет элегантную и активную реализацию записи для работы с базами данных. Каждая таблица базы данных имеет соответствующую "Модель", которая используется для взаимодействия с этой таблицей. Преимущества включают:\n - **Выразительный синтаксис:** Позволяет взаимодействовать с базой данных, используя чистый, текучий синтаксис PHP вместо чистого SQL.\n - **Отношения:** Легко определять и управлять отношениями между моделями (один-к-одному, один-ко-многим, многие-ко-многим).\n - **Экономия времени:** Уменьшает объем шаблонного кода, необходимого для операций CRUD.\n - **Поддерживаемость:** Делает код более читаемым, понятным и поддерживаемым.
Как Laravel обрабатывает миграции базы данных?
Миграции Laravel подобны контролю версий для вашей базы данных, позволяя командам легко изменять и совместно использовать схему базы данных приложения. Они предоставляют программный способ определения структур таблиц базы данных, добавления/удаления столбцов и создания/удаления таблиц. Каждая миграция представляет собой класс PHP с методами `up()` и `down()` для применения и отмены изменений соответственно. Команды Artisan (`php artisan migrate`, `php artisan migrate:rollback`) используются для управления миграциями.
Какова цель Service Providers в Laravel?
Service Providers являются центральным местом для всей начальной загрузки приложения Laravel. Они отвечают за привязку сервисов к контейнеру сервисов Laravel, регистрацию слушателей событий, промежуточных программ и даже маршрутов. По сути, они сообщают Laravel, как загружать и настраивать различные компоненты вашего приложения. `AppServiceProvider` — это обычное место для регистрации сервисов, специфичных для приложения.
Объясните концепцию Middleware в Laravel?
Middleware предоставляет удобный механизм для фильтрации HTTP-запросов, поступающих в ваше приложение. Например, Laravel включает промежуточную программу, которая проверяет, аутентифицирован ли пользователь вашего приложения. Если пользователь не аутентифицирован, промежуточная программа перенаправит его на экран входа. Если пользователь аутентифицирован, промежуточная программа позволит запросу продолжить обработку в приложении. Middleware может выполнять задачи до или после обработки запроса приложением.
Что такое шаблонизатор Blade?
Blade — это простой, но мощный шаблонизатор, входящий в состав Laravel. В отличие от других популярных шаблонизаторов PHP, Blade не ограничивает вас в использовании чистого PHP-кода в ваших представлениях. В действительности все представления Blade компилируются в чистый PHP-код и кэшируются до тех пор, пока они не будут изменены, что означает, что Blade практически не добавляет накладных расходов вашему приложению. Blade предоставляет удобные сокращения для общих управляющих структур PHP, таких как условные операторы и циклы, а также наследование шаблонов.