Interview questions

Flipping burgers

Rate yourself with language X

It's hard to answer because there are no real point of reference given. What is the rating comparing against? I think that most of the time, interviewers see this as an open question without necessarily telling you so. They want you to explain why and how you rate yourself more than the rating itself.

For instance, if we're talking lexical knowledge of C++, I'd give myself a 8/10 without google and 10/10 with google. In other words, I believe to have 10/10 for "functional" use of the language (I make things happen as long as I have the resources to search for what I don't know).


Design Patterns

I usually don't remember the name of the design patterns I use in code. That's the way I am! I remember context and concepts but have a hard time with naming. That's why I have a hard time remembering people's names but never have any problems remembering ideas and events. That's not so bad unless you're in an interview. Because of time constraints, some interviewers need to be able to refer to specific design patterns so that they have something to talk about.. especially phone interviews. That's why I decided to review some of the most useful design patterns used in games. More


What Was the Biggest Accomplishment in this Position?

That's usually the interviewer telling you to show off. What I usually find hard to do is to keep the right definition to "biggest". Is it referring to something that he would find great or something you find great? I personally find giving training to new engineers really great (almost two years of giving training to all new engineers back at CAE on subject like real-time programming).. but for some others, something along the line of complex software design would fit more the description like when I made the game run smoothly back at funcom after months of modifying the engine's design. I assume it all depends on what's the interviewer is searching for. If he wants a team lead, giving training would probably be appropriate. If he's searching for a senior graphics engineer, talking about the latest clipmap implementation you did back at EA is way better.


What Do You Expect From a Supervisor?

I love working with a supervisor that trusts me. Trust is something takes time to build, but being straightforward with it is the best way to gain it. Being honest with our success and our failures is the basis of any good teamwork. Also, I really like a superviosor that have high expectations and who is supportive of those he work with.


How do you program?

Each programmer has his own way of making things work so it's important to answer this question with as much clarity as possible. Here's the way I work:

Defining the needs: First things first, I need to know what I'm looking for. What are the problems? What do I need to implement?

Experimentation phase: I usually like to take some time and start programming right away to have a feel and understanding of what needs to be done. For instance, to make the network library work with RakNet, I started to code with RakNet first (by redoing some of the tutorials, etc). In this phase, I also include checking out what others did and how they did it.

Definition of features: When I have a better understanding of the limitations of the technologies to be used, I can now start comparing what I can do with it with the needs first defined. If needed, I go back to the experimentation phase until I find the right technology or just redefine the needs.

Design phase: When I know what I need and know what I can do, I start designing the actual code. At that point, it's good to check with others (though that could be said for every steps) and see if I forgot anything or if someone else has a better idea.

Coding phase: When I have a good design, I start coding! Depending on the first experimentation phase, I go back to design more or less. The more experience, the less I have to go back and forth on those steps.

Optimization phase: When I have something that works, it's time to optimize! Though it's a good thing to think about it when designing, it's usually a bad idea to start optimizing before it works. But in the same time, it's hard to do some optimization without first hainvg a good design. For instance, building with Data Oriented Object in mind has to be done in the design phase. Check this out for an idea of what I mean : Introduction to Data Oriented Design


What do you do when you don't get along with a co-worker?

I remember the first time I answered that question quite a few years ago.. and even though it didn't really change, it does have more of a gray zone. Usually, when I have a problem with someone, I first try to find out if I'm the problem (bad day? tired? perceptions?). And so it usually takes some time before I get on to the next step. Next step is to find out if it's worth going any further with the issue. Is it worth losing good teamwork just cause I have a problem with people who enjoy others looking at themselves? When it really is worth it, then I start talking with the person in question 'cause really, you can't ask someone to do or not do unless you did ask them. Then if it still doesn't work (never happenned yet), just ask for advices from your supervisor.


What motivates you?

In other words, "The interviewer is trying to understand the key to your being successful in the job he is interviewing for, and wants to make sure it's a good fit." I personally love challenges. This is what usually drive me. For instance, back at EA, I loved being able to research and develop a new graphical engine to be used on smart phones. At funcom, I was convinced to accept the job when they showed me how bad the game was running on a normal PC... after the lags and the weird game behaviors, I couldn't stop thinking about how I could make it work. Challenges drive me to get better and success makes me proud of my work.


Why should you be hired?

Until just a few minutes ago, I never realized that this question was aimed at "what your perception is of what others think about your qualifications and abilities". I usually answered stuff like "I love what I do and it's hard to beat someone that always love his work" but maybe saying something that my previous boss told me would be better: "With you, nothing's impossible. I've never heard you say that something is impossible."