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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python9 224
  • Облачные технологии4 076
  • QA вакансии1 588
  • Android1 322
  • Инженер данных805
  • Продакт-менеджер368

Разработка

  • Backend вакансии1 317
  • iOS1 239
  • AI вакансии608
  • Fullstack вакансии523
  • Frontend вакансии456
  • Mobile вакансии28

По стеку

  • Go5 445
  • Java3 175
  • Kotlin1 119
  • Node.js1 026
  • Rust949
  • .NET666
  • PHP311
  • C#210
  • C++204

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

  • DevOps вакансии2 713
  • Kubernetes2 308
  • Linux-инфраструктура1 890
  • Terraform / IaC1 406
  • CI/CD842
  • Мониторинг и Observability645
  • SRE226
  • Кибербезопасность84

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

  • Аналитик данных483
  • Data Scientist469
  • Бизнес-аналитик349
  • Системный аналитик48

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

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

По регионам

  • Вакансии в США24 791
  • Вакансии в Европе9 439
  • Работа в России2 924
  • Вакансии в Канаде2 178

По формату

  • Удалённые вакансии43 505
  • Релокация в США24 791
  • Гибридная работа3 370
  • Офисная работа2 525

По уровню

  • Senior вакансии20 898
  • Middle вакансии12 438
  • Junior вакансии3 864

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

Все компании
  • Wise191 вакансия
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis48 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

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

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

Какой встроенный middleware включает Echo (Logger, Recover, CORS, JWT и др.)?

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

Echo включает Logger, Recover, CORS, BasicAuth, KeyAuth, JWT (отдельный модуль с v4.10), RateLimiter, Gzip, RequestID, Timeout, Static — подключаются через e.Use() из пакета middleware.

Logger

Логирует каждый HTTP-запрос: метод, путь, статус, латентность, IP, user-agent.

e.Use(middleware.Logger())
// Кастомный формат
e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{
	Format: "${method} ${uri} -> ${status} (${latency_human})\n",
}))

Встроенный middleware в Echo

Echo поставляется с богатым набором готового middleware в пакете github.com/labstack/echo/v4/middleware. Все они подключаются через e.Use() глобально или через group.Use() для группы маршрутов.

Recover

Ловит panic в обработчиках и возвращает 500 вместо краша всего процесса.

e.Use(middleware.Recover())

CORS

Управляет заголовками Access-Control-Allow-*. Принимает список допустимых origins, методов и заголовков.

e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
	AllowOrigins: []string{"https://example.com", "https://app.example.com"},
	AllowMethods: []string{http.MethodGet, http.MethodPost, http.MethodPut, http.MethodDelete},
	AllowHeaders: []string{echo.HeaderContentType, echo.HeaderAuthorization},
}))

JWT

Проверяет Bearer-токен из заголовка Authorization и кладёт распарсенный *jwt.Token в контекст.

import "github.com/labstack/echo-jwt/v4"

e.Use(echojwt.WithConfig(echojwt.Config{
	SigningKey: []byte("secret"),
}))
// Доступ к claims:
token := c.Get("user").(*jwt.Token)
claims := token.Claims.(jwt.MapClaims)

Внимание: начиная с Echo v4.10+ JWT middleware вынесен в отдельный репозиторий github.com/labstack/echo-jwt/v4.

BasicAuth

e.Use(middleware.BasicAuth(func(username, password string, c echo.Context) (bool, error) {
	return username == "admin" && password == "secret", nil
}))

KeyAuth

Проверяет API-ключ из заголовка, query-параметра или cookie.

e.Use(middleware.KeyAuth(func(key string, c echo.Context) (bool, error) {
	return key == os.Getenv("API_KEY"), nil
}))

RateLimiter

e.Use(middleware.RateLimiter(middleware.NewRateLimiterMemoryStore(20)))
// 20 запросов/секунду на IP

Gzip

e.Use(middleware.GzipWithConfig(middleware.GzipConfig{Level: 5}))

RequestID

Генерирует уникальный UUID для каждого запроса и добавляет в заголовок X-Request-ID.

e.Use(middleware.RequestID())
// Получить в обработчике:
id := c.Response().Header().Get(echo.HeaderXRequestID)

Timeout

e.Use(middleware.TimeoutWithConfig(middleware.TimeoutConfig{
	Timeout: 30 * time.Second,
}))

StaticFile / Static

e.Static("/static", "public") // папка public -> /static/*
e.File("/favicon.ico", "public/favicon.ico")

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

  • JWT middleware был частью основного пакета до v4.10, потом вынесен в отдельный модуль — обновляйте импорт при обновлении Echo.
  • Порядок вызовов e.Use() определяет порядок выполнения middleware: Logger нужно ставить первым, Recover — сразу после него, иначе паники не будут залогированы.
  • CORS с AllowOrigins: []string{"*"} и AllowCredentials: true невалидна по спецификации браузеров — выбирайте что-то одно.
  • RateLimiter с in-memory store не работает в multi-instance окружении — за горизонтальным масштабированием нужен Redis-бекенд.
  • Recover перехватывает panic только в той же горутине — паники в фоновых горутинах обработчика всё равно падают процесс.
  • Gzip middleware не сжимает ответы меньше порогового размера (~1 KB по умолчанию), поэтому тесты с короткими телами могут ввести в заблуждение.
  • Middleware добавленный через e.Use() применяется ко всем маршрутам, включая ещё незарегистрированные — убедитесь, что он не ломает health-check эндпоинты без аутентификации.

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

  • В каких backend-проектах Echo (Go framework) является сильным выбором, а где лучше выбрать более простой или другой стек?
  • Как реализовать middleware JWT-аутентификации в Echo?
  • Как Echo обрабатывает CORS и как его настроить?
  • Как настроить TLS/HTTPS в Echo?

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

  • Давать ответ про встроенные middleware Echo только на уровне определения, не показывая поведение в реальном приложении.
  • Игнорировать границы ответственности вокруг темы «встроенные middleware Echo»: кто отменяет работу, кто владеет ресурсом и где формируется ответ клиенту.
  • Не связывать встроенные middleware Echo с observability, тестированием или безопасностью, когда это влияет на продакшен-поведение.

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

  • Точно объясняет, что именно делает встроенные middleware Echo и где это используется в Go-коде.
  • Связывает встроенные middleware Echo с корректным lifecycle запроса, отменой, конкурентностью или конфигурацией сервера там, где это уместно.
  • Не изобретает API и опирается на реальные контракты официальной документации.

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

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

Источники

  • https://echo.labstack.com/docs/category/middleware
  • https://echo.labstack.com/docs/middleware/jwt

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

Echoechoframework-basicsoperationstechnical-reasoning