Where does a JS frontend developer really need to have heard of linked lists?
And even when it's thrown in your face like listOf() vs arrayOf() in Kotlin or [] vs '() in Clojure, one is the conventional default that you use most of the time anyways.
That said, someone who doesn't know what a linked list may also be lacking experience with many other things that you would expect from a candidate, but it's no mystery how someone can go far without really encountering one.
Some of it may be a terminology problem as well - frontend devs may not have met "linked lists" but what's the difference between a doubly linked list and a straight series of nested objects where no object has more than one child?
What do you mean by "know how Javascript works"?
I'm really curious if you could point to a real world example where a custom data structure is needed, where it's not written for performance critical reasons?
edit: front end devs.. LOL, you hold dear that delusion :-)
The prejudice that I see in this thread is that: Only people who already know what a linked list is can call themselves a developer. A developer will learn if she needs to what a linked list is. If tasked with something requiring one a developer will simply learn the theory behind linked lists and be able to execute it. In reality however, they probably won't because most day-to-day tasks don't.
I don't remember the last time I had a queue so large and in such a hot loop that it would matter, for example. And it was a channel.
Lately it's been browser-side code in an interactive online game that has gotten me to think about data access patterns again so that it performs well on slow phones, but that's just not what most people are working on.
We have this whole belabored HN meme where people complain how the internet is for documents, not applications. Do people in these comments really think generating those documents involves heavy data access patterns?
And then "being an experienced app builder" you decide to create Electron.. and now I have to use Electron applications which are productive and necessary (VS Code) but are frustrating like hell on anything but recent hardware because some moron somewhere doesn't know when to use linked lists instead of arrays.
That's why these 'technical interviews' are so ridiculous, because they test theoretical abilities rather than programming abilities.
If you ignore the theory, you end up with sub-optimal software that only kinda works (who cares about studying the theory and actually verifying those pesky edge cases) and is slower than it should be (who cares about advanced data structures, just use arrays and hash tables everywhere).
...literally any time you are performing a computation on a collection of items and care even the least bit about performance?
It sounds like your bar for what makes "excellent code" simply excludes performance issues completely. That's fine if you're talking about scrappy startup devs who move from MVP to MVP. But when it comes time to turn an MVP into an honest-to-goodness P, you can't totally ignore the efficiency of your code. And you can't write efficient code without understanding the basic strengths and weaknesses of the data structures your programming language implements.