Yesterday I had a phone interview for a technical position, and I blew it. I made several rookie mistakes like answering the wrong question. Yeah, pretty bad.
I prepared for a range of technical questions with 3 books, thoroughly studying techniques to solve tough problems. During the last couple of weeks I had revisited trees, stacks, heaps, race conditions, sorting algorithms, mind puzzles, math, bit operations, time and space complexity and whatnot.
After the initial screening questions and setting up my computer, the interviewer asks me this seemingly simple problem pasting it on a shared screen. As the interviewer introduced the problem through the phone, I was already thinking about the time and space complexity of the brute force approach and wondering wether more efficient solutions existed. I thought about similar problems I had seen before and I remembered a few. Yes, I remembered their algorithms, so I could propose mapping this problem to one of those and solving it afterwards. But is it possible to reduce this problem to the least common ancestor? That would be an interesting way to solve it, though I would have to generate a tree and that would probably be an overkill. OK, but there’s this paper I read about solving the range minimum query in linear time on the number of items, so maybe if I somehow convert this to–The interviewer stopped speaking. “She has stopped introducing the problem,” I thought, “And I already have several ideas on how to start, great!”
Then I remembered that in a phone interview you should think aloud, because the interviewer doesn’t know what goes through your mind. So I began to tell her about this and that possible solution, but thinking aloud prevented my mind from thinking in the way it was accustomed to when solving a problem. I had prepared for this, but somehow the real interview was different from thinking aloud in private. I tried to recall the train of thought that went through my mind during the time the problem was being presented, but now it was very cloudy and messy.
I confused several possible solutions that were on my mind as I spoke, and I started to become nervous. This nervousness made me talk more and think less. For a moment I could hear myself babbling as if in autopilot, and it made no sense. After realizing that I had lost my train of thought, I became more and more nervous. The interviewer was probably bewildered listening to this rambling monologue about complexities, algorithms and conversions that made no sense. Then again you are supposed to say what you are thinking, but this couldn’t go on or else I would completely blow it.
So I asked the interviewer for a few seconds to to “rearrange my thoughts.” I tried to recall all the best solutions I had seen before and I couldn’t. I tried to recall a couple of them. There was something about the RMQ… and ordering the set before… nothing. OK, let’s try to recall any. Any one will do. Nothing, I remembered not even one. Besides, I am not talking and I am running out of “time to rearrange my thoughts.” OK, maybe the worst solution will do. At least it yields the correct answer, but it takes O(n^2) time. I couldn’t think of any other solution.
And so I started solving the problem with the brute force approach. This certainly doesn’t make me the most promising SDE, I thought, but at least someone that knows he is approaching the problem with a quadratic time solution. Not that bad. OK, at least this approach is easy. I can start coding this solution without thinking much about it. I have done this a lot of times.
So I coded for about two minutes and, to my horror, after re-reading the last line of the question I realized I was solving the incorrect problem… OMG. I blocked. My mind flashed a BSOD at my face.
After that I tried to save face by starting all over again, but nevertheless I made several mistakes. Not only I hadn’t properly read the question, but my approach had been cloudy, the interviewer hadn’t understand my train of thought, and the solution was buggy and had taken several times the expected time.
And that’s how you blow your technical interview.