Позиция для интервью
ESM — стандарт JS и лучший default для нового кода (браузер, Node, бандлеры): живые bindings, статический анализ, import(), top-level await.
CommonJS — историческая модель Node (require / module.exports), всё ещё в легаси-пакетах.
Interop
Зависит от runtime/версии. В современном Node ESM может импортировать CJS; require() грузит только eligible синхронные ESM без top-level await. Формат задавайте явно: расширения, "type", exports. Тестируйте packed artifact.
AMD сегодня — в основном история/легаси.
Итог: новый код → ESM; CJS знать для экосистемы и миграций; границы форматов документируйте.