Interview Questions

Update: I removed all of the coding questions because https://leetcode.com/problemset/algorithms/ is infinitely more useful.

There are three types of interviews: informationals, phone screens, and onsites. The informational is the first meeting with a company and it is usually a phone chat with a recruiter. A screening is a one hour test, by phone or in person, to assess your technical skills. I also had many “informationals” with hiring managers, and 80+% of the time I was asked technical questions. Unless their title explicitly says recruiter then you need to expect technical questions.

The onsite is the final stage. It’s 3 to 6 interview sessions with individual or pairs of interviewers. If things go well then some companies will have you meet with the hiring manager at the end. And if things didn't go well then the interview loop might be cut short.

It is best to solve these questions on a white board. Read the section on preparing for an interview for more details.

A. Informational Questions

Recruiters ask these. They are aimed at determining your skill set, interests, and personality. Can also be asked in the later stages.
  1. Why do you want to work for us?

    If you can’t answer this question then you shouldn’t have applied. Companies want to hear: “I am looking for a challenge.”, “I love your company’s products and want to work on something I’m passionate about.”, and “I learned your company culture values x, y, and z. These things are important to me.”
    One time I told a .NET shop that I wanted to get away from Microsoft technology and work with open source software. Unsurprisingly, I did not get a call back. Don’t be stupid. Don’t lie. Research the company and tell the truth.
  2. Why do you want to leave your current company?

    This is similar to question 1. Be positive. Don't say "I hate my boss" or "They never gave me a raise." I told a hiring manager that I didn't like the people who did xyz at my company. His response was "I was a xyz there." Can you guess if I got an offer afterwards?
  3. Have you used our product? What do you know about our product?

    Also similar to question 1. Companies like candidates who do their research ahead of time. And it is especially important for companies like Apple and Tableau. In fact, being familiar with the product is one of Tableau's founding values.
  4. How can you improve our product?

    I hear this question often from consumer facing websites/apps. Answering correctly demonstrates you have done your homework and you can advocate for the end user.
  5. Generic behavioral questions like “tell us a difficult problem you overcame.”

    These types of questions are covered in both of the books as well as sites on the web.

B. Phone Screen Questions

These are more technical, but you can still get culture fit questions. If you have the option to do it in person then go to their office. Otherwise, get familiar with the webtool ahead of time. Majority of companies used http://code.stypi.com/.
  1. What is your biggest achievement? Biggest programming challenge?

    They want to hear what you can do. If you are a senior engineer, this is your chance to sell yourself. Tell them about an ass kicking project you did that saved the company millions of dollars. Go deep and go big. And this will often be asked during the onsite too.
  2. Describe abstraction, encapsulation, polymorphism.

    I also got asked: is-a and has-a? Abstract class vs interface? Class vs isntance? DFS vs BFS? BST vs array? These are basic 101 concepts. And are probably asked to see how well you can communicate a simple idea. Make sure you have a clear and concise answer for each.
  3. Databases for Twitter are eventually consistent. But when a user creates a login it needs to be unique and guaranteed. Design a system to support this.

    Interviewer wanted me to describe paxos.
  4. Class vs instance? Follow up: what is a virtual function and how are they implemented?

    http://en.wikipedia.org/wiki/Virtual_method_table

C. Onsite Questions

Mostly a mixture of coding and design questions.
  1. Design a mobile app for to control Hulu on the Xbox.

    API, UI, network protocol.
  2. Design Twitter. Make sure you include a search function.

    Big data, distributed system, system design questions are fun!
  3. "Read and analyze this code. What do you think?"

    The interviewer wants you to find bugs in code. It's usually bad abstraction, concurrency issues, memory leaks, or no input sanitation. The usual stuff you'd discover in a code review.
  4. Design the system used by a local rental car agency. It needs to handle: reservations, check out, check in.

    How does it handle error conditions? Such as reserved car is not returned by previous owner? What if user wants a list of all cars available between a certain date? How do you scale to a national chain like Hertz?
  5. What is override vs overwritten? Singleton vs Factory? cdecl/c++ calling conventions?

    More term definitions. Memorize these.
  6. Design a search engine.

    Something about servers, databases, etc.
  7. What is deadlock? Race condition? What happens when you add const to the end of a method declaration?

    More definitions. Answer these sussinctly.
  8. When playing a game on the Xbox, I want to use the corresponding app on my phone. Design a robust system to handle this. The phone needs to know the XBox ID/gamertag.

    More distributed system design fun!
  9. What would you do if you had a billion dollars?

    Someone asked this immediately after a challenging system design question. I was totally caught off guard and just mumbled. Though I am very proud of myself for not blurting out "Hookers and blow."
  10. Do you really want to work for us? Are we your first choice? Who else are you looking at? Are we in the running?

    This often get asked at the end of an interview. Or it's the first question asked when the recruiter calls after an interview. Companies do this to gage your interest and excitement level. They don't want to give an offer to someone who doesn't want to work for them.
    I told my Hulu referral that I rather go to Google (recruiter told him to ask me). Then I told my Google interviewers that I want to be at 343 Industries or Redfin. Guess how many offers I got from Hulu and Google.
  11. Where do you see yourself in 5 years?

    Not at this stupid company!
    -_- Did you read the previous question? In general, try to say things they want to hear until you have an offer.