Friday, February 19, 2010

Candidates for programming jobs should know their stuff, at a conceptual level: what interviewers can ask, what programmers tell: the "IQ Test"

Tech Republic has a really important blog post Feb. 18 by Justin James, “Hiring a programmer: Ask these questions at an interview”. The link is here.

I can remember the most common interview question back in the 1970s for COBOL programmers: how do you do a binary search? Or, what’s the difference between SEARCH and SEARCH ALL.

The questions are a bit deeper now, and the article is written from the viewpoint that both procedural and OOP may be involved in the job (the bias is toward object oriented).

Yes, you should know the difference between “equality” and “equivalence” (or “value” equality or “instance equality”, a concept which explains why sometimes “remembered” passwords in your browser don’t work). Likewise, “call by value” vs. “call by reference”. In the OOP world you need to know polymorphism, encapsulation, and inheritance. And you need to know about the different concepts in locking. (DB2 refines this further with share, update, and exclusive locks, or with the tricky concept of bind “isolation level, such as repeatable read and cursor stability).

He mentions that some well known software companies interview people by having them play puzzle games (back around 2000 a friend of mine called this the “IQ test”). There are also “whiteboard” oral exam questions, writing pseudocode to solve problems, like reversing an array without a loop. Ask an AP calculus student to write pseudocode for doing integration by partial fractions!

Certification tests, such as those by Brainbench, tend to emphasize detailed knowledge of many programming and design techniques, particularly in the database and SQL area, asking the examinee to predict results, or determine which alternative is most efficient, etc.

No comments: