🎁 Meld je nu aan en krijg maximaal 30 minuten gratis online AI-gebruik. Geen creditcard nodig.

Node.js sollicitatievragen en antwoorden: Event Loop, Async, API's en Schalen

September 3, 2026
Node.js sollicitatievragen met antwoorden en code over de event loop, async-patronen, Express, streams, geheugenlekken, beveiliging en schalen.
Node.js sollicitatievragen en antwoorden: Event Loop, Async, API's en Schalen
node js sollicitatievragen
nodejs sollicitatievragen en antwoorden
node event loop sollicitatiegesprek
express sollicitatievragen

Node.js-interviews beginnen met de event loop en asynchrone code, en gaan daarna verder met API's, foutafhandeling, streams, prestaties en beveiliging. De meest voorkomende reden dat kandidaten struikelen, is dat ze de event loop als magie beschrijven. Een duidelijke uitleg van wat waar draait, en wat blokkeert, is waar interviewers op letten.

Hieronder staan 24 vragen met antwoorden. De codevoorbeelden zijn kort, zodat je ze uit je hoofd kunt typen.

Event loop en async

1. Wat is Node.js?

Een JavaScript-runtime gebouwd op Chrome's V8-engine die buiten de browser draait. Het gebruikt een single-threaded event loop voor JavaScript met non-blocking I/O, waardoor het goed is in het verwerken van veel verbindingen die het grootste deel van hun tijd wachten.

2. Hoe werkt de event loop?

JavaScript-code draait op één thread. Wanneer het een I/O-operatie start, zoals het lezen van een bestand of het doen van een request, geeft Node die aan het systeem of een thread pool en gaat verder. Wanneer de operatie klaar is, wordt de callback in de wachtrij gezet, en de event loop voert die uit wanneer de call stack leeg is. De loop doorloopt fasen: timers, pending callbacks, poll (I/O), check (setImmediate) en close callbacks.

3. Wat is de volgorde van process.nextTick, Promises, setTimeout en setImmediate?

console.log('1 sync');
setTimeout(() => console.log('4 timeout'), 0);
setImmediate(() => console.log('5 immediate'));
Promise.resolve().then(() => console.log('3 promise'));
process.nextTick(() => console.log('2 nextTick'));

Synchrone code draait eerst. Dan process.nextTick-callbacks, dan promise-microtasks, dan de fasen van de loop. setTimeout(0) versus setImmediate kan verschillen in de hoofdmodule, maar binnen een I/O-callback draait setImmediate altijd eerst. Wees bereid om het uit te leggen in plaats van alleen op te zeggen.

4. Wat betekent "de event loop blokkeren", en hoe voorkom je dat?

Een lange synchrone taak, zoals het parsen van enorme JSON, een grote loop of fs.readFileSync in een request handler, stopt alle andere requests tot die klaar is. Voorkom dit door async API's te gebruiken, werk op te splitsen in stukken, of CPU-zwaar werk te verplaatsen naar worker threads of een ander proces.

5. Callbacks, promises en async/await: wat zijn de verschillen?

Callbacks zijn de oorspronkelijke stijl en kunnen diep nesten. Promises vertegenwoordigen een toekomstige waarde en chainen met then. async/await is syntax bovenop promises die leest als synchrone code en werkt met try/catch.

6. Hoe voer je async-taken parallel uit?

const [user, orders] = await Promise.all([getUser(id), getOrders(id)]);

Promise.all reject als er één faalt. Promise.allSettled wacht op allemaal en rapporteert elk resultaat. Promise.race geeft de eerste terug die settled. Gebruik geen await in een loop wanneer de calls onafhankelijk zijn.

7. Wat is het verschil tussen worker threads, child processes en cluster?

Worker threads draaien JavaScript in afzonderlijke threads binnen één proces en kunnen geheugen delen, wat geschikt is voor CPU-zwaar werk. Child processes starten afzonderlijke programma's. De cluster-module forkt meerdere kopieën van de app, één per core, die een poort delen, zodat je alle CPU's kunt gebruiken voor het verwerken van requests.

Modules en tooling

8. CommonJS versus ES modules?

CommonJS gebruikt require en module.exports en laadt synchroon. ES modules gebruiken import en export, zijn de standaard in JavaScript en ondersteunen top-level await. Node ondersteunt beide, gekozen op basis van de bestandsextensie of het type-veld in package.json.

9. Wat staat er in package.json, en wat is het verschil tussen dependencies en devDependencies?

Het bevat metadata, scripts en dependencies. dependencies zijn nodig tijdens runtime, en devDependencies alleen voor ontwikkeling en testen. Een lock file legt exacte versies vast zodat installaties reproduceerbaar zijn.

10. Hoe ga je om met environment configuration?

Gebruik environment variables, uitgelezen via process.env, met een gevalideerde config-module. Houd secrets buiten de repository, en gebruik in productie een secrets manager.

API's en Express

11. Wat is middleware in Express?

Een functie met toegang tot de request, de response en next. Middleware draait in volgorde en kan de request aanpassen, de response beëindigen of de controle doorgeven. Typische toepassingen zijn logging, het parsen van bodies, authenticatie en foutafhandeling.

app.use((req, res, next) => {
  console.log(req.method, req.url);
  next();
});

12. Hoe ga je om met fouten in een Express-app?

Vang fouten op in async handlers en geef ze door aan next(err), en gebruik daarna een error-handling middleware met vier argumenten (err, req, res, next) om een consistente response te sturen. In Express 5 worden rejected promises uit handlers automatisch doorgegeven. Voor uncaught exceptions en unhandled rejections: log en herstart het proces in plaats van door te gaan in een onbekende staat.

13. Hoe zou je een REST API-endpoint ontwerpen om een order aan te maken?

Valideer input, authenticeer de gebruiker, controleer rechten, maak de order aan binnen een databasetransactie, retourneer 201 met de nieuwe resource en de locatie ervan, handel duplicaten af met een idempotency key, en retourneer duidelijke fouten met de juiste statuscodes.

14. Hoe authenticeer je gebruikers?

Sessies met cookies, of tokens zoals JWT's. Hash wachtwoorden met een langzaam algoritme zoals bcrypt of argon2. Houd bij JWT's de expiry kort, gebruik refresh tokens zorgvuldig, en sla geen gevoelige data op in het token.

Streams, bestanden en performance

15. Wat zijn streams, en waarom zou je ze gebruiken?

Streams verwerken data in stukjes in plaats van alles in het geheugen te laden. De types zijn readable, writable, duplex en transform. Gebruik ze voor grote bestanden, uploads en downloads.

const fs = require('node:fs');
const { pipeline } = require('node:stream/promises');
const zlib = require('node:zlib');
await pipeline(fs.createReadStream('in.log'), zlib.createGzip(), fs.createWriteStream('in.log.gz'));

16. Wat is backpressure?

Wanneer een writable stream een readable stream niet kan bijhouden, geeft hij de bron een signaal om langzamer te gaan. pipeline en pipe regelen dit voor je. Als je handmatig schrijft, controleer dan de retourwaarde van write() en wacht op het drain-event.

17. Hoe vind je een memory leak?

Houd het geheugengebruik in de gaten over tijd, maak heap-snapshots (Chrome DevTools of --inspect) en vergelijk ze om te zien welke objecten groeien. Veelvoorkomende oorzaken zijn globale caches die nooit verlopen, event listeners die niet worden verwijderd en closures die grote objecten vasthouden.

18. Hoe schaal je een Node.js-applicatie?

Draai meerdere processen met de cluster-module of een process manager, zet ze achter een load balancer, houd de app stateless door sessies naar Redis of een database te verplaatsen, gebruik caching en schaal horizontaal met containers. Verplaats CPU-intensief werk naar workers of aparte services.

19. Hoe profileer je een traag endpoint?

Meet eerst met logs en timings, gebruik dan --prof of --cpu-prof, of een flame graph-tool, om hot functions te vinden. Controleer databasequeries, want de traagheid zit daar vaker dan in JavaScript.

Beveiliging en betrouwbaarheid

20. Wat zijn veelvoorkomende beveiligingsproblemen in Node.js?

Injectie (SQL, NoSQL, command), cross-site scripting, zwakke authenticatie, kwetsbare dependencies, secrets in code, ontbrekende rate limiting en onveilige deserialisatie. Beperk de risico's met inputvalidatie, geparameteriseerde queries, helmet, dependency-audits (npm audit) en het principe van least privilege.

21. Hoe sluit je netjes af?

Stop bij SIGTERM met het accepteren van nieuwe verbindingen, laat lopende requests afronden, sluit databaseverbindingen en sluit dan af, met een timeout als fallback.

process.on('SIGTERM', () => {
  server.close(() => process.exit(0));
});

22. Hoe test je Node.js-code?

Unit tests met een runner zoals de ingebouwde node:test, Jest of Vitest, waarbij je externe calls mockt. Integratietests tegen een testdatabase en HTTP-tests met een tool zoals Supertest. Houd tests snel en onafhankelijk.

Ontwerp en scenario

23. Je API is traag onder belasting. Hoe onderzoek je dat?

Bekijk metrics voor latency en CPU. Als de CPU hoog is op één core, zoek dan naar blokkerende code of zwaar JSON-werk. Als de CPU laag is en de latency hoog, kijk dan naar wachten op de database of andere services. Voeg dan caching, indexen, connection pooling of batching toe, en test opnieuw onder belasting.

24. Hoe zou je een upload-endpoint bouwen voor grote bestanden?

Stream de upload rechtstreeks naar opslag, zoals object storage met een pre-signed URL, in plaats van deze in het geheugen te bufferen. Stel groottelimieten in, valideer het type, scan indien nodig en verwerk het daarna in een achtergrondtaak.

Hoe je je voorbereidt

Schrijf een kleine API met authenticatie, een database en een upload-route, profileer die vervolgens met een load-tool en los één probleem op. Oefen met het tekenen van de event loop en het uitleggen van de output van een klein script zoals hierboven. Bereid één echt verhaal voor over het debuggen van een performance- of betrouwbaarheidsprobleem. Voor coding-rondes kun je onze gids voor de coding interview assistant bekijken, en voor design de system design-gids.

Spreek je antwoorden hardop uit en lees het transcript terug op plekken waar je een term gebruikte zonder die uit te leggen. Volg de regels van de werkgever over AI-tools in elk live interview.

Oefen Node.js sollicitatieantwoorden met YesToTheOffer

Doe een mock technisch sollicitatiegesprek, leg de event loop hardop uit en bekijk achteraf je transcript. 30 gratis minuten, geen abonnement.

iOS & Android — Binnenkort
Bekijk prijzen