Getting the Interview Phone Screen Right

Steve - it may need to be inside a class to be a method, but the question does not state a requirement to define the entire class. What Jon wrote is a perfectly valid method signature to stick inside any class (although it probably ought to be static). So actually, yes, he has “written a method”, and you’re just being a wise-ass.

Save those antics for TheDailyWTF.

These are good questions - so long as the interviewer is REALLY just looking for thought process. It doesn’t matter that the candidate knows about grep, it matters that the candidate asks about the tools or environment.

When I interview I tell the candidates to have google ready and I give them a moment to try to google things. To me, it shows more about the candidates’ ability if they can come up with a solution having never seen the facts than one who had the solution memorized.

First of all, I don’t like this inquisition style of interviews.

I’m doing interviews on a very regular basis.
And for me it’s pretty simple.

Junior - all I want to know is:
a) can you say “I don’t know … help me”?

the same as junior + “Yes. I’m able to understand partial problems and write specification for them”

I can do the rest

…I don’t care what people can or can’t remember. All I want to know is how they think, what are the reactions on unpredictable situations and whether they can work in team.

What’s so important on writing huge regexes from scratch … or finding bugs in printed code?


Most of the things you said on this article are correct. But the most important thing is that “Duh-ness” of the interviewer. Recently at an interview, I was asked “I have an insanely huge log that contains IP and timestamp of all the people who logged in to my site, I want to find the first one who never returned”. I gave answer ‘A’ which was doing o(n) using HashMap. The interviewer wanted answer ‘B’ which was doing o(n) using BitMap array. I was rejected because I did not give exact answer that the interviewer knew.
Also, I was asked a question "Would you write multi-threaded programs on a single-processor system ? " - The question itself is wrong and shows the level of the interviewer. I said so to the interviewer who had a fake US accent.
Needless to say that I was rejected both the times.

Everyone that says this blog is a joke should think twice before rejecting it… The blog could be very useful for a certain type of role you’re hiring for.

I use almost 1:1 the same sequence in my interviews. If you’re a developer for an embedded system, low level stuff, the number 32768 should ring a bell. If not, OK, next question. Knowing that a C string has trouble, a strlen in a loop might be slow, etc. Bitshifting (why?), optimizing, code reading/explaining in an interview, it all makes sense.

Of course, the willingness to grow is fine, but not for 40 yo programmers. Come on, don’t tell me you forgot how to to resolve a circular dependency in class definitions.

Somehow developers should not me coding monkeys, they should know how to approach a problem on a per situation basis. That’s why scripting, knowing bits and bytes, graph theory, it couls all come together.

People have laughed me in the face: haha, a string reversion quaestion, duh. And then he f*cked up the answers, the 8 lines of code was buggy and badly explained. Yeah, I did C# recently. As if you would ever forget to code in C/++…

Thanks for supporting me thinking I do great interviews :slight_smile:

PS the truth is always in the explanation… Why do you think this is faster? Why would you ++i instead of i++? Why is code size not important? How to maintain this code? Why…

Just came across this chestnut. I understand the need to evaluate an applicant, but I’m not sure these requirements make for a completely fair assessment. I’ve worked with file IO plenty–just not recently. I’ve worked with regex plenty–just not recently. I’ve worked with bit manipulation plenty–just not recently. In my mind the important thing is understanding that these things exist so that you know how to solve the problem. A quick Google search will get you there. We’re programming on computers after all–we should get to use them. Let the applicants use an IDE at least for the love of god. Recalling syntax requires recent use. If you’re currently working on a project that heavily relies on these concepts, you’ll have no problem recalling them, but not recalling regex syntax says nothing about your abilities as a programmer or your work ethic.

I actually solved the very basic coding tasks, here is how I did it:

This article, nearly singlehandedly, demoralized me enough to keep me out of the field for 10 years. It should not have been written, and it should not be endorsed.

First, there is the same problem every such article has: The hypothetical incompetent people you are imagining are also the people who will not read or pay attention to this or anything like it. The people who do care and want to improve are likely to read this and be discouraged, if only by the contempt radiating their way.

For example: Can you list the entire taxonomy of the animal kingdom, from species on up, solely from memory? If you can, was it because you Googled it after seeing it mentioned “just to double-check” that you had it right? Be honest.

The answer was most likely no, because you’re not a zoologist or middle school student. (If you are a middle school student, I’m sorry you had to read this.) However, this is what he considers “common sense.” I defy anyone to tell me how remembering this specific thing from middle school life science is a reflection of one’s programming skill or a predictor of performance at any job not involving biology.

These examples abound. Many of the OOP terms in his list of things one should know cold OR ELSE are either not used or not prominent in many popular languages (method overloading, for instance). I understand that the interviews he is doing are specifically for Java and/or C++ coders, but that’s not how the list is presented. It is presented as “the bare basics of OO,” which it is not. The same applies to data structures. In many common languages, the objects they call arrays are assumed to be dynamic size by default. Is it “inexcusable” for someone to call such a thing an array? According to this post, it is. And so on.

A lot of things seem to be inexcusable to him. The author mentions that he is rusty in math and berates himself for this inexcusable thing (at least he’s consistent in that). As it happens, I’m less rusty in math. I hereby excuse him, and everyone else, for not knowing offhand how to prove the completeness of real numbers or what the Peano axioms are (similar to the big O examples, in that they underpin things you use every day and you learn them sophomore or junior year of undergrad). It doesn’t make you a failure to not know these things, and it doesn’t mean you can’t handle the everyday math you’ll be doing at your job.

On top of all this, the article is self-contradicting. Toward the end he mentions that most programmers will “fail utterly” at one or more of these things. And yet they manage to be programmers. How things get successfully coded despite most of the field supposedly being utter failures is an exercise left to the reader.

1 Like

Are you sure you read all the articles? Steve’s is here:

Mine is basically a summary of what he wrote. Steve’s much more hardcore than me, and is applicable if you want to work at Amazon. Note that Steve isn’t at Amazon or Google any more… perhaps this one is more salient: