When you send data between processes or worker threads in Node, what does that actually cost you?
Strong candidates know every message means serialize, copy, deserialize plus backpressure, and design protocols around ids and transfers, never big payloads.
So nothing travels by reference between processes or workers, it all gets copied. process.send to a child process serializes the message, JSON-style by default, or there's an advanced mode based on structured clone, and writes it over the IPC pipe. postMessage between worker threads structured-clones the value into the receiving thread. Plain data is fine either way, and structured clone also handles Buffers, Maps, Sets, circular references, that kind of thing. The cost grows with the message size, so big payloads get slow and memory-hungry. There are two escape hatches I know of. Transferables move ownership without copying, so an ArrayBuffer or a MessagePort listed in the transfer list detaches on the sender's side and reappears on the receiver's. And SharedArrayBuffer goes further, both sides read and write the same memory and nothing gets copied at all.