They ask: "What is ReactDOM and why is it a separate package from React?"
React is renderer-agnostic on purpose: the react package builds a tree of plain description objects (elements), and a renderer decides what to do with them. react-dom is the renderer that commits that tree to the browser DOM; react-native commits it to native views; react-test-renderer to a JSON tree. Splitting them is what lets the same component code target multiple hosts.
Mechanically you mount a tree at a real DOM node. In React 18 that's createRoot(document.getElementById('root')).render(<App />) — the older ReactDOM.render API is deprecated because it can't opt into concurrent features.
import { createRoot } from 'react-dom/client';
createRoot(document.getElementById('root')).render(<App />);
Say it: "react describes the UI, react-dom commits it to the browser — the split is what makes React portable to native, canvas, or test renderers."
Red flag: Calling ReactDOM.render the current API. It still works but is deprecated; the concurrent-capable entry point is createRoot from react-dom/client.