Congratulations
Congratulations! If you are thinking about interviewing for a job,
then it must be the case that you are nearly done here as
undergraduates at CSE here at MSU.I think it should be said clearly
that we are very proud of you and that you are ready to get out
there. You've gone through a lot to get to this point and you are
ready. You are only here to try and give yourself that last edge to
get a job. Hopefully some of the stuff here will help you with that
task.
Perspective
Remember, each interview is individual and potentially dependent on
things that are not always within your control. Don't let a bad
interview put you off or get you down. You are ready, you are good! A
bad interview is just that, a bad interaction between two people.
You have to remember that each interview is one of many that you might
potentially go through. Use each as a learning experience that you can
take to the next. Keep going, you'll get there!
Prepare
Look, let's be honest. Things are tight and you might have to do a few
interviews to find what you are looking for. It is good to prepare! If
you aren't ready to compete for jobs, then those that are will step in
front no matter what your eductation, work ethic, etc. You need to
sell yourself. You need to make it clear who you are, what you
are about, what you are capable of. No one has more interest in this
than you, no one wants this to happen more than you, no one knows you
better than you .
And by prepare I mean ...
By prepare I do not mean that you have to cram, like an exam,
to get a whole bunch of technical stuff loaded in your brain. Rather,
I mean that you need get your head in the right place, build your
confidence, and enter the interview feeling like you know what is
coming and you are ready.
Human Process
First, remember that an interview is a human process. The interviewer is
another person, perhaps just as nervous about talking to a stranger as
you are. And potentially, your interviewer has had a long day talking
to any number of idiots/fools/aholes (see this or
this ). Be nice! Be friendly! That isn't
going to be all you need to get the job but, all things being equal, it might mean
the difference between you and some rude, arrogant snot. Even if the
interviewer is decidedly not nice, you be nice!
Second, no matter what you are asked, talk out what you are thinking!
Your interviewer is trying to evaluate what kind of person you
are. Single word answers to questions reveal very little about you as
a person. If they ask you a general question, talk about the answer. If they ask
a tech question, talk it out how you are thinking about solving the
problem. Get a dialog going if you can (hard to do with tech
questions, but even possible there). Let them know there is a brain in
there!
HITT
When they ask you a question, you really need to think about what they
are really asking you. If they ask you how to reverse a string, they
really don't need to know the answer (hopefully)! They want
to see something about you, what kind of person you are, what you
know. To that end, I would generally categorize questions into one of
four types, represented by the acronym HITT:
- H: Human being questions
- I: Interested in this company questions
- T: Thinking questions (can you think on your
feet)
- T: Technical questions
Human being questions
"Do you have any hobbies", "What do you do in your spare time", "What
was your favorite part of MSU", "Where do you want to be in five
years". No really cares about the particular answers so much as the
fact that you have answers. They want to know that you are a
reasonable human being, someone they wouldn't mind working with,
someone who be a good corporate citizen. Answer the questions and show
them that you are a good, thoughtful, well-rounded person. Be
friendly, be happy.
Interested questions
"What would you improve in Gmail", "Why do you think the Wave failed",
"What product would you add to the Google Labs", etc. Each company has
a business. Do you know anything about it? Did you bother to
look? This is part of being prepared. You may not know everything, but
you bothered to look, cared enough about this interview to do some
background reading. Heck, if something has been in the news, ask
them a question about it. Show some initiative!
Thinking questions
"What are man hole covers round", "Explain the signifcance of 'dead
beef'", "A man pushed his car to a hotel and lost his fortune. What
happened?". These are very old, and this type of question has gone out
of favor recently. However, the intent is clear. There is no
answer. They want to see if you can think the problem through. What
could the answer be? What are the alternatives? Think it
through out loud. If you give one answer and push for another, ask for
some direction. It is how you talk it through that matters, not
necessarily the answer
Tech questions
This is the hard stuff, the stuff everybody is afraid of. Again, you
know this stuff! Be confident. They may stump you here and there, but
you can work it out. Just don't panic. Before you start writing any
code, talk out what you want to do. They may guide you, they may
not. Once an answer is given, they may push for improvements, ask
about O() performance, force you to another language, etc. Go with
it. Do what you can. If you can't go any farther, say so and hopefully
you move on to something else.
Tech question examples
Brush up on some of these by looking through the web and seeing what
kind of common questions are out there. Remember, they cannot ask you
to design a web server in 10 minutes, so there are a set of questions
that are common. The point is that you need to just generally prep
yourself. Take a broad look through some of this stuff. Bone up on the
things you forgot or are vague on. This is just some of that kind of
stuff.
- reverse a string (two arrays, in place, recursively, etc.)
- traverse a linked list (insert a node, delete it, now doubly
linked, etc)
- tree traversal (inorder, postorder, preorder)
- sorts and searches (can you write a search, do you know its
O()). What sort would be good for situation x, how about situation
y?
- Bit twiddling: power of 2, swap values
- Multithreading: deadlock, mutex, mpi, general stuff
- Database: what is sql, do you know what a join is
Some Sources
You can find these as well as I can. Searching for terms like "tech
interview", "google interview", "microsoft interview", "tech questions
interview". So this is no special list, but it does have the kind of
examples you are looking for. Remember, every interview is
different. Some of the questions listed below are very hard because
they are very specific, probably because they were not asked of a
"new" hire, but someone more experienced. Don't let that make you feel
like you are out of your league. Likely the questions you will get
asked will be more general (but see the Tips)
Some Tips
- Do it simple if you can. Don't ask "what language" if none is
specified and it is easier to do it one way than another.
- If you say on your resume that you know a language, then be
prepared to write code in that language. Otherwise, don't say you
know it.
- List in your resume things you are read to answer questions
about (database, networks, graphics). If you don't want to answer
that, don't list it.
- Have a list of answers in your head to the standard
questions. Don't look overly rehearsed, but be prepared
- Most importantly, be loose and do what you can. Each
interview is different and some will be better than others. If one
doesn't work, learn and move on to the next one.
Last modified: Thu Sep 23 17:48:38 EDT 2010