Насколько актуален виртуальный DOM с учетом современных фреймворков как Svelte
Что проверяют
Отличаете ли вы инженерный выбор от моды. Вопрос провокационный: интервьюер ждёт не ответа «виртуальный DOM устарел» или «он самый быстрый», а понимания, какую задачу он решает, чем за него платят и почему часть экосистемы ушла в сторону компиляции и сигналов.
Как отвечать
Начните с честной формулировки: виртуальный DOM никогда не был про рекорды скорости. Он про декларативную модель, где интерфейс описывается как функция состояния, а библиотека сама вычисляет разницу между описаниями и трогает только изменившиеся узлы. Это дешевле, чем перерисовывать всё, и дороже, чем точечно обновить один текстовый узел, зато код пишется одинаково для любого случая, а сам механизм отвязан от браузера, поэтому поверх него живут другие рендереры.
Дальше про альтернативы. Svelte переносит работу на этап компиляции: он знает, какая переменная влияет на какой узел, и генерирует прямые обновления. Solid и современная реактивность на сигналах дают то же самое без шага сравнения деревьев. Vue остаётся на виртуальном DOM, но подсказывает ему на компиляции, какие части шаблона статичны.
Завершите практикой: в живых приложениях в узкое место упирается не сравнение деревьев, а размер бандла, сеть, тяжёлые вычисления в рендере и перерасчёт раскладки. Виртуальный DOM актуален ровно настолько, насколько удобна экосистема вокруг него, и выбор фреймворка почти никогда не делается по этому признаку.
Где спотыкаются
Повторяют старый маркетинговый тезис, что виртуальный DOM быстрее прямых операций с DOM. Быстрее он только наивной полной перерисовки, а аккуратному точечному обновлению всегда проигрывает, потому что это дополнительный слой работы поверх него.
Говорят, что у Svelte нет рантайма вовсе. Рантайм есть, просто маленький, и сравнивать размеры надо на реальном приложении: у компилируемого подхода вес растёт вместе с числом компонентов, у библиотечного есть постоянная база и более пологий рост.
Смешивают понятия. Виртуальный DOM это структура данных, согласование деревьев это алгоритм сравнения, а конкурентный рендеринг это планировщик задач. Кандидат, который валит всё в одно слово, обычно не сможет объяснить и то, зачем в списках нужны ключи.