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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 126
  • Облачные технологии14 083
  • QA вакансии3 456
  • Backend вакансии2 115
  • Инженер данных1 809
  • Продакт-менеджер1 261

Разработка

  • Android1 862
  • iOS1 700
  • Fullstack вакансии986
  • AI вакансии950
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 688
  • Java6 537
  • Node.js2 026
  • .NET1 722
  • Kotlin1 611
  • Rust1 458
  • C#710
  • PHP682
  • C++571

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

  • Kubernetes7 772
  • DevOps вакансии6 054
  • Linux-инфраструктура5 493
  • Terraform / IaC4 275
  • CI/CD3 239
  • Мониторинг и Observability1 790
  • SRE568
  • Кибербезопасность458

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

  • Data Scientist1 143
  • Бизнес-аналитик923
  • Аналитик данных857
  • Системный аналитик152

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

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

По регионам

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

По формату

  • Удалённые вакансии74 928
  • Релокация в США44 273
  • Гибридная работа12 388
  • Офисная работа7 083

По уровню

  • Senior вакансии42 625
  • Middle вакансии20 854
  • Junior вакансии6 721

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

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

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

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

Как понять, что проблема в сервисе связана с Express.js, а не с базой, сетью, инфраструктурой или бизнес-логикой?

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

Локализация начинается с timing middleware и измерения event loop lag. Синтетический эндпоинт без I/O изолирует Express от внешних зависимостей; дальше — EXPLAIN ANALYZE в БД, CPU profiler и curl с фазовыми таймингами.

Шаг 1: Измерить time-to-first-byte на каждом слое

Добавить timing middleware, который записывает длительность каждой фазы:

import { performance } from "perf_hooks";

app.use((req, res, next) => {
  const start = performance.now();
  res.on("finish", () => {
    const duration = performance.now() - start;
    // Лог с методом, путём, статусом и временем
    console.log(
      JSON.stringify({ method: req.method, path: req.path, status: res.statusCode, ms: duration.toFixed(2) })
    );
  });
  next();
});

Если логи показывают, что 95-й перцентиль latency — сотни миллисекунд, а P50 — нормальный, это указывает на периодическую проблему (GC-пауза, lock contention, медленный запрос к внешнему API).

Методология локализации проблемы

Диагностика начинается с разделения временных затрат на составляющие. Проблема может находиться в одном из четырёх слоёв: Express/Node.js (CPU, event loop), база данных (медленный запрос, locks), сеть/инфраструктура (latency, DNS, TLS) или бизнес-логика (алгоритм, внешний API).

Шаг 2: Проверить event loop lag

Event loop lag >10ms — признак CPU-heavy кода или синхронных операций в обработчике:

import { monitorEventLoopDelay } from "perf_hooks";

const h = monitorEventLoopDelay({ resolution: 20 });
h.enable();

setInterval(() => {
  console.log("EL lag p99 ms:", (h.percentile(99) / 1e6).toFixed(2));
  h.reset();
}, 5000);

Если lag стабильно низкий — проблема не в Node.js процессе.

Шаг 3: Изолировать I/O от приложения

Сделать запрос к БД напрямую (psql, Redis CLI, mongosh) и замерить время:

# PostgreSQL: план выполнения с реальными данными
EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM orders WHERE user_id = 42;

# Redis: измерить latency
redis-cli --latency-history -i 1

# curl с таймингами по фазам
curl -w "@curl-format.txt" -o /dev/null -s https://example.com/api/items

curl-format.txt:

time_namelookup: %{time_namelookup}\n
time_connect: %{time_connect}\n
time_appconnect: %{time_appconnect}\n
time_pretransfer: %{time_pretransfer}\n
time_starttransfer: %{time_starttransfer}\n
time_total: %{time_total}\n

Шаг 4: Профилировать Node.js процесс

Если event loop lag высокий — собрать CPU profile:

# Запустить с inspector
node --inspect server.js
# Подключиться в Chrome DevTools -> Performance -> Record
# Или использовать 0x для flame graph
npx 0x -- node server.js

Шаг 5: Проверить инфраструктуру

  • DNS-резолюцию внешних зависимостей: медленный DNS приводит к задержкам при первом запросе после TTL.
  • Connection pool: исчерпание пула соединений к БД заставляет запросы ждать свободного слота.
  • TLS handshake: если upstream HTTPS без keep-alive, каждый запрос платит 100–200ms за handshake.

Как отличить Express от остального

Если добавить эндпоинт без логики и I/O (res.json({ok:true})) и он отвечает быстро — Express и Node.js в порядке, проблема в обработчике. Если и этот эндпоинт медленный — проблема в уровне Node.js/системы (нехватка памяти, swap, перегруженный CPU).

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

  • Синхронные методы fs (readFileSync, existsSync) в middleware блокируют event loop для всех параллельных запросов.
  • Медленный middleware (например, медленная десериализация JWT с RS256 при каждом запросе) сдвигает latency всего сервиса, хотя виновата не бизнес-логика.
  • Connection pool PostgreSQL/MySQL по умолчанию мал (pg: 10 соединений) — при высоком параллелизме запросы стоят в очереди внутри приложения, а не на уровне БД.
  • DNS-кэш в Node.js отсутствует по умолчанию — каждый запрос к внешнему сервису выполняет резолюцию; dns.lookup с кэшем или использование --dns-result-order=ipv4first решает проблему.
  • console.log синхронен в Node.js — при интенсивном логировании каждой строки запроса он может стать узким местом.
  • Memory leak в замыканиях middleware (накопление обработчиков событий) вызывает деградацию через GC-паузы, которые выглядят как периодические всплески latency.
  • Если сервис работает за nginx, проверить upstream keepalive — без него nginx создаёт новое TCP-соединение на каждый proxied запрос.

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

  • В чём разница между app.use() и app.get() / app.post()?
  • Какова роль next() в middleware Express? Что происходит, если его не вызвать?
  • Как работает маршрутизация в Express? Как организовать маршруты с помощью express.Router()?
  • Что такое middleware в Express.js? Объясните цикл запрос-ответ (request-response cycle).

Что портит ответ

  • Сразу обвинять Express.js, не проверив соседние слои системы
  • Чинить симптом без минимального воспроизведения и evidence
  • Не учитывать версии, конфигурацию, окружение и recent changes

Что слушает интервьюер

  • Умеет локализовать проблему вокруг Express.js
  • Двигается от симптома к гипотезам и проверкам
  • Отличает баг инструмента от ошибки использования или окружения

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

Проверить себя по теме Express.js →
←Предыдущий вопросКак сравнить Express.js с ближайшими backend-альтернативами по скорости разработки, производительности, экосистеме и эксплуатации?Следующий вопрос→Как разобрать тело запроса в формате JSON и URL-encoded в Express?

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

Express.jsDebuggingtechnical-communicationtechnology-selectiontrade-off-analysis

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

  • Fullstack JavaScript разработчик