Рубрики
Без рубрики

7 Hardest Node.js Вопросы собеседования

7 Hardest Node.js Вопросы собеседования

Автор оригинала: Alex Ershov.

Node.js – это открытый источник, кроссплатформенная среда выполнения JavaScript Time, которая выполняет серверную сторону кода JavaScript. Node.js позволяет разработчикам использовать JavaScript для серверных сценариев, использующих сценарию сценариев для получения динамического содержимого веб-страницы до отправки страницы в веб-браузер пользователя.

7 Hardest Node.js Вопросы собеседования

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.