Appearance
Kapitel 15: Interviewfragen
🎯 Lernziele
In diesem Kapitel lernen Sie:
- ✅ Grundlegende Konzepte (Node.js Definition, Vorteile)
- ✅ Kernmechanismen (Event Loop, Non-blocking I/O)
- ✅ Praxisszenarien (Server erstellen, Schnittstellen)
- ✅ Häufige Fehlerquellen
- ✅ Framework-bezogene Fragen (Express)
- ✅ Interviewtechniken
15.1 Grundlegende Konzeptfragen
❓ Frage 1: Was ist Node.js?
Antwort:
Node.js ist eine JavaScript-Laufzeitumgebung, die auf der Chrome V8 Engine basiert. Sie ermöglicht die Ausführung von JavaScript außerhalb des Browsers (auf der Serverseite).
Wichtigste Punkte:
- ✅ Basierend auf Chrome V8 Engine
- ✅ Serverseitige Ausführung von JavaScript
- ✅ Event-gesteuert und nicht-blockierend
❓ Frage 2: Nennen Sie die Hauptvorteile von Node.js.
Antwort:
- Non-blocking I/O - Hochleistungsfähig bei I/O-intensiven Anwendungen
- Event-driven - Effiziente Ressourcennutzung
- Plattformübergreifend - Windows, macOS, Linux
- Großes Ökosystem - Über 2 Millionen Pakete auf npm
- Full-Stack JavaScript - Frontend und Backend mit derselben Sprache
❓ Frage 3: Was ist der Unterschied zwischen Node.js und Browser-JavaScript?
| Aspekt | Browser | Node.js |
|---|---|---|
| Globale Objekt | window | global |
| Zugriffsrechte | Eingeschränkt (Sandbox) | Vollzugriff (Dateisystem, Netzwerk) |
| Module | ES Modules (import/export) | CommonJS (require/module.exports) |
| DOM | Verfügbar | Nicht verfügbar |
| Dateisystem | Nicht zugänglich | Vollzugriff (fs-Modul) |
15.2 Kernmechanismusfragen
❓ Frage 4: Was ist der Event Loop?
Antwort:
Der Event Loop ist der Mechanismus, der es Node.js ermöglicht, nicht-blockierende asynchrone Operationen durchzuführen. Er verwaltet die Ausführung von Callbacks, Promises und anderen asynchronen Aufgaben.
Visualisierung:
Event Loop:
┌─────────────────────────────────┐
│ Timers (setTimeout, setInterval) │
├─────────────────────────────────┤
│ Pending Callbacks │
├─────────────────────────────────┤
│ Idle, Prepare │
├─────────────────────────────────┤
│ Poll (I/O Events) │
├─────────────────────────────────┤
│ Check (setImmediate) │
├─────────────────────────────────┤
│ Close Callbacks │
└─────────────────────────────────┘❓ Frage 5: Was ist Non-blocking I/O?
Antwort:
Non-blocking I/O bedeutet, dass asynchrone Operationen (wie Datei lesen oder Datenbankabfragen) nicht den Event Loop blockieren. Node.js kann andere Aufgaben ausführen, während es auf das Ergebnis der Operation wartet.
Code-Beispiel:
javascript
// ❌ Blockierend (Schlecht!)
const daten = fs.readFileSync('datei.txt'); // Blockiert!
console.log('Dies wird erst NACH dem Lesen ausgeführt');
// ✅ Nicht-blockierend (Gut!)
fs.readFile('datei.txt', (err, daten) => {
console.log('Daten:', daten);
});
console.log('Dies wird SOFORT ausgeführt!'); // Blockiert nicht!❓ Frage 6: Erklären Sie das Modulsystem von Node.js.
Antwort: Node.js verwendet zwei Modulsysteme:
1. CommonJS (Standard):
javascript
// Modul exportieren
module.exports = function gruesse() { ... };
// Modul importieren
const gruesse = require('./gruesse');2. ES Modules (Modern):
javascript
// package.json: "type": "module"
export function gruesse() { ... }
import { gruesse } from './gruesse.js';15.3 Praxisszenarienfragen
❓ Frage 7: Wie erstellen Sie einen einfachen HTTP-Server?
Antwort:
javascript
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end('Hallo von Node.js Server!');
});
server.listen(3000, () => {
console.log('🚀 Server läuft auf http://localhost:3000');
});❓ Frage 8: Wie erstellen Sie eine GET-Schnittstelle?
Antwort (mit Express):
javascript
const express = require('express');
const app = express();
const port = 3000;
// GET-Schnittstelle
app.get('/api/users', (req, res) => {
const users = [
{ id: 1, name: 'Max' },
{ id: 2, name: 'Anna' }
];
res.json({ success: true, data: users });
});
app.listen(port, () => {
console.log(`🚀 Server läuft auf http://localhost:${port}`);
});❓ Frage 9: Wie lesen Sie Dateiinhalte?
Antwort:
javascript
const fs = require('fs').promises;
// Asynchrones Lesen (Empfohlen!)
async function dateiLesen() {
try {
const inhalt = await fs.readFile('datei.txt', 'utf8');
console.log('Inhalt:', inhalt);
} catch (err) {
console.error('Fehler:', err.message);
}
}
dateiLesen();15.4 Häufige Fehlerquellen
❓ Frage 10: Was ist "Callback Hell" und wie vermeidet man es?
Antwort:
Callback Hell bezeichnet das Phänomen, wenn zu viele verschachtelte Callbacks den Code unlesbar machen.
Beispiel (❌ Schlecht):
javascript
fs.readFile('datei1.txt', (err1, daten1) => {
if (err1) throw err1;
fs.readFile('datei2.txt', (err2, daten2) => {
if (err2) throw err2;
fs.readFile('datei3.txt', (err3, daten3) => {
if (err3) throw err3;
console.log(daten1, daten2, daten3);
// Noch mehr Callbacks... 😱
});
});
});Lösung (✅ Gut - mit async/await):
javascript
async function alleDateienLesen() {
try {
const daten1 = await fs.promises.readFile('datei1.txt', 'utf8');
const daten2 = await fs.promises.readFile('datei2.txt', 'utf8');
const daten3 = await fs.promises.readFile('datei3.txt', 'utf8');
console.log(daten1, daten2, daten3);
} catch (err) {
console.error('Fehler:', err.message);
}
}
alleDateienLesen();❓ Frage 11: Warum funktioniert require() nicht für ES Modules?
Antwort:
require()ist Teil von CommonJS- ES Modules verwenden
import/export - Sie müssen
"type": "module"inpackage.jsonhinzufügen, um ES Modules zu verwenden
Lösung:
json
// package.json
{
"name": "mein-projekt",
"version": "1.0.0",
"type": "module"
}❓ Frage 12: Was ist das CORS-Problem und wie löst man es?
Antwort:
CORS (Cross-Origin Resource Sharing) verhindert, dass eine Webanwendung Ressourcen von einer anderen Domain (oder Port) abruft.
Lösung (mit Express):
javascript
const express = require('express');
const app = express();
// CORS-Header setzen
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
next();
});
app.get('/api/daten', (req, res) => {
res.json({ nachricht: 'CORS funktioniert!' });
});
app.listen(3000);15.5 Framework-bezogene Fragen
❓ Frage 13: Was ist Express und was sind seine Hauptvorteile?
Antwort:
Express.js ist ein minimalistisches Web-Framework für Node.js. Es vereinfacht die Erstellung von Webservern und APIs drastisch.
Hauptvorteile:
- Einfach - Weniger Code für gleiche Funktionalität
- Flexibel - Unzählige Middleware verfügbar
- Performant - Minimaler Overhead
- Beliebt - Über 20 Millionen Downloads/Woche
❓ Frage 14: Was ist Middleware in Express?
Antwort:
Middleware sind Funktionen, die zwischen Request und Response ausgeführt werden. Sie können den Request verarbeiten, die Antwort modifizieren oder die Ausführung beenden.
Beispiel:
javascript
const express = require('express');
const app = express();
// Eigene Middleware
function loggingMiddleware(req, res, next) {
console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`);
next(); // Wichtig: next() aufrufen!
}
// Middleware anwenden
app.use(loggingMiddleware);
app.get('/', (req, res) => {
res.send('Startseite');
});
app.listen(3000);❓ Frage 15: Was sind die wichtigsten Express-Methoden?
Antwort:
javascript
const express = require('express');
const app = express();
// Routing-Methoden
app.get('/users', (req, res) => { ... }); // GET
app.post('/users', (req, res) => { ... }); // POST
app.put('/users/:id', (req, res) => { ... }); // PUT
app.delete('/users/:id', (req, res) => { ... }); // DELETE
// Middleware-Methoden
app.use(express.json()); // JSON-Body parsen
app.use(express.static('public')); // Statische Dateien
app.listen(3000);15.6 Interviewtechniken
💡 Tipp 1: Kernkonzepte schnell memorieren
Merkblatt:
Node.js Kernkonzepte:
├── Event Loop (Event-gesteuert)
├── Non-blocking I/O (Nicht-blockierend)
├── Modulsystem (CommonJS / ES Modules)
└── CORS (Cross-Origin Resource Sharing)💡 Tipp 2: Code-Beispiele vorbereiten
Wichtige Beispiele:
- HTTP-Server erstellen (
http.createServer()) - Express-Routing (
app.get(),app.post()) - Dateioperationen (
fs.readFile()) - Asynchrone Programmierung (
async/await)
💡 Tipp 3: Häufige Fehler kennen
Wichtig:
- ✅
awaitinasync-Funktionen verwenden - ✅
try/catchfür Fehlerbehandlung - ✅
next()in Middleware nicht vergessen - ✅ CORS-Header für Cross-Origin-Anfragen setzen
💡 Tipp 4: Fragen strukturiert beantworten
STAR-Methode:
- Situation (Situation) - Kontext beschreiben
- Task (Aufgabe) - Was war zu tun?
- Action (Aktion) - Was haben Sie getan?
- Result (Ergebnis) - Was war das Ergebnis?
📝 Zusammenfassung
In diesem Kapitel haben Sie gelernt:
- ✅ Grundlegende Konzeptfragen (Node.js Definition, Vorteile)
- ✅ Kernmechanismen (Event Loop, Non-blocking I/O)
- ✅ Praxisszenarien (Server erstellen, Schnittstellen)
- ✅ Häufige Fehlerquellen (Callback Hell, CORS)
- ✅ Framework-bezogene Fragen (Express Middleware)
- ✅ Interviewtechniken (Merkblatt, Code-Beispiele)
📚 Weiterführende Ressourcen
🎉 Kapitel 15 abgeschlossen! Weiter zu Kapitel 16: Erweiterte Lernswege
