Подходит ли JavaScript для структур данных и алгоритмов?
Да, особенно если вы целитесь в роли во фронтенде или фулстеке, где собеседование будет именно на нём. Три особенности стоит узнать заранее: встроенных кучи и очереди нет, sort() сравнивает элементы как строки, если не передать компаратор, а каждое число хранится как 64-битное число с плавающей точкой, поэтому целым числам больше 2^53 нужен BigInt.
Есть ли в JavaScript встроенная куча или очередь с приоритетом?
Нет. У вас есть Array, Map, Set и их слабые (weak) варианты, и всё. На собеседовании вы либо пишете небольшую двоичную кучу, строк на тридцать, либо говорите, что воспользовались бы ею, и называете стоимость операций; в обоих случаях её нужно хоть раз написать заранее. На этом пути это происходит на втором шаге.
Почему [10, 9, 1].sort() возвращает [1, 10, 9]?
Потому что без компаратора Array.prototype.sort превращает элементы в строки и сравнивает их в порядке UTF-16, а '10' идёт раньше '9'. Числа сортируйте так: nums.sort((a, b) => a - b). Это первый баг, с которым сталкивается большинство, когда начинает писать код сортировки на JavaScript.
Спрашивают ли на фронтенд-собеседованиях структуры данных и алгоритмы?
Во многих крупных компаниях да: обычно один-два раунда на массивы, хеш-таблицы, деревья и обход графов, на JavaScript, помимо раундов по интерфейсу и проектированию систем. Небольшие компании больше опираются на практические задания. В любом случае рабочий ответ от быстрого отличает знание того, что поиск в Map выполняется за константное время, а вложенный цикл по двум спискам так не работает.
Какие курсы этого пути не преподаются на JavaScript?
Три: динамическое программирование и серия по интервью на Python преподаются на Python, а битовые операции на C++. Они перечислены после шагов, каждый со ссылкой, которая открывает курс на его собственном языке. В JavaScript те же битовые операторы, плюс >>>, но применяются они к 32-битным целым числам, о чём стоит помнить, когда переносите трюк.
Нужно ли знать JavaScript, прежде чем начинать этот путь?
Как минимум функции, массивы, объекты и классы. Если это для вас новое, курс JavaScript от Coddy сначала бесплатно разберёт эти темы, а этот путь начинается там, где он заканчивается.