Онлайн тест: Middle Laravel Developer

Ответьте на все вопросы. После последнего появится итоговый экран с результатом и вашими ответами.

1. Очереди

Опишите, как работает система очередей в Laravel. Что делает команда php artisan queue:work --tries=3 и что произойдёт, если задача завершится с ошибкой? Укажите, какие механизмы повторных попыток и таблицы хранения неудачных заданий используются.

2. WebSockets и Broadcasting

Объясните разницу между публичными, приватными и presence каналами в Laravel Broadcasting. В каком случае нужно использовать Broadcast::channel() и как происходит авторизация на приватных каналах?

3. SQL-запрос

Предположим, у вас есть таблица orders(id, user_id, status, created_at). Напишите SQL-запрос, который возвращает количество заказов по каждому статусу за последние 7 дней.

4. Чистый код и архитектура

Проанализируйте следующий код контроллера и укажите три проблемы. Предложите, как улучшить архитектуру.

public function store(Request $request) {
    $user = User::find($request->user_id);
    $order = new Order();
    $order->user_id = $user->id;
    $order->amount = $request->amount;
    $order->status = 'new';
    $order->save();
    Mail::to($user->email)->send(new OrderCreatedMail($order));
    return response()->json($order);
}

5. Git и CI/CD

Вы случайно закоммитили файл .env в репозиторий. Как удалить его из Git-истории и предотвратить повторное добавление в будущем? Укажите команды и объясните их смысл.

6. Очередь SendDailyReportJob

Реализуйте Laravel Job SendDailyReportJob, который собирает количество новых пользователей за последние 24 часа и сохраняет результат в таблицу daily_reports(date, new_users_count). Объясните, как зарегистрировать задачу в планировщике и задать retry при ошибке.

7. Broadcasting OrderStatusUpdated

Создайте событие OrderStatusUpdated, которое передаёт order_id и status через приватный канал orders.{userId}. Опишите код события и пример подписки на фронтенде с использованием Laravel Echo.

8. SQL + NoSQL

В MySQL хранятся заказы (таблица orders), а в MongoDB — логи действий пользователей (user_logs). Как в Laravel получить всех пользователей, которые за последние 3 дня сделали заказ и имели хотя бы одно действие в логах? Опишите концепцию и возможный подход к реализации.

9. Качество кода

Какой вариант наиболее эффективен и почему?



10. Git

Вы случайно сделали коммит прямо в ветку main вместо feature/websockets. Как безопасно перенести изменения в нужную ветку, не потеряв историю?