Die 7 schwierigsten Node.js-Interviewfragen

Die 7 schwierigsten Node.js-InterviewfragenNode.js ist eine plattformübergreifende Open-Source-JavaScript-Laufzeitumgebung, die JavaScript-Code serverseitig ausführt. Mit Node.js können Entwickler JavaScript für serverseitiges Skripting verwenden – Skripte serverseitig ausführen, um dynamische Webseiteninhalte zu erstellen, bevor die Seite an den Webbrowser des Benutzers gesendet wird.

F1: Geben Sie ein Beispiel für die Trennung von Konfigurationsdateien für Entwicklungs- und Produktionsumgebungen

Thema: Node.js
Schwierigkeit: ⭐⭐⭐⭐

Ein perfektes und fehlerfreies Konfigurationssetup sollte Folgendes sicherstellen:

  • Schlüssel können aus der Datei UND aus der Umgebungsvariable gelesen werden
  • Geheimnisse werden außerhalb des festgeschriebenen Codes aufbewahrt
  • config ist zur leichteren Auffindbarkeit hierarchisch

Betrachten Sie die folgende Konfigurationsdatei:

var config = {
    production: {
        mongo: {
            billing: ' ****'
        }
    },
    default: {
        mongo: {
            billing: '****'
        }
    }
}
exports.get = function get(env) {
    return config[env] || config.default;
}

Und seine Verwendung:

const config = require('./config/config.js').get(process.env.NODE_ENV);
const dbconn = mongoose.createConnection(config.mongo.billing);

🔗 Quelle: github.com/i0natan/nodebestpractices

F2: Was sind die Timing-Funktionen von Node.js?

Thema: Node.js
Schwierigkeit: ⭐⭐⭐⭐

Das Timers-Modul in Node.js enthält Funktionen, die Code nach einer festgelegten Zeitspanne ausführen.

  • setTimeout/clearTimeout – kann verwendet werden, um die Codeausführung nach einer bestimmten Anzahl von Millisekunden zu planen
  • setInterval/clearInterval – kann verwendet werden, um einen Codeblock mehrmals auszuführen
  • setImmediate/clearImmediate – führt den Code am Ende des aktuellen Ereignisschleifenzyklus aus
  • process.nextTick – Wird verwendet, um eine Rückruffunktion zu planen, die in der nächsten Iteration der Ereignisschleife aufgerufen werden soll
function cb(){ 
  console.log('Processed in next iteration');
}
process.nextTick(cb);
console.log('Processed in the first iteration');

Ausgabe:

Processed in the first iteration
Processed in next iteration

🔗 Quelle: github.com/jimuyouyou

Q3: Erklären Sie, was Reactor Pattern in Node.js ist?

Thema: Node.js
Schwierigkeit: ⭐⭐⭐⭐⭐

Reaktormuster ist eine Idee von nicht blockierenden E/A-Operationen in Node.js. Dieses Muster stellt einen Handler bereit (im Falle von Node.js, a Callback-Funktion), die jeder E/A-Operation zugeordnet ist. Wenn eine E/A-Anforderung generiert wird, wird sie an a übermittelt Demultiplexer.

Dies Demultiplexer ist eine Benachrichtigungsschnittstelle, die verwendet wird, um Parallelität im nicht blockierenden I/O-Modus zu handhaben und jede Anfrage in Form eines Ereignisses zu sammeln und jedes Ereignis in eine Warteschlange einzureihen. Somit liefert der Demultiplexer die Ereigniswarteschlange.

Gleichzeitig gibt es eine Ereignisschleife, die über die Elemente in der Ereigniswarteschlange iteriert. Jedem Ereignis ist eine Rückruffunktion zugeordnet, und diese Rückruffunktion wird aufgerufen, wenn die Ereignisschleife iteriert.

🔗 Quelle: hackeroon.com

F4: Was sind LTS-Versionen von Node.js, warum sollte es Sie interessieren?

Thema: Node.js
Schwierigkeit: ⭐⭐⭐⭐⭐

Ein LTS (Langzeitunterstützung) Version von Node.js erhält alle kritischen Fehlerbehebungen, Sicherheitsupdates und Leistungsverbesserungen.

LTS-Versionen von Node.js werden mindestens 18 Monate lang unterstützt und sind durch gerade Versionsnummern gekennzeichnet (z. B. 4, 6, 8). Sie eignen sich am besten für die Produktion, da die LTS-Release-Linie auf Stabilität und Sicherheit ausgerichtet ist, während die Aktuell Release Line hat eine kürzere Lebensdauer und häufigere Aktualisierungen des Codes. Änderungen an LTS-Versionen beschränken sich auf Fehlerbehebungen für die Stabilität, Sicherheitsupdates, mögliche npm-Updates, Dokumentationsaktualisierungen und bestimmte Leistungsverbesserungen, die nachweislich bestehende Anwendungen nicht beeinträchtigen.

🔗 Quelle: github.com/i0natan/nodebestpractices

F5: Warum sollten Sie Express „App“ und „Server“ trennen?

Thema: Node.js
Schwierigkeit: ⭐⭐⭐⭐⭐

Das Trennen der API-Deklaration von der netzwerkbezogenen Konfiguration (Port, Protokoll usw.) ermöglicht das Testen der API im Prozess, ohne Netzwerkaufrufe durchzuführen, mit allen Vorteilen, die sie mit sich bringt: schnelle Testausführung und Abrufen von Abdeckungsmetriken der Code. Es ermöglicht auch die Bereitstellung derselben API unter flexiblen und unterschiedlichen Netzwerkbedingungen. Bonus: bessere Trennung von Bedenken und saubererer Code.

API-Deklaration, sollte sich in app.js befinden:

var app = express();
app.use(bodyParser.json());
app.use("/api/events", events.API);
app.use("/api/forms", forms);

Deklaration des Servernetzwerks, sollte sich in /bin/www befinden:

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);

🔗 Quelle: github.com/i0natan/nodebestpractices

F6: Was ist der Unterschied zwischen process.nextTick() und setImmediate() ?

Thema: Node.js
Schwierigkeit: ⭐⭐⭐⭐⭐

Der Unterschied zwischen process.nextTick() und setImmediate() ist das process.nextTick() verschiebt die Ausführung einer Aktion bis zum nächsten Durchlauf der Ereignisschleife oder ruft einfach die Callback-Funktion auf, sobald die laufende Ausführung der Ereignisschleife beendet ist, während setImmediate() führt beim nächsten Zyklus der Ereignisschleife einen Rückruf aus und gibt an die Ereignisschleife zurück, um I/O-Operationen auszuführen.

🔗 Quelle: codedefined.com

F7: Schreiben Sie das Codebeispiel ohne try/catch-Block neu

Thema: Node.js
Schwierigkeit: ⭐⭐⭐⭐⭐

Betrachten Sie den Code:

async function check(req, res) {
    try {
        const a = await someOtherFunction();
        const b = await somethingElseFunction();
        res.send("result")
    } catch (error) {
        res.send(error.stack);
    }
}

Schreiben Sie das Codebeispiel ohne try/catch-Block neu.

Antworten:

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")
}

oder wenn Sie wissen möchten, welche bestimmte Funktion den Fehler verursacht hat:

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) } }
}

🔗 Quelle: medium.com

Danke 🙌 fürs Lesen und viel Glück bei deinem Vorstellungsgespräch!
Weitere Fragen und Antworten zu FullStack-Interviews finden Sie unter 👉 www.fullstack.cafe

Similar Posts

Leave a Reply

Your email address will not be published.