Node.js Backend | YeaHub – Telegram
Node.js Backend | YeaHub
501 subscribers
165 photos
15 videos
412 links
Теория, подготовка к интервью и курсы для Node.js разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#Собес #sigint #http #сервер
🤔 Как изящно остановить Node.js сервер?

💬 Кратко:

Изящно остановить сервер в Node.js можно с помощью server.close(), который завершает все активные соединения. 

Также следует обработать события SIGINT и SIGTERM для завершения процессов

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
⏱️ CRON при репликации сервиса: когда он внезапно запускается дважды

Когда у тебя один инстанс сервиса — cron-задачи живут спокойной жизнью: раз в минуту/час/день отработали — и всё
Но как только появляется горизонтальное масштабирование, начинается цирк: один и тот же cron внезапно запускается на всех репликах

Результат — задвоение задач, дубль-отправки в очередь, лишние запросы в БД, гонки, broken idempotency.
Разбираемся, как это контролировать

🙃 Способы синхронизации CRON между репликами

1) Distributed lock (рекомендуется)

Ты заранее пытаешься взять “маркер лидерства”
Кто взял — тот и выполняет cron. Остальные ждут

Варианты реализации:
— Redis + Redlock
Стандарт: быстрая блокировка с TTL → если под умер, блокировка сама освободится

— PostgreSQL advisory locks
SELECT pg_try_advisory_lock(12345)
Если вернул true, ты — лидер

— PostgreSQL row-level / table-level locks
Простой механизм: лочишь строку “task_name = cleanup_daily”


2) Leader election (лидер выбирается автоматически)

Идея: из всех реплик выбирается одна основная, она и запускает cron.

Варианты:
— Kubernetes leader election через Lease API
Удобно для Cron внутри подов

— Consul / Etcd лидер-электоры
Более enterprise-решение.

3) Cron вынести наружу (лучший вариант для сложных систем)

Перенести все периодические задачи в:
— Kubernetes CronJob
Самый распространённый вариант.
— Airflow / Temporal / BullMQ Scheduler
Если задач много и они взаимосвязаны.
— Dedicated scheduler service

Минус: иногда оверхед для небольших проектов

4) Idempotency + мягкая синхронизация

Если не можешь/не хочешь бороться с параллельностью —
просто проектируешь cron так, чтобы дубликат не ломал логику

Подходы:
— В БД держать processed_at, а cron проверяет “ещё не обработано?”.
— Все действия писать через UPSERT / ON CONFLICT DO NOTHING.
— Слать команды в очередь, где есть idempotency-key.


🚀 Пост Guru Node.js: @DemetraIT
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #ts #microservices #nest.js

🤔 Middle Node.js Backend разработчик в компанию Uniteller

Техсобес. ЗП: от 220к. Август 2025. Проект: Uniteller. Опыт: 3 года. Стандартное собеседование на Node.js без глубоких вопросов, делали упор на вопросы, которые часто применяются на практике

💬 Вопросы:

- Принципы SOLID

- Монолит и микросервисы — плюсы, минусы, когда стоит использовать каждый подход

- Как выполнить глубокое копирование объекта?

- Как работает сборщик мусора (garbage collector) в JavaScript? Какие есть стратегии для управления памятью?

- В чем особенность хранения объектов?

👉 Все вопросы из этого собеседования (10)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
1
#Собес #git_push #git_pull
🤔 Почему мы делаем git pull, а затем git push?

💬 Кратко:

Мы делаем git pull, чтобы сначала синхронизировать наш локальный репозиторий с последними изменениями из удаленного. Затем выполняем git push, чтобы отправить свои изменения. Это помогает избежать конфликтов и сохранить согласованность данных между участниками команды.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
1
#course #задачи #тесты
📚 JavaScript. A3 Задачи

Задачи на программирования на языке JavaScript, формат ввода-вывода делает задачи похожими на задачи на других языка программирования. В курсе используется синтаксис современного стандарта ES6.

Перейти к материалу

👉 База вопросов 👉 Новости
#Собес #nestjs #typenoscript #module
🤔 Что такое NestJS, и почему он так популярен для создания приложений на Node.js?

💬 Кратко:

NestJS — это прогрессивный фреймворк для Node.js, построенный на TypeScript. Он предлагает модульную архитектуру, встроенную поддержку Dependency Injection (внедрение зависимостей) и удобную интеграцию с популярными библиотеками. Благодаря своей структуре и подходу к разработке он делает код легко масштабируемым, читаемым и поддерживаемым.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
😎 Транзакции в микросервисах: Saga vs 2PC

Когда система разбита на десятки сервисов — классические транзакции через BEGIN/COMMIT уже физически не сработают. Нужны механизмы, которые обеспечат целостность данных между разными сервисами, каждый из которых живёт в своей базе и своём технологическом стеке.

Используют два подхода: Saga и 2PC. Разберём, как они устроены, где применять и какие подводные камни есть у каждого

🌀 Saga Pattern

Saga — это цепочка локальных транзакций, каждая из которых коммитится сразу. Если одна из операций падает — запускаются компенсирующие действия, откатывающие уже выполненные шаги.

Как работает
1. Сервис A создаёт заказ
2. Сервис B списывает деньги
3. Сервис C резервирует товар
4. Сервис D создаёт доставку

Если на шаге 3 ошибка — запускаются компенсации:

— отменить доставку
— снять резерв товара
— вернуть деньги
— отменить заказ

Все шаги асинхронные, с ретраями и идемпотентностью.

Два подхода Saga
1) Orchestration
Есть “дирижёр” (Orchestrator), который знает порядок шагов
Чаще всего — отдельный сервис или компонент (советую почитать про Temporal)

2) Choreography
Сервисы сами реагируют на события друг друга

🔗 Two-Phase Commit (2PC)

2PC — классический дистрибутивный commit: все участники говорят “готов”, после чего координатор говорит “фиксируем”

Как работает
1) Phase 1: Prepare
Координатор опрашивает сервисы:
“Готовы закоммитить транзакцию?”

2) Phase 2: Commit
Если все ответили OK → отправляется COMMIT
Если хотя бы один ответил NO → ROLLBACK

Проблемы 2PC

— блокировки: участники держат транзакции в состоянии prepare
— долгая блокировка ресурсов → падение производительности
— сеть надежна и транзакции будут падать

По факту, 2PC в микросервисах почти не используют — слишком дорог и хрупок

🐗 Вывод юзаем сагу

Saga — это дефолтный способ транзакционности в микросервисах. Правда готовить сагу сложно и часто в компаниях встречаются свои реализации паттерна

🚀 Пост Guru Node.js: @DemetraIT
Please open Telegram to view this post
VIEW IN TELEGRAM
3
#Собес #jit #optimization #компиляция
🤔 В чем заключается суть оптимизации методов типа Just-In-Time (JIT)?

💬 Кратко:

Just-In-Time (JIT) оптимизация — это метод, при котором JavaScript-код компилируется в машинный код во время выполнения, а не заранее. Это позволяет движку адаптироваться к реальным условиям работы приложения, оптимизируя часто вызываемые функции и код. JIT-компиляция сочетает преимущества интерпретации и компиляции, обеспечивая более быструю работу кода, особенно в высоконагруженных приложениях.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#Собес #relational #table #primary_key
🤔 Что такое реляционная база данных?

💬 Кратко:

Реляционная база данных (РБД) хранит данные в виде таблиц (отношений), где каждая строка — запись, а столбцы — атрибуты. Для связи таблиц используются ключи (первичные и внешние). Такая структура обеспечивает целостность данных и позволяет эффективно выполнять запросы с помощью SQL.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#book #начинающие
📚 Node.js: разработка приложений в микросервисной архитектуре с нуля

Особое внимание уделено распределенным транзакциям и разворачиванию микросервисов на удаленном сервере. Показано, как обеспечить расширяемость и отказоустойчивость приложений, как успешно бороться с усложнением клиентских интерфейсов, поддерживая высокую скорость загрузки страниц и приложений и не забывая о том, чтобы сайт оставался красивым и удобным в использовании.

Перейти к материалу

👉 База вопросов 👉 Новости
#Собес #interceptors #nestinterceptor #executioncontext
🤔 Как использовать интерсепторы?

💬 Кратко:

Interceptors в NestJS используются для выполнения логики до или после вызова метода. Они подходят для таких задач, как логирование, обработка ошибок, модификация ответов и кеширование. Перехватчики реализуются через интерфейс NestInterceptor и применяются через декоратор @UseInterceptors.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🔍 Инструменты чтения плана запроса: EXPLAIN и EXPLAIN ANALYZE

Когда запрос в базе работает медленно — не надо гадать на кофейной гуще. В PostgreSQL есть два супер-инструмента, которые позволяют увидеть, что именно делает оптимизатор и где запрос тратит время

Речь про EXPLAIN и EXPLAIN ANALYZE

🥰 EXPLAIN — прогноз плана

EXPLAIN показывает, как PostgreSQL собирается выполнить запрос:
— какие индексы может использовать
— какой тип сканирования выберет (Seq Scan, Index Scan, Bitmap Index Scan)
— предполагаемое количество строк
— стоимость выполнения (cost)

😁 Полезно, когда ты хочешь понять теоретический план без реального запуска запроса

Пример запроса
EXPLAIN SELECT * FROM users WHERE email = 'test@mail.com';



⚡️ EXPLAIN ANALYZE — фактические замеры

EXPLAIN ANALYZE выполняет запрос реально и показывает:
— сколько времени занял каждый шаг
— реальное количество строк
— время старта операции
— расхождение между прогнозами и фактами

Если EXPLAIN — теория, то EXPLAIN ANALYZE — практика

Пример запроса
EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'test@mail.com';

📝 Тут внимательнее: запрос действительно выполнится, поэтому с UPDATE/DELETE используй на тестовых данных



😴 Что смотреть в плане?
1) Seq Scan — сигнал: возможно нет индекса
2) Row Estimate vs Actual Rows — если сильно расходится, оптимизатор ошибся → можно помочь статистикой
3) Filter / Recheck — где происходит фильтрация
4) Timing — какой узел съедает больше всего времени
5) Planning Time / Execution Time — понять, где узкое место

🚀 Пост Guru Node.js: @DemetraIT
Please open Telegram to view this post
VIEW IN TELEGRAM
4
#Собес #node.js #event_loop #promise

🤔 Middle Node.js Backend разработчик в компанию Гринатом

Техническое собеседование. ЗП: от 220к. Август 2025. Опыт: 4 года. Средний собес, спрашивали по опыту (про достижения из резюме), были блоки по Node.js, ts, бд и микросервсам

💬 Вопросы:

- Виды тестов и их различия

- Какие бывают транспорты между микросервисами (синхронный подход (REST, gRPC) и асинхронный (kafka, rabbitMQ, NATS))

- Плюсы и минусы микросервисов

- Блокирующие и неблокирующие операции в Node.js

- Расскажи про Event-loop. Когда выполняется SetImmediate

👉 Все вопросы из этого собеседования (22)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
1
#Собес #clustered #index #nonclustered
🤔 Как работают кластеризованные и некластеризованные индексы? Когда их стоит применять?

💬 Кратко:

Кластеризованный индекс хранит строки таблицы в порядке ключа — это сама таблица, упорядоченная по первичному ключу. Некластеризованный — отдельная структура (B-tree), которая хранит ключи и указатели на строки. Кластеризованный выгоден, если часто читают диапазоны по ключу, но таблица может упорядочиваться только одним способом. Некластеризованные подходят для дополнительных полей и точечного поиска.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#podcast #микросервисы #новости
📚 RadioJS

«RadioJS» — это подкаст для разработчиков, фокусирующийся на JavaScript и смежных технологиях. Ведущие в формате живого диалога обсуждают актуальные темы индустрии: фреймворки, инструменты, архитектурные подходы, тренды и личный опыт.

Перейти к материалу

👉 База вопросов 👉 Новости
🔥2
#Собес #модуль #iife #область_видимости
🤔 Какие способы организации кода были до появления модулей?

💬 Кратко:

До появления модулей в JavaScript разработчики использовали различные методы для организации кода, такие как глобальные переменные, функциональные области видимости и объекты. Эти методы часто приводили к проблемам, связанным с конфликтами имен и сложностью управления зависимостями, так как все данные и функции находились в одной глобальной области видимости.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🔥1
📝 CAP-теорема простыми словами

Иногда на собесах или работе можно встретить вопрос про CAP теорему

В распределённых системах нельзя одновременно обеспечить три свойства:
1) C — Consistency: все узлы возвращают одинаковые данные
2) A — Availability: система всегда отвечает (не важно ошибки в бд или успех)
3) P — Partition tolerance: работает даже при проблемах сети при масштабировании

Причем в реальности выбираем P неизбежно, так как сеть ненадежна.
Поэтому реальный выбор — между C и A

☺️ CP — согласованность важнее доступности

Система лучше не ответит, чем вернёт разные данные из разных узлов
Примеры: Zookeeper, etcd, PostgreSQL в синхроне

💀 AP — доступность важнее согласованности

Система отвечает всегда, даже если данные временно расходятся. Это может быть удобно, например, при реализации лайков (не страшно, если будет расхождение)
Примеры: Cassandra, MongoDB, Dynamo-подобные

💡 Итог
CAP — это про компромисс: что для тебя важнее при аварии — доступность или корректность данных?

Есть еще так NewSQL, которые якобы могут и масштабироваться, советую почитать про такой вид бд

🚀 Пост Guru Node.js: @DemetraIT
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
#Собес #message_broker #js #nodejs

🤔 Middle/Middle+ Node.js Backend разработчик в компанию rolftech

Техсобес. ЗП: от 250к. Июнь 2025. Опыт: 4 года. Непростой собес, спрашивали по опыт и глубоко копали в техничку. Был лайвкодинг.

💬 Вопросы:

- JWT что такое? Из каких частей состоит токен?

- Что такое CORS

- Как принято работать с файлами с Node.js

- Pick, Omit, Partial в TS

- Что такое опциональная цепочка в JS?

👉 Все вопросы из этого собеседования (26)

📣 Хочешь больше собесов?
Подпишись на наш главный канал
2🔥1
#Собес #normalization #1nf #2nf
🤔 Что такое нормальные формы в базах данных? Зачем они нужны?

💬 Кратко:

Нормальные формы (1NF, 2NF, 3NF, BCNF и др.) — это набор правил для проектирования таблиц, которые минимизируют дублирование данных и предотвращают аномалии вставки, обновления и удаления. Приведение схемы к нормальным формам упрощает поддержку и обеспечивает целостность.

📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору

📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#tool #гит
📚 Хочешь изучить Git, не рискуя своей локальной установкой?

Теперь можно запускать команды Git прямо из браузера , с пошаговым объяснением, что делает каждая команда.

Перейти к материалу

👉 База вопросов 👉 Новости