Hello, Michael Borgwardt !
You wrote:
i> Now, knowing what a B-tree is, its basic properties along with
a general
idea of how it works, that's something that might make sense in an
interview - and you just failed that part...
I disagree with that approach to an interview. I don't view an
interview as a test that you pass or fail. I liken it to a
weather radar. You don't use a weather radar to just know whether
or notitis raining. You are trying to find out where itis raining
and how strongly. When I am interviewing I am looking for certain
qualities and knowledge and trying to rate on a scale of 1-10 in
each ofthose areas. There is no pass/fail.
One of my problems with the problem that started this thread is
that it seems to test too many things at once and seems to call
for knowing things by rote. I like to have questions where they
don't just recite from memory but have to think and come up with
an algorithm. I don't care so much that they came up with the
right answer, but their thought process.
So it is important to decide what qualities are important to you
and come up with ways to assess each of them. In my case I am
interviewing for embedded C/C++ developers (and we are currently
hiring BTW) so my criteria will be different than yours.
One of the best ways I have found for assessing familiarity with
a language is to create a piece of code that contains a number of
errors that range from simple typos, to things that confuse a
newbie, to logic errors, to esoteric and things that are not best
practices. The goal ofthe interviewee is to find as manyerrors as
possible. It is good to have things that aren't errors but that a
newbie might think are errors. For example something likethe
following on Java:
List l = new ArrayList();
If theyreported that as an error that would be a good indicator
and I might actually probe to see why they think it is an error
and ask other questions to gauge their knowledge of the type
system.
This sort of test helps judge how quickly they can break down and
understand a program.