No not really, most professional developers, even using languages with little to no supporting libraries/APIs rarely, if ever, have to write code to reverse a linked list. Of course, given the question in an interview a decent programmer should be able to reason their way through the problem. This is not what I am debating.
As a curiosity, I might wish to understand the inner workings of an STL map container, but 9 times out of 10 in a professional environment it is more appropriate that I understand how it should be used, it's pro's and con's and all it's supporting functions. However, even the most novice of programmers can find those answers out with a quick search online.
I guess I just don't like questions where you are required to remember facts you no longer use rather than reason your way through problems you might encounter in a real job.
Here's the thing -- I (and a great many people I've worked with, interviewed, and was interviewed by) don't believe things like reversing a linked list are facts. They're basic skills that are either present or absent.
If you aren't able to do such basic things correctly on the spot, I simply can't trust you to check in complex/highly concurrent/etc code that works. As an IC developer I don't want to deal with your code or clean up your mistakes. As a manager, I can't trust you to write code unsupervised.
This quote in particular would be a massive red flag and probably the end of an interview:
"it is more appropriate that I understand how it should be used, it's pro's and con's and all it's supporting functions". In most companies, what's being sought is not someone who can just use the tools as appropriate. It's someone who can develop new tools and solve problems for which there isn't a pre-canned answer available. If you don't know how to solve the problems for which trivial answers exist, how can anyone expect you to be able to reason through truly novel and difficult problems.
The sort of attitude you're espousing is perfectly fine for large ERP/custom corporate app/corporate website/etc programming work. It's just not what people in the valley are doing.
I understand what you're saying but feel we're comparing different things. Yes, in an interview saying the thing you quoted would obviously be a red flag, and something I would never say. I understand the need in interviews to impress using your problem solving skills.
However, I believe that in your day to day job as a programmer, that quote is more appropriate - that you understand how particular data structures should be used rather than it's inner workings.
In this case, if we assume that the reason you're being interviewed is so you can do well at the day to day stuff, then my quote makes more sense.
I get you though; you want someone who can solve many new problems but it highly unreasonable to put a programmer in an unrealistic situation like an interview and expect them to perform just as well as they would on the job.
Unfortunately I have no answer on how to improve the interview process but it still bothers me that a better way hasn't been found.
Not many people even use linked lists anymore anyways, unless they are programming low-level things and even then it is often more efficient to use a growable array, something like List<T> in .net or vector in C++.
Reversing a linked list is not about how linked lists work. It is a very simple question which verifies that a person knows what the pointers are and how to use them, can write simple loops which manipulate pointers and can handle simple things such as 1 element lists, 0 element lists etc.
I guess I just don't like questions where you are required to remember facts you no longer use rather than reason your way through problems you might encounter in a real job.