I'm Solomon Duskis, NYC consultant and a Java/J2EE guy. I work at Sungard Consulting Services in NYC. The postings on this site are my own and do not necessarily represent the positions, strategies or opinions of my employer. Solomon is a DZone MVB and is not an employee of DZone and has posted 22 posts at DZone. You can read more from them at their website. View Full User Profile

The "Quick No" in Tech Screening

  • submit to reddit

The goal of a phone screen is to get to a quick "no." That require a deep understanding of the types of what makes a successful developer (or really any other profession) in your environment. In our case, we look for passionate programmers who are looking to develop great systems and be not just willing, but happy to move on to new project. A Quick "no" is meant to make sure that the candidate's time and the interviewer's time are well spent. It's not about the general quality of the candidate, it's about the quality of the potential relationship between the hiring agent (the company) and the candidate. I don't want to waste the candidate's time in a long face-to-face interview that will end in a "no"; I'd rather find out as much as possible early on. A honed screening could be performed with a 10-15 minute chat.

In our case, we look for solid fundamentals. I don't care whether or not you know a particular API. If one can google it, a passionate programmer will find the answer quickly. A passionate programmer has a deep understanding of fundamentals.

Collections are a great way to understand the depth of fundamentals. Most people simply use some of them because they're there, but a passionate programmer will peak under the covers and know how to use them almost without thinking.

Here are some of the "basics" questions we ask:

  1. How a HashMap works (equals()/hashCode(), prime numbers & etc.)
  2. Describe how you can sort a collection
  3. Describe how a Singleton works (the use of "static," "private," "synchronized")

On a face-to-face interview, we'll ask a question that requires looping that should be quick to answer. We'll specify the method signature, so that the candidate is pointed in the right direction. There usually a simple "trick" to it that a passionate programmer will see pretty quickly:

  1. reverse a char[] ("Solomon" should become "nomoloS"... in place)
  2. take a char[] with your name ("Solomon" in my case), and copy the characters forward ("Solomon" becomes "SSolomo" because you can't change the size).

Passionate programmers will have the answer that I'm looking for pretty quickly. They will also describe alternatives... For example, System.arraycopy for the second problem (will that actually work? Passionate programmers will try to figure that out...).

90%+ of the time, those questions will weed out the inappropriate candidates. Hmm.. we really should be doing a coding question before a candidate even comes in. I don't know if those array questions are right for pre-face-to-face interviewing. Perhaps something more generic, like "write and send a snippet of code that you'd like to discuss on the interview."

We're interviewing like crazy these days in NYC. If you have any more suggestions on how to get to a "no" (or "yes") faster, please let me know by email or by comment. I'm looking for more ideas (and of course more candidates...)

From http://www.jroller.com/Solomon/entry/the_quick_no_in_tech

Published at DZone with permission of Solomon Duskis, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Artur Biesiadowski replied on Wed, 2010/05/05 - 12:37pm

For face-to-face, I'm sometimes asking people to reverse single linked list in place. First define very simple node structure (no need for explicit list object, just pointer to first node) and then reverse it without allocating huge array. I'm not only looking at the solution, but the way people are iteratively changing the code on whiteboard when designing it. It is very small thing (5-6 lines probably when you get it right), but goes through many layers of understanding the code and memory structure.  Of course, first 'test' case is to reverse a single element list...

On the other hand, I was recruiting for algorithm heavy/performance critical work, probably mileage may vary if you are looking for people being able to do web pages and hibernate mappings - being too fluent with pointers might be a disadvantage there ;)

Alex(JAlexoid) ... replied on Mon, 2010/05/10 - 12:30pm

For a face-to-face question my personal most favourite is: Describe the most interesting or challenging assignment, project or issue you ever had to work on. (I like to think of myself as a passionate developer, and would talk a long time on this topic, and so would my colleagues that are passionate.)

A passionate developer will be able to answer all and any details of that professional challenge. And you job is to interfere at least 2 times with questions. That will weed out people that have memorised some text.

And if you want an honest and "tells it like it is" developer ask a question about some technology: Why do you like technology X? Why do you like product X? Why did you like working with product X? Why did you like working with technology X?
The one that is honest will say something harsh.

Michael Eric replied on Wed, 2012/09/26 - 4:00pm

hashcode() is one of my favorite questions to ask. A simple question like 'how would you define a hashcode() method for a Person class assuming that the combination of firstname and lastname is unique' is pretty good at quickly determining the level of the developer.

Unfortunately, quite a few developers also use the JDK classes (for example: 1.5 concurrency classes like ConcurrentHashMap and AtomicInteger ) without actually knowing how they work. Passionate developers definitely dig deeper and give a better answer than "It is handled internally".

Getting to no quickly is in everyone's best interest.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.