Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does the fork method in Node.js do?
It creates a new child process that runs a separate Node.js script. This allows running code in parallel without blocking the main program.
Click to reveal answer
beginner
How do parent and child processes communicate when using fork?
They communicate via a built-in IPC channel. Parent uses child.send() and child.on('message'); child uses process.send() and process.on('message').
Click to reveal answer
intermediate
What is a common use case for using fork in Node.js?
To run CPU-heavy tasks or separate workloads in parallel without blocking the main event loop, improving performance and responsiveness.
Click to reveal answer
beginner
Which module do you need to import to use <code>fork</code> in Node.js?
You need to import the <code>child_process</code> module using <code>const { fork } = require('child_process');</code>.
Click to reveal answer
intermediate
What happens if the child process created by fork exits unexpectedly?
The parent process can listen for the 'exit' or 'close' events on the child process object to handle cleanup or restart the child.
Click to reveal answer
What does fork return in Node.js?
AA Promise
BA boolean indicating success
CA string with the child process ID
DA ChildProcess object
✗ Incorrect
fork returns a ChildProcess object that represents the new child process.
Which method is used to send a message from the parent to the child process?
Achild.send()
Bprocess.send()
Cchild.emit()
Dprocess.emit()
✗ Incorrect
The parent uses child.send() to send messages to the child process.
How does the child process listen for messages from the parent?
Aprocess.receive('message', callback)
Bchild.on('message', callback)
Cprocess.on('message', callback)
Dchild.receive('message', callback)
✗ Incorrect
The child listens on its own process object for 'message' events.
Which module must be imported to use fork?
Aprocess
Bchild_process
Ccluster
Dos
✗ Incorrect
fork is part of the child_process module.
What is a key benefit of using fork over exec or spawn?
ABuilt-in communication channel between parent and child
BRuns shell commands directly
CConsumes less memory
DAutomatically restarts on failure
✗ Incorrect
fork creates a Node.js child process with a communication channel, unlike exec or spawn.
Explain how to create a child process using fork and how the parent and child communicate.
Think about the steps to start and talk between processes.
You got /5 concepts.
Describe a scenario where using fork improves a Node.js application's performance.
Consider tasks that slow down the main program.
You got /5 concepts.
Practice
(1/5)
1. What does the fork method in Node.js do?
easy
A. It merges two running processes into one.
B. It pauses the current process for a set time.
C. It creates a new Node.js process to run a separate script.
D. It stops the current process immediately.
Solution
Step 1: Understand the purpose of fork
The fork method is used to create a new child process that runs a separate Node.js script independently.
Step 2: Compare options with the definition
Only It creates a new Node.js process to run a separate script. correctly describes this behavior. Other options describe unrelated actions like pausing, merging, or stopping processes.
Final Answer:
It creates a new Node.js process to run a separate script. -> Option C
Quick Check:
fork creates child process = C [OK]
Hint: Remember: fork means start a new Node.js process [OK]
Common Mistakes:
Thinking fork pauses or merges processes
Confusing fork with setTimeout or kill
Assuming fork runs code in the same process
2. Which of the following is the correct way to import and use fork from the child_process module in Node.js?
easy
A. const fork = require('child_process').fork();
B. const { fork } = require('child_process');
C. import fork from 'child_process';
D. const fork = require('child_process').Fork;
Solution
Step 1: Recall correct import syntax for fork
In Node.js CommonJS, fork is a named export from child_process, so we use destructuring: const { fork } = require('child_process');
Step 2: Analyze each option
const fork = require('child_process').fork(); calls fork() immediately, which is incorrect. import fork from 'child_process'; uses ES module syntax without proper setup. const fork = require('child_process').fork; assigns the function but misses destructuring. const { fork } = require('child_process'); is correct.
Final Answer:
const { fork } = require('child_process'); -> Option B
Quick Check:
Destructure fork from child_process = A [OK]
Hint: Use curly braces to import fork: const { fork } = require(...) [OK]
Common Mistakes:
Calling fork() during import
Using ES module import without config
Not destructuring fork from module
3. What will be the output of this Node.js code snippet?
A. Error because child.js must listen for messages before parent sends.
B. No error; code works fine.
C. Error because fork requires a callback function.
D. Error because child.send is not a function.
Solution
Step 1: Check message handling in child.js
If child.js does not listen for messages, sending messages from parent has no effect and may cause unexpected behavior.
Step 2: Fix by adding message listener in child.js
Child script should have process.on('message', (msg) => { ... }) to handle incoming messages properly.
Final Answer:
Error because child.js must listen for messages before parent sends. -> Option A
Quick Check:
Child must listen for messages = A [OK]
Hint: Child must handle messages before parent sends [OK]
Common Mistakes:
Assuming fork needs callback
Thinking child.send is undefined
Ignoring child.js message listener
5. You want to run two separate scripts worker1.js and worker2.js in parallel using fork. You also want to collect their results and print "All done" only after both finish. Which approach correctly achieves this?
hard
A. Fork both scripts, listen for 'exit' events on both, then print after both exit.
B. Fork one script, then fork the second inside the first child's 'exit' event.
C. Fork both scripts and print "All done" immediately after forking.
D. Use exec instead of fork to run scripts sequentially.
Solution
Step 1: Understand parallel execution with fork
Forking both scripts starts them in parallel. To know when both finish, listen for their 'exit' events.
Step 2: Wait for both exit events before printing
Track both exits with counters or flags, then print "All done" only after both have exited.
Final Answer:
Fork both scripts, listen for 'exit' events on both, then print after both exit. -> Option A
Quick Check:
Wait for both exits before printing = B [OK]
Hint: Use 'exit' events on both children to sync completion [OK]