I interview prospective co-ops where I work. These are generally Computer Science majors who have completed a technical ciriculum of at least four 10-week 4-credit classes in computer science, three of those classes in Java, one in C++.
So, when they show up for an interview, I expect they should be able to write some code on a white board. I use a few different programming exercises, one of which is a very slight variation on the FizzBuzz program. How I phrase the description for the program:
Write a program that prints the numbers from 1 to 100. For multiples of three (3) the program should print “Blue” instead of the number. For multiples of five (5) print “Green” instead of the number. For numbers which are multiples of both three (3) and five (5) print “BlueGreen” instead of the number.
Assuming it's a common language I know well enough to read, they are welcome to whatever language they'd like.
The first thing a good share of candidates tend to be tripped up by is remembering what the modulo operator is. Some developers also can't remember what the write/print line method of their favorite language is. Rather comically (to me, a coding dork), I had one candidate use a method he invented called
writeln
, although his program only worked if this "writeln
" method did not append a new line (which is the convention of *ln
methods).Anyhow, this more technical stuff aside, they almost always get tripped up on figuring out that the solution invovles something more than a simple
if
(mod 3 case), else if
(mod 5 case), else
structure. They generally start off with that structure and then get flustered when either they figure out on their own (or I point out) that in some case their program will print both a color and the number or doesn't print out the "BlueGreen" case correctly.For the heck of it, I pulled up a JavaScript Shell and pounded out a solution to time myself. In 65 seconds, I pounded out this:
for (var i = 1; i <= 100; i += 1) {
var res = '';
if (i % 3 == 0)
res += 'Blue';
if (i %5 == 0)
res += 'Green';
print( res == '' ? i : res );
}
Now, it's probably a lot easier to code on a computer than a whiteboard, and being in an interview adds stress and probably decreases how clearly you can think, so I'm not expecting 65 second answers from the applications. But, these Computer Science students pretty regularly fail to be able to correctly complete this really simple exercise at all.
It makes me wonder what they're teaching at my alma mater these days...
(Also, for the record, though pretty much all applications have taken CS 4, the C++ course at RIT for CS majors — and answer "yes" when I ask "so, you understand pointers" — I have yet to find an application that can answer #3 of Joel Spolsky's "Test Your Self" quiz. Not very encouraging.)
No comments:
Post a Comment