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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
🤔 Какой JavaScript API используется для получения точной геолокации пользователя, требуя его разрешения перед получением данных?
Anonymous Quiz
44%
Navigator.geolocation
19%
Window.location
21%
Document.getCoordinates()
15%
HTML5 Location API
3
#собес
🤔 Что такое мутирующие и не мутирующие методы?

Мутирующие методы изменяют оригинальный массив или объект, тогда как не мутирующие методы возвращают новый массив или объект без изменения исходного. Например, методы push ( ) и рор() являются мутирующими, потому что они изменяют исходный массив. В то время как map() и filter() являются не мутирующими, так как они создают новый массив на основе исходного.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 HTTP-запросы: структура, методы, строка статуса и коды состояния

Статья объясняет базовые элементы HTTP: структуру запросов, методы для выполнения операций, строку статуса и коды состояния, помогающие понять результат взаимодействия с сервером.
Читать статью

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥1
#ЛитКод
Задача: 636. Exclusive Time of Functions

На однопоточном процессоре выполняется программа, содержащая n функций. Каждая функция имеет уникальный ID от 0 до n-1. Вызовы функций хранятся в стеке вызовов: когда начинается вызов функции, ее ID заталкивается в стек, а когда вызов функции заканчивается, ее ID выгружается из стека. Функция, чей идентификатор находится в верхней части стека, является текущей выполняемой функцией. Каждый раз, когда функция запускается или завершается, мы пишем лог с идентификатором, началом или завершением и меткой времени. Вам предоставляется список logs, где logs[i] представляет собой i-е сообщение лога, отформатированное как строка "{function_id}:{"start" | "end"}:{timestamp}". Например, "0:start:3" означает, что вызов функции с идентификатором 0 начался в начале временной метки 3, а "1:end:2" означает, что вызов функции с идентификатором 1 завершился в конце временной метки 2. Обратите внимание, что функция может быть вызвана несколько раз, возможно, рекурсивно. Исключительное время функции - это сумма времен выполнения всех вызовов функции в программе. Например, если функция вызывается дважды, причем один вызов выполняется за 2 единицы времени, а другой - за 1 единицу, то эксклюзивное время равно 2 + 1 = 3. Верните эксклюзивное время каждой функции в массив, где значение по i-му индексу представляет собой эксклюзивное время для функции с идентификатором i.

Пример:
Input: n = 2, logs = ["0:start:0","1:start:2","1:end:5","0:end:6"]
Output: [3,4]


👨‍💻 Алгоритм:

1⃣Парсинг логов
Пройдитесь по каждому логу, чтобы распознать действие (start или end) и идентификатор функции вместе с временной меткой.

2⃣Использование стека
Используйте стек для отслеживания текущих вызовов функций. Если лог содержит start, добавьте функцию в стек и начните отсчет времени. Если лог содержит end, снимите функцию со стека и обновите эксклюзивное время.

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

😎 Решение:
var exclusiveTime = function(n, logs) {
let stack = [];
let times = new Array(n).fill(0);
let prevTime = 0;

for (let log of logs) {
let [fid, type, time] = log.split(':');
fid = parseInt(fid);
time = parseInt(time);

if (type === 'start') {
if (stack.length) {
times[stack[stack.length - 1]] += time - prevTime;
}
stack.push(fid);
prevTime = time;
} else {
times[stack.pop()] += time - prevTime + 1;
prevTime = time + 1;
}
}

return times;
};


👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
#собес
🤔 Что такое деструктуризация?

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

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2👎1👌1
#полезное
🤓 Roadmap для веб-разработчиков

Один из самых красивых роадмэпов, который я когда-либо видел, создал разработчик из Дании.

🟠Он составил интерактивную дорожную карту для веб-разработчиков.

🟠К каждому пункту прилагаются ссылки на ресурсы, где можно изучить или подтянуть соответствующую тему.

Это отличный способ организовать обучение и следить за своим прогрессом в веб-разработке.
Роадмэп тут

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🤔 Какой JavaScript API позволяет веб-приложениям отправлять обновленные данные на сервер в реальном времени без перезагрузки страницы?
Anonymous Quiz
66%
WebSocket
4%
Server-Sent Events
14%
AJAX
16%
Fetch API
#вакансии
👨‍💻 React I Senior

Локация: Удалённо
Компания: Top Selection
ЗП: до 340 000 р. gross
Занятость: Полная

Описание проекта: Мессенджер для коммуникации (b2b/ b2с).

Оформление: ИП
Срок проекта: 6+ месяцев

🚩Требования
🔵Опыт работы с JS 5+ лет, опыт и ReactJS 3+ лет;
🔵Опыт с MobX;
🔵Выше среднего навыки Html + CSS, (верстки не много, но она сложнее обычного).

Будет плюсом
🔵Опыт работы с Electron API.

💬 Резюме отправлять: @Elena_Stegnina

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#собес
🤔 Что такое rest оператор?

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

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#статьи
😊 Создаем Hamster Kombat почти с нуля. Практика по Vue 3 и Telegram Mini Apps

В статье рассказывается, как создать Telegram-тапалку с нуля, используя современный стек технологий. Вы освоите Serverless-подход, разработку на Node.js, Vue, Supabase и деплой проектов в облаке.
Читать статью

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 639. Decode Ways II

Сообщение, содержащее буквы от A-Z, может быть закодировано в цифры с помощью следующего отображения: 'A' -> "1" 'B' -> "2" ... 'Z' -> "26" Чтобы декодировать закодированное сообщение, все цифры должны быть сгруппированы, а затем снова преобразованы в буквы с помощью обратного отображения (может быть несколько способов). Например, "11106" может быть преобразовано в: "AAJF" с группировкой (1 1 10 6) "KJF" с группировкой (11 10 6) Обратите внимание, что группировка (1 11 06) недействительна, поскольку "06" не может быть преобразовано в "F", так как "6" отличается от "06". В дополнение к вышеуказанным преобразованиям кодированное сообщение может содержать символ "*", который может представлять любую цифру от "1" до "9" ("0" исключается). Например, кодированное сообщение "1*" может представлять любое из кодированных сообщений "11", "12", "13", "14", "15", "16", "17", "18" или "19". Декодирование "1*" эквивалентно декодированию любого из кодированных сообщений, которые оно может представлять. Если задана строка s, состоящая из цифр и символов '*', верните количество способов ее декодирования. Поскольку ответ может быть очень большим, верните его по модулю 109 + 7.

Пример:
Input: s = "*"
Output: 9


👨‍💻 Алгоритм:

1⃣Инициализация
Создайте массив dp, где dp[i] представляет количество способов декодирования подстроки s[0:i]. Установите начальные значения dp[0] = 1 (пустая строка имеет один способ декодирования).

2⃣Обход строки
Используйте цикл для обхода строки и вычисления количества способов декодирования для каждого символа, включая обработку символа '*'.

3⃣Модульное вычисление
Поскольку количество способов декодирования может быть большим, вычисляйте результаты по модулю 10^9 + 7.

😎 Решение:
var numDecodings = function(s) {
const MOD = 1e9 + 7;
const n = s.length;
const dp = new Array(n + 1).fill(0);
dp[0] = 1;

for (let i = 1; i <= n; i++) {
if (s[i - 1] === '*') {
dp[i] = 9 * dp[i - 1];
} else if (s[i - 1] !== '0') {
dp[i] = dp[i - 1];
}

if (i > 1) {
if (s[i - 2] === '*') {
if (s[i - 1] === '*') {
dp[i] += 15 * dp[i - 2];
} else if ('0' <= s[i - 1] && s[i - 1] <= '6') {
dp[i] += 2 * dp[i - 2];
} else {
dp[i] += dp[i - 2];
}
} else if (s[i - 2] === '1') {
if (s[i - 1] === '*') {
dp[i] += 9 * dp[i - 2];
} else {
dp[i] += dp[i - 2];
}
} else if (s[i - 2] === '2') {
if (s[i - 1] === '*') {
dp[i] += 6 * dp[i - 2];
} else if ('0' <= s[i - 1] && s[i - 1] <= '6') {
dp[i] += dp[i - 2];
}
}
}

dp[i] %= MOD;
}

return dp[n];
};


👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
😨4
#собес
🤔 Какие преимущества предоставляет оператор spread по сравнению с альтернативными подходами, такими как метод concat() для массивов или Object.assign() для объектов?

Оператор spread(...) позволяет легко копировать и объединять массивы и обьекты с помощью более лаконичного и читаемого синтаксиса. В отличие от метода concat( ) , который требует явного указания массива для объединения, и Object. assign() , который может затруднить копирование объектов с вложенными структурами, оператор spread делает эти операции интуитивно понятными и менее подверженными ошибкам. Это упрощает написание кода и повышает его читаемость.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
#статьи
👍 Как за 10 минут создать тестировщик нагрузки для API на Node.js

Почему разработка собственного инструмента для нагрузки на API иногда оказывается лучшим выбором? В статье обсуждается реальный кейс: задачи тестирования производительности, ограничения Postman и сложность JMeter. Узнайте, как и зачем был создан простой и эффективный API-лоадер на Node.js.
Читать статью

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#статьи
🤓 Важность HTTP-протокола для веб-разработчиков

Статья по ссылке ниже охватывает ключевые аспекты, такие как методы HTTP (GET, POST, PUT, DELETE), заголовки, аутентификацию и цикл запроса/ответа. Также приводятся практические примеры и лучшие практики для создания безопасных, масштабируемых и производительных API.
Чикать статью

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
1
This media is not supported in your browser
VIEW IN TELEGRAM
Наглядная разница между while и do while

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😁2
#собес
🤔 Что такое рекурсия, когда применяется? Пример рекурсивной структуры?

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

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1