Что можно считать глубокими знаниями в js?
Немного дополню, чтобы новички не пугались. А то страшилок много о том, что надо знать все, хотя в реальности, тех кто действительно "знает все" можно пересчитать по пальцам:
Как работает браузер - можно знать лишь в общих чертах, для общего развития. В повседневной жизни это в 99% случаев не нужно. Браузер предоставляет нам API и мы его используем. То как оно устроено внутри пусть остается инкапсулировано внутри.
Как работает V8 - опять же, достаточно общего представлени об event loop. Все остальное пусть остается скрыто и используется через API.
Оптимизация кода под браузерные движки - в большинстве случаев вообще не надо.
Утечки памяти - если умышленно не стрелять себе в ногу, то тоже никаких проблем с этим не будет.
Написание быстрого кода - практически не нужно (он и так будет достаточно быстрый). Лучше сосредоточиться над написанием читаемого, тестируемого и поддерживаемого кода.
К общему списку еще можно добавить паттерны проектирования. Это будет намного полезней, чем всякие техники спичечной оптимизации)
Я думаю, опыт работы минимум 2 года + знания современных библиотек и фреймворков, возможность самому создавать их.
Ну и иметь парочку проектов не мешало бы.