Saturday, February 28, 2004
Here are some questions I've been asked in "serious" interviews. Some of them actually had me laughing, some of them saddened me. I can't recall a single interview where I've been challenged, really, or been excited to be there after sitting down.
1. At one interview, I was asked to map out a classical object-oriented design problem in UML. This is the infamous "employee type" problem that a lot of first year C++ students are walked through.
The problem, though, is that it doesn't work in the real world. You can see a fairly technical explanation of why it doesn't work [here].
Being presented with this problem - which I was all too familiar with - scared me. It was my first hint that both the project I was working on was doomed, and the people running it were no different than CS students fresh out of class. The real world, and real world programming problems, can't be reduced to the kinds of UML logic they were trying to apply.
2. "How would you get the distance of an object in OpenGL?".
Man, that opened a can of worms. OpenGL itself doesn't provide any kind of object management. So "an object in OpenGL" means you're already using something on top of OpenGL like Inventor. But for argument's sake, it's say by object we mean "point". That much OpenGL understands. A point in 3D space is defined by it's X, Y, and Z coordinates, with Z being the depth coordinate. Now by asking for the distance, what they really meant was a vector from the "object" to something else, and the length of that vector. Imagine drawing a line between the object and another object, that's your vector. Since they said "the distance of an object", it's probably reasonable to assume they mean the distance from the observer (which in OpenGL is the view frustrum) to the object. Take the point that's the object, the point that's the observer, and find the length of the vector between them. Easy, once you understand the problem.
It turns out that I lost the two interviewers right about at "OpenGL doesn't really have 'objects'...". They had no idea what vector math was, and by the time I finished up with the whiteboard they were staring off into space or looking over the only reading material they had available, my resume. When I said "view frustrum" I swear one of them started scratching himself like I gave him a rash. It was pretty clear that I was being interviewed for a 3D position by people with no 3D experience.
3. "Can we see it?"
On at least two occasions, in interviews I've been asked to provide proprietary code or code I was under a non-disclosure agreement (NDA) on. Before I open my mouth about something like that, I usually have a very good idea of what I can talk about and what I can't. There is one contract that I worked on where I wasn't supposed to even mention I was on it at all, the NDA was that restrictive. In other cases, I'm free to talk about any number of aspects of it, but I certainly could never show someone the code I wrote under contract! How would you feel if I showed the source code for your product to another company? Geez. In my book, "can we see proprietary code you've written" is one of the most inappropriate questions you can be asked, if they know it's proprietary.
[ 2/28/2004 06:10:00 PM ] [