Node.js – это открытый источник, кроссплатформенная среда выполнения JavaScript Time, которая выполняет серверную сторону кода JavaScript. Node.js позволяет разработчикам использовать JavaScript для серверных сценариев, использующих сценарию сценариев для получения динамического содержимого веб-страницы до отправки страницы в веб-браузер пользователя.
Q1: Укажите пример разделения файлов конфигурации для среды dev и prod
Тема: Node.js Сложность: ⭐⭐⭐⭐.
Идеальная и безупречная настройка конфигурации должна обеспечить:
- Ключи могут быть прочитаны из файла и из переменной среды
- Секреты хранятся вне совершенного кода
- Конфигурация иерархическая для более легкой наличии
Рассмотрим следующий файл конфигурации:
var config = { production: { mongo: { billing: ' ****' } }, default: { mongo: { billing: '****' } } } exports.get = function get(env) { return config[env] || config.default; }
И это использование:
const config = require('./config/config.js').get(process.env.NODE_ENV); const dbconn = mongoose.createConnection(config.mongo.billing);
🔗 Источник: github.com/i0natan/nodebestpractices.
Q2: Каковы функции времени Node.js?
Тема: Node.js Сложность: ⭐⭐⭐⭐.
Модуль таймеров в Node.js содержит функции, которые выполняют код после определенного периода времени.
- Setimeate/Clearimeout – Может использоваться для расписания выполнения кода после назначенного количества миллисекунд
- SetInterval/ClearInterval – Может использоваться для выполнения блока кода несколько раз
- Setimmediate/Clearimmediate – выполнит код в конце текущего цикла петли событий
- Process.NextTick – используется для заплаты функции обратного вызова, которая будет вызвать следующую итерацию петли события
function cb(){ console.log('Processed in next iteration'); } process.nextTick(cb); console.log('Processed in the first iteration');
Выход:
Processed in the first iteration Processed in next iteration
🔗 Источник: github.com/jimuyouyouy
Q3: объясните, что такое рисунок реактора в Node.js?
Тема: Node.js Сложность: ⭐⭐⭐⭐⭐.
Рисунок реактора это идея неблокирующих операций ввода/вывода в Node.js. Этот шаблон предоставляет обработчик (в случае функции обратного вызова ody.js, A обратный вызов ), что связано с каждой операцией ввода-вывода. Когда запрос ввода/вывода генерируется, он передан на Демультиплексер Отказ
Это Демультиплексер Это интерфейс уведомления, который используется для обработки параллелизма в неблокирующем режиме ввода/вывода и собирает каждый запрос в форме события и очередей каждое событие в очереди. Таким образом, демультиплексер обеспечивает Очередь события Отказ
В то же время есть цикл событий, который итерации по поводу предметов в очереди события. Каждое событие имеет функцию обратного вызова, связанной с ним, и эта функция обратного вызова вызывается при переносе событий итерации.
🔗 Источник: Hackernoon.com.
Q4: Что такое выбросы LTS Node.js Почему вы должны заботиться?
Тема: Node.js Сложность: ⭐⭐⭐⭐⭐.
ЛТС (долгосрочная поддержка) Версия Node.js получает все исправления критических ошибок, обновления безопасности и улучшения производительности.
Версии LTS Node.js поддерживаются не менее 18 месяцев и указываются даже номерами версий (E.g. 4, 6, 8). Они лучше всего для производства, поскольку линия выпуска LTS сосредоточена на стабильности и безопасности, тогда как Текущий Линия выпуска имеет более короткую продолжительность жизни и более частые обновления для кода. Изменения версий LTS ограничены исправлениями ошибок для устойчивости, обновлений безопасности, возможных обновлений NPM, обновлениями документации и определенных улучшений производительности, которые можно продемонстрировать, чтобы не нарушать существующие приложения.
🔗 Источник: github.com/i0natan/nodebestpractices.
Q5: Почему вы должны отделить Express ‘App’ и «Сервер»?
Тема: Node.js Сложность: ⭐⭐⭐⭐⭐.
Сохранение Декларации API, разделенную от конфигурации, связанной с сетью (порта, протокола и т. Д.), позволяет тестировать процесс API, без выполнения сетевых вызовов, со всеми преимуществами, которые он приносит в таблицу: быстрое тестирование выполнения и получение метрик покрытия код. Это также позволяет развертывать ту же API при гибких и разных условиях сети. Бонус: лучше отделение проблем и чистого кода.
Декларация API, должна проживать в App.js:
var app = express(); app.use(bodyParser.json()); app.use("/api/events", events.API); app.use("/api/forms", forms);
Декларация сетевого сервера, должна находиться в/bin/www:
var app = require('../app'); var http = require('http'); /** * Get port from environment and store in Express.*/ var port = normalizePort(process.env.PORT || '3000'); app.set('port', port); /** * Create HTTP server. */ var server = http.createServer(app);
🔗 Источник: github.com/i0natan/nodebestpractices.
Q6: В чем разница между Process.NextTick () и Setimmediate ()?
Тема: Node.js Сложность: ⭐⭐⭐⭐⭐.
Разница между Process.NextTick ()
и setimmediate ()
Это Process.NextTick ()
Отыливают выполнение действия до следующего пропускания с циклом события или он просто вызывает функцию обратного вызова после завершения текущего выполнения контура событий, тогда как setimmediate ()
Выполняет обратный вызов на следующий цикл контура событий, и он возвращает цикл события для выполнения любых операций ввода-вывода.
🔗 Источник: CodingDefined.com.
Q7: переписать образец кода без попытки/Catch Block
Тема: Node.js Сложность: ⭐⭐⭐⭐⭐.
Рассмотрим код:
async function check(req, res) { try { const a = await someOtherFunction(); const b = await somethingElseFunction(); res.send("result") } catch (error) { res.send(error.stack); } }
Перепишите образец кода без попытки/Catch Block.
Отвечать:
async function getData() { const a = await someFunction().catch((error) => console.log(error)); const b = await someOtherFunction().catch((error) => console.log(error)); if (a && b) console.log("some result") }
Или если вы хотите знать, какую конкретную функцию вызванную ошибку:
async function loginController() { try { const a = await loginService().catch((error) => { throw new CustomErrorHandler({ code: 101, message: "a failed", error: error }) }); const b = await someUtil().catch((error) => { throw new CustomErrorHandler({ code: 102, message: "b failed", error: error }) }); //someoeeoe if (a && b) console.log("no one failed") } catch (error) { if (!(error instanceof CustomErrorHandler)) { console.log("gen error", error) } } }
🔗 Источник: Medium.com.
Спасибо 🙌 Для чтения и удачи в интервью! Убедитесь, что вопросы и ответы на 👉 www.fullstack.cafe.