Что такое DOM и BOM и для чего они нужны
Что проверяют
Различаете ли вы модель документа и модель браузера, и понимаете ли, что и то и другое не часть языка JavaScript.
Как отвечать
DOM это объектное представление документа: дерево узлов, которое браузер строит из HTML. Через него страница читается и меняется: поиск элементов, создание и удаление узлов, атрибуты, стили, события. Точка входа document.
BOM это объекты самого браузера, не связанные с содержимым страницы: window (корень и глобальный объект), location (адрес), history (история), navigator (сведения о браузере), screen, а также setTimeout, alert, localStorage. Стандартизирован он куда слабее, чем DOM.
Важная мысль: ни то ни другое не входит в сам язык. JavaScript это ECMAScript, а DOM и BOM это API окружения. Поэтому в Node.js их нет, и там же становится понятно, почему document в серверном рендере недоступен.
Практическое, что спрашивают следом: обращение к DOM дорогое, особенно чтение геометрии (offsetHeight, getBoundingClientRect) сразу после записи, потому что браузер вынужден пересчитать раскладку. Отсюда правило группировать чтения и записи, а в React вообще не трогать DOM напрямую без нужды.
Где спотыкаются
Считают DOM частью JavaScript.
Не могут назвать ни одного объекта BOM, кроме window.
Не знают, почему обращение к document ломает серверный рендер.
Не подозревают о принудительном пересчёте раскладки и удивляются тормозам при массовых изменениях.