Some companies don't want a decade of writing crud apps.
Some companies don't want a decade of writing crud apps.
Not every company wants someone who views every problem as a nail to hit with a CS[1-4]01 hammer.
There are positions where novel applications of known algorithms are required for which no existing implementation exists and there are research positions for generating new algorithms. These positions together comprise a tiny fraction of intellectually challenging software development (and an even smaller fraction when your pejorative "CRUD" applications are considered). I'd guess outside of these two contexts and school the need to understand "the fundamentals" well enough to have them "deeply ingrained" is smaller still.
(after all, this is "fundamentals", right?)
The choice of which "fundamentals" to test on is entirely in the hands of the interviewer, and for sake of ease seems to have converged on pop-quiz-style problems which do not test knowledge of "fundamentals" but instead test ability to snap-recall things that -- let's be honest -- don't get directly used a lot in day-to-day programming. How many working programmers honestly write graph or tree structures from scratch on a daily basis? I don't. If I need something basic I use a library -- its implementation is likely to be more correct and more robust than anything I'm likely to produce quickly from scratch.
Which means this approach biases against people with experience of day-to-day programming, and in favor of inexperienced recent college graduates who've been regurgitating this information in exams. Which in turn means it's achieving the opposite of what you claim it's meant to achieve. I don't see how that's defensible, but for some reason people chant FUNDAMENTALS! FUNDAMENTALS! FUNDAMENTALS! Ballmer-style whenever the topic comes up.
See also this lovely piece published recently: https://medium.freecodecamp.com/welcome-to-the-software-inte...