Why Reversing a String is a Bad Interview Question
I was recently blocked from an intermediate C#/C++ position because I didn't answer the following question correctly: how do you reverse a string?
The reason I am posting about this rather embarassing experience, is because people conducting interviews are going around telling themselves that failure to answer a simple algorithmic question automatically makes the candidate an idiot.
This comment to a blog post called "The book that is indirectly responsible for me getting my new job:
While I definitely agree that algorithmic questions alone are not the best way to judge a candidate, I have to say, even some simple algorithm questions are well worth asking, because they weed out a whole boatload of idiots right off the bat.
Well apparently I am one of idiots on the boat. So here is what happens to me when I get asked to write a string reversal. Completely out of context I would write:
for (int i=0; j = s.count - 1;
Them: Please write an algorithm to reverse a string on the white-board in C# or C++.
Me: Umm... I guess I'll choose C#. I forget does C# have reverse string API? Pretend I am typing intellisense just to check.
T: So umm ... uhhhh ... (thinking about what kind of constraints I should apply, should I do it with one index variable or two, a for loop, or a while loop, or maybe a recursive algorithm, in place, or create a new one, god why can't I just write "rev" like I do in Cat, or "nil [cons] fold".