When you hire to fill a position, all this goes out the window the applicant goes into the hiring lottery pool to maybe get an interview, and then the traditional "You could totally goog this IRL, but I'm going to hire you based off your memory" type of hiring.
Also, for trivial algorithms and data structures, mind blanking is a potentially bad sign. Like, if you cannot explain the idea of garbage collection (not necessarily implementation details), then I gotta question your understanding of your environment.
* edit: please stop asking people to pay you to write software. Keep writing software on your own until such elementary ideas such as linked lists and binary trees are core to your understanding, then apply again.
Maybe the problems your companies have worked on did. That's fine. Don't go telling people to "stop asking people to pay you to write software" just because they don't know how to use or write a binary tree, though.
I agree with you that I wouldn't hire someone who doesn't understand linked lists, but I still think your statement is too harsh for that situation as well.
"Good question, while I think about that, can I give you an interesting brain-teaser from my last interview?"
Figuring out if the tech lead who'll manage you is a jerk is a major task in being interviewed.
For early- to mid-career developers, definitely. But I wouldn't hire a fixer-upper architect (or systems specialist) then turn him loose on business-critical parts of my system. That's not to say you can't hire an architect for her big upside, but you'd want someone to collaborate on important decisions until she's proven herself capable and trustworthy.
However, saying personality traits are much more important doesn't reduce the value of past experiences.