Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 235новых вакансий за сутки·93 897вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 277
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 401 кандидат открыт к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 131
  • Облачные технологии14 071
  • QA вакансии3 448
  • Backend вакансии2 116
  • Инженер данных1 783
  • Продакт-менеджер1 222

Разработка

  • Android1 862
  • iOS1 700
  • Fullstack вакансии990
  • AI вакансии951
  • Frontend вакансии749
  • Mobile вакансии44

По стеку

  • Go8 685
  • Java6 537
  • Node.js2 024
  • .NET1 723
  • Kotlin1 612
  • Rust1 462
  • C#710
  • PHP682
  • C++574

DevOps и инфраструктура

  • Kubernetes7 766
  • DevOps вакансии6 046
  • Linux-инфраструктура5 493
  • Terraform / IaC4 271
  • CI/CD3 241
  • Мониторинг и Observability1 790
  • SRE564
  • Кибербезопасность445

Аналитика и данные

  • Data Scientist1 120
  • Бизнес-аналитик913
  • Аналитик данных834
  • Системный аналитик150

Другие направления

  • Проджект-менеджер600
  • UI/UX дизайн143
  • Ручное тестирование14

По регионам

  • Вакансии в США44 437
  • Вакансии в Европе23 855
  • Вакансии в Канаде4 483
  • Работа в России3 904

По формату

  • Удалённые вакансии75 212
  • Релокация в США44 436
  • Гибридная работа12 388
  • Офисная работа7 092

По уровню

  • Senior вакансии41 717
  • Middle вакансии20 190
  • Junior вакансии6 562

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме LaravelВсе вопросы
LaravelMiddleПроектирование систем

Что такое jobs, events и listeners в Laravel?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Jobs — единицы фоновой работы, отправляемые в очередь. Events — широковещательные уведомления о произошедшем. Listeners — обработчики конкретного события, могут реализовывать ShouldQueue для асинхронного выполнения.

Jobs (Задания)

Job — класс, инкапсулирующий одну единицу работы, которая выполняется синхронно или асинхронно через очередь. Создаётся командой php artisan make:job ProcessPayment.

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class ProcessPayment implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public int $tries = 3;
    public int $timeout = 60;

    public function __construct(
        private readonly Order $order,
        private readonly string $paymentToken,
    ) {}

    public function handle(PaymentGateway $gateway): void
    {
        $gateway->charge($this->order, $this->paymentToken);
    }

    public function failed(\Throwable $e): void
    {
        // уведомить владельца заказа
        $this->order->user->notify(new PaymentFailed($e->getMessage()));
    }
}

// Отправка в очередь
ProcessPayment::dispatch($order, $token);

// С задержкой 5 минут
ProcessPayment::dispatch($order, $token)->delay(now()->addMinutes(5));

// Синхронно (без очереди)
ProcessPayment::dispatchSync($order, $token);

Events (События)

Event — простой класс-DTO, сигнализирующий о том, что что-то произошло в системе. Создаётся через php artisan make:event OrderPlaced. Событие само по себе ничего не делает — оно только несёт данные.

<?php

namespace App\Events;

use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class OrderPlaced
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public function __construct(
        public readonly Order $order,
    ) {}
}

// Диспетчеризация события
OrderPlaced::dispatch($order);
// или через хелпер
event(new OrderPlaced($order));

Listeners (Слушатели)

Listener — класс, реагирующий на конкретное событие. Создаётся через php artisan make:listener SendOrderConfirmation --event=OrderPlaced. Регистрируется в EventServiceProvider (Laravel 10) или через атрибут #[ListenTo] (Laravel 11+).

<?php

// Регистрация в App\Providers\EventServiceProvider
protected $listen = [
    OrderPlaced::class => [
        SendOrderConfirmation::class,
        UpdateInventory::class,
        NotifyWarehouse::class,
    ],
];

// Сам listener
class SendOrderConfirmation implements ShouldQueue
{
    public string $queue = 'notifications';

    public function handle(OrderPlaced $event): void
    {
        Mail::to($event->order->user)
            ->send(new OrderConfirmationMail($event->order));
    }
}

Когда что использовать

  • Job — изолированная фоновая задача с чёткой ответственностью: отправить email, обработать файл, вызвать внешний API. Один job = одна задача.
  • Event + Listeners — когда одно действие должно вызвать несколько независимых реакций (отправить письмо, обновить аналитику, уведомить Slack). Decoupling через события упрощает добавление новых реакций.
  • Listeners тоже реализуют ShouldQueue и выполняются асинхронно — это делает их функционально схожими с jobs, но с семантикой «реакция на событие».

Подводные камни

  • Сериализация Eloquent-моделей — трейт SerializesModels сохраняет только primary key и перезагружает модель при выполнении. Если модель удалена к тому моменту — job упадёт с ModelNotFoundException. Проверяйте существование в handle().
  • Listeners без ShouldQueue блокируют запрос — если слушатель выполняет медленную операцию синхронно, время ответа HTTP-запроса увеличивается на всё это время.
  • Порядок listeners не гарантирован при параллельных воркерах — если несколько listeners одного события попадают в очередь, они могут выполниться в любом порядке.
  • Дублирование при failed job retry — job, упавший после частичного выполнения (например, деньги списаны, но письмо не отправлено), при повторном запуске может задублировать операцию. Используйте идемпотентность через уникальный ключ или проверку статуса.
  • Job chaining прерывается при ошибке — Bus::chain([...])->dispatch() останавливается на первом упавшем job, последующие не выполняются.

Частые вопросы на собеседовании

  • Как работает система маршрутизации (routing) в Laravel и в чём разница между web и API маршрутами?
  • Что такое migrations в Laravel и как их создавать и запускать?
  • Что такое паттерн MVC и как Laravel его реализует?
  • Что такое Laravel и каковы его ключевые возможности?

Типичные ошибки

  • Сводить jobs events listeners к названию метода без lifecycle и failure path.
  • Игнорировать модель runtime: Laravel 13 поверх PHP: request проходит через HTTP kernel, middleware, routing, controller/action и response pipeline.
  • Не отделять validation, authorization, transaction boundary и business logic.
  • Не обсуждать idempotency, retries, shutdown и observability.

Что проверяет интервьюер

  • Объясняет jobs events listeners через конкретную точку lifecycle в Laravel.
  • Приводит корректный минимальный пример без вымышленных методов или callbacks.
  • Называет edge cases: пустые значения, ошибки, транзакции, безопасность или concurrency.
  • Связывает решение с метриками, backpressure, retry policy и graceful shutdown.

Как вы знаете этот вопрос?

Проверить себя по теме Laravel →

Источники

  • https://laravel.com/docs/13.x/events
  • https://laravel.com/docs/13.x
←Предыдущий вопросКакие production-риски есть у Laravel: blocking code, connection pooling, config, auth, observability, deploy или graceful shutdown?Следующий вопрос→Проект на Laravel вырос из MVP в большой production-сервис. Какие проблемы архитектуры и сопровождения вы ожидаете увидеть?

Связанные темы

LaravelBackend-Engineeringconcurrencylaravel-ecosystemproduction-readinessreliabilitysystem-design

Вакансии с этим навыком

  • Automation QA Engineer (Payments)