The point of the phone screen is not for the candidate to drone on about what theyve done. The interviewer should push them out of their comfort zone a bit and ask themrelatedquestions about things they havent seen or done before. Ideally, you want to know how this person will react when they face something new, such asyourcodebase.
Indoor enthusiast. Co-founder of Stack Overflow and Discourse. Disclaimer: I have no idea what Im talking about. Find me here:
Steve starts by noting two critical mistakes that phone screeners should do their best to avoid:
Write function to compute Nth fibonacci number.
As Steve says,Computers dont have ten fingers, they have one. So people need to know this stuff.You shouldnt be treated to an uncomfortable silence after asking a candidate what 2^16 is; its a special number. They should know it. Similarly, they should know the fundamentals of AND, OR, NOT and XOR– and how a bitwise AND differs from a logical AND. You might even ask about signed vs. unsigned, and why bit-shifting operations might be important. They should be able to explain why the old programmers joke, why do programmers think Oct 31 and Dec 25 are the same day? is funny.
Candidates who only know one particular language or programming environment, and protest complete ignorance of everything else, are a giant red warning flag.
Good candidates for the coding problem are verifiably simple, with basic loops or recursion and perhaps a little formatted output or file I/O. All we want to know is whether they really do know how to program or not. Steves article predates it, but Id be remiss if I didnt mentionWhy Cant Programmers.. Program?here. The FizzBuzz problem is quite similar, and its shocking how often interviewees cant do it. Its a bit hard to comprehend, like a potential truck driver somehow not being able to find the gas pedal or shift gears.
Please understand:what Im looking for here is a total vacuum in one of these areas.Its OK if they struggle a little and then figure it out. Its OK if they need some minor hints or prompting. I dont mind if theyre rusty or slow. What youre looking for is candidates who are utterly clueless, or horribly confused, about the area in question.
What are some options for implementing a priority queue?
When would you use a linked list vs. a vector?
2)OO design.The candidate has to define basic OO concepts, and come up with classes to model a simple problem.
Describe a function that takes an int value, and returns true if the bit pattern of that int value is the same if you reverse it (i.e. its a palindrome); i.e.boolean isPalindrome(int x)
Design an OO representation to model HTML.
Write a function to reverse a string.
In an effort to make life simpler for phone screeners, Ive put together this list of Five Essential Questions that you need to ask during an SDE screen. They wont guarantee that your candidate will be great, but they will help eliminate a huge number of candidates who are slipping through our process today.
Create a class design to represent a filesystem.
The best phone screen article youll ever find is Steve YeggesFive Essential Phone-Screen Questions, another gift to us from Steves stint at Amazon.
The job market for software developers is hot. This is great news for programmers, but it makes the interview process challenging for potential employers. A reader recently wrote me expressing some concern about the interview process:
1)Coding.The candidate has to write some simple code, with correct syntax, in C, C++, or Java.
5)Bits and bytes.The candidate has to answer simple questions about bits, bytes, and binary numbers.
Of course, youll want to modify this process to reflect the realities at your shop– so I encourage you toread the entire article. But Steve does provide some examples to get you started:
Lets say youre on my team, and we have to identify the pages having probable U.S. phone numbers in them. To simplify the problem slightly, assume we have 50,000 HTML files in a Unix directory tree, under a directory called /website. We have 2 days to get a list of file paths to the editorial staff. You need to give me a list of the .html files in this directory tree that appear to contain phone numbers in the following two formats: (xxx) xxx-xxxx and xxx-xxx-xxxx.
3)Scripting and regexes.The candidate has to describe how to find the phone numbers in 50,000 HTML pages.
Write a function that sums up integers from a text file, one int per line.
Can you implement a Map with a tree? What about with a list?
Coding Horror has been continuously published since 2004
Whats the worst-case insertion performance of a hashtable? Of a binary tree?
Design a deck of cards that can be used for different card game applications.
Performing a thorough, detailed phone screen is a lot of work. But its worth it. Every candidate eliminated through the phone screen saves at least 8 man-hours of time that would have been wasted by everyone in a hands-on test. Each time an unqualified candidate makes it to the hands-on test, you should be asking yourself–how could we have eliminated this candidate in the phone screen?
Find the largest int value in an int array.
Tell me how to test whether the high-order bit is set in a byte.
The interviewer should do most of the talking, guiding the conversation along until theyre satisfied the candidate knows the answers to the questions (or has given up).
4)Data structures.The candidate has to demonstrate basic knowledge of the most common data structures.
Were not saying anything about the pros and cons of OO design here, nor are we asking for a comprehensive, low-level OO design. These questions are here to determine whether candidates are familiar with the basic principles of OO, and more importantly, whether the candidate can produce a reasonable-sounding OO solution. Were looking for understanding of the basic principles, as described inthe Monopoly Interview.
What are some really common data structures, e.g. injava.util?
You mention Vertigo requiringa code sample, then a phone screening, then a hands-on test in the face-to-face. We have a very similar process, but somehow a large percentage of the candidates who make it to the hands-on test are very poor and should have been eliminated at step 1 or 2. The signal to noise ratio is terrible. It costs a great deal to spend so much time doing face-to-face interviews with people who often should not be developers in the first place. I am curious how much light you might be able to shed on the specifics of your requirements on candidates. What part of the process is the most effective in separating the cream, how and why?
It isvery expensive to get the phone screen wrong– a giant waste of time for everyone involved.
Write a function to count all the bits in an int value; e.g. the function with the signatureint countBits(int x)
Model the Animal kingdom as a class system, for use in a Virtual Zoo program.
How do you print out the nodes of a tree in level-order (i.e. first level, then 2nd level, then 3rd level, etc.)
Format an RGB value (three 1-byte numbers) as a 6-digit hexadecimal string.
Write function to print the odd numbers from 1 to 99.
A candidate should be able to demonstrate a basic understanding of the most common data structures. More specifically, the big ones like arrays, vectors, linked lists, hashtables, trees, and graphs. They should also know the fundamentals of big-O algorithmic complexity: constant, logarithmic, linear, polynomial, exponential, and factorial. If they cant, thats a huge warning flag.
This is an interesting one. Steve says 25% to 35% of all software development engineer candidates cannot solve this problem at all– even with lots of hints and given the entire interview hour. What were looking for is a general reluctance to reinvent the wheel, and some familiarity with scripting languages and regular expressions. To me, this question indicates whether a developer will spend days doing programming work that he or she could have neatly avoided with, perhaps, a quick web search and some existing code thats already out there.
Last year my team had to remove all the phone numbers from 50,000 Amazon web page templates, since many of the numbers were no longer in service, and we also wanted to route all customer contacts through a single page.
Print out the grade-school multiplication table up to 12×12.
Logo image © 1993 Steven C. McConnell
Dont let the candidate drive the interview.
How would you solve this problem? Keep in mind our team is on a short (2-day) timeline.