Interviewing Advice

I had to give a 5-10 minute talk on "interviewing tips" for a room full of college students. Since it's generally interesting, I wanted to post it, so here's my notes. I speak (as always) from my own point of view, and not my employer's.

--------------

An interview starts with a friendly chat about you.

  • What's the last thing you've worked on that you're proud of?
  • Why do you want to work here?
  • What do you want to do here?

That's followed by a longer chat about a programming puzzle, focusing on:
  • Algorithms - how do you solve the puzzle?
    • College courses in Data Structures and Algorithms; if you haven't taken these very recently, review the material!
    • Introduction to Algorithms is the Algorithms text I studied with.
    • lists, hashtables, heaps, trees, graphs
    • sorting, searching, recursion, Big-O, probability
  • Coding - write clean code on a whiteboard in C++, Java, or Python.
    • Both correctness and readability count.
    • Practice on a whiteboard. Really!
  • Design - how would you design it for maintainability? How would you scale it? How would you test it?

Some general tips:
  • It's okay to simplify the question to build an initial solution, as long as you come back to the full question later.
  • Don't be afraid to make mistakes. The goal is to have a conversation about the problem; interviewers want to see how you think, and it helps if you can talk through it. Your first solution won't be optimal, and that's absolutely fine.
  • Feel free to ask questions, and clarify the problem before you dive in. If you're really stuck, ask for help. It's okay to admit if you don't know the answer to a problem.
  • You will be asked follow-on questions until your knowledge and experience run thin. In every interview, you will be asked questions you do not know the answers to, and That's OK; that's the idea. They're looking to see how you use what you know to solve problems you *don't* know, just do your best.
  • If you're doing multiple interviews in one day, they're independent of each other. If you don't do well in the first interview, work on starting fresh in the second. Each interview and interviewer starts with a fresh slate.
  • Interviewers are glad to answer questions about their jobs. Have some questions for them! Some common questions include:
    • What's the workday like? What project do you work on?
    • What's good here? What's bad here?
    • Is there really no dress code?

What is the interviewer thinking?
  1. How does this person think on their feet?
  2. How does this person communicate their thought process?
  3. Does this person know how to write and test code?
  4. Do I want this person on my team?

Finally:
  • If you've heard the programming question before, please say so. Interviewers can adapt or change the question if need be. They've asked the same questions quite a few times, and if you already know it, your cadence *will* be off, and they *will* notice.
  • Read Steve Yegge's blog post "Get That Job".
  • Be on time.
  • Take the interview seriously; the interviewers will.
  • Come prepared, well rested, and comfortable; it's a casual company.

2 comments:

beeporama said...

Obviously some of this is specific to your company and your positions, but there is really good general stuff here. Friendly chat, yeah; always have a couple of short anecdotes in mind about problems you've solved or whatever.

And you will definitely get questions without a clear answer (or without an answer you know) to see how you handle them. When do you go to the documentation, or a certain book, or a certain forum, or to a colleague for help?

You don't talk about all the shmoozy stuff that shouldn't matter but does. (Maybe because it is not tech-specific.) People will try not to be biased by it, or say so, but it really does matter if you smile, use the other person's name, and smell nice (clean, not bathed in cheap cologne). I always try to ask a personal question based on a picture on their desk or something ("you like to sail?") and my brother claims that any time he is able to get the interviewer to laugh, the job is his. Also, really, when I am interviewing I *WANT* everybody to be comfortable and interview at their best. I don't want to trip you up. If you are good I *WANT* that to come through because it doesn't help me to lose a good candidate (interviewing is generally not fun for me either). If you don't think you are any good, well... that's between you and your therapist.

jacklins said...

I think these are helpful tips for all online visitors.I think It's okay to simplify the question to build an initial solution, as long as you come back to the full question later.
golf apparel