Interview Preparation

The Interview Factory: Where Do Questions Come From and Who Picks Them?

Every day, I hear one candidate ask another, "Have you interviewed with Company X?  What were you asked?"  This would be a perfectly reasonable question, if it weren't for the fact that they were doing so on a website with thousands of interview questions.  Why get 5 questions when you can get hundreds? The truth is that, at most companies, there's no grand system.  There's no structure.  No one saying, "ok, now, every candidate will get one networking question and it will cover TCP/IP."

There's just... people.  Interviewers take a bit of interviewing training, that usually covers oh-so-helpful legalese like "asking candidates about their marital status is illegal", and then off they go!  Interviews ask whatever they want to ask.  No system, no structure.  Just a bunch of people making up their own minds.

Next time you're about to ask someone else what they were asked, stop and think: will this person tell me anything new?  Relying on one person's experience for your preparation is much, much worse than relying on the experiences of many.

Instead, do the following:

  1. Check for programming interview questions, but don't limit yourself to just your company's questions.  If you're interviewing for Amazon, be sure to check out the Microsoft Interview Questions and Google Interview Questions.  Companies are far more similar than they are different.
  2. Review the questions to get a general feel for what the company likes to ask.  If you're doing an Amazon interview, for example, you may notice that Amazon loves object oriented design questions.  That'll give you a good idea of where to focus.
  3. Practice!  Don't worry about getting the answer to each and every question.  Answers won't help you.  You need to solve the problems yourself, so you learn the general techniques.

While your questions may vary based on your background, your interviewer, the team, or the prospective company, interview questions are actually more consistent than not.  Interviewers don't like coming up with new interview questions for every candidates; it's hard, and results in poorly calibrated feedback.

As far who "invents" the questions, the answer is that it's rarely the interviewer.  Employees talk, and questions are shared across a company.  When people switch companies, they bring their favored interview questions with them.

I'm still asking my five favorite questions in my mock programming interviews.  I don't change them frequently because calibration is more important than creativity.  I know how to ask the question, how to lead a candidate to the solution, and exactly how well you did relative to other people.  Why change?

Ask Gayle: I am a low-level programmer. Can I get a job at Google?

Hi Gayle, I am desperate about getting a software engineer job in only Google. My dilemma is that I have worked only in RTOS (e.g. WinCE) System Software Domain in all of my 6+ yrs of overall work experience in big semiconductor companies e.g. Qualcomm, Marvell, and I have no experience in web companies.   Do you think there might be any chance for me to get a job in Google?

Thanks Avi

Google does occasionally look specifically for low-level programmers.  Scour the job openings and see if you can find something that fits your background.  However, most job openings at Google are just general "software engineering" positions, which leads to two questions:

1. Can you get an interview?

2. If you get an interview, can you get an offer?

As far as the first one, quite possibly.  You have some big name companies on your resume, and that gives you a lot of credibility.  The only drawback is that you may not have much object oriented experience.  You could try your luck applying as-is (it'll help if you can find an employee to refer you), or you could do something to boost this experience.  Is there an open source project (preferably one with Java) that interests you - one that would give you the much needed object oriented design experience?

With respect to the second question, it's really about how much you prepare for your interviews.  Read up on design patterns - the formal names aren't important, but it might be useful for you to see different ways of designing things.  Practice interview questions using object oriented design, and preferably Java.  Be aggressive about writing very clean code and designing classes and structs to hold the necessary data.

Google is desperate to hire great people, so with a bit of preparation, you can get a job there.  Good luck!