Showing posts with label interview. Show all posts
Showing posts with label interview. Show all posts

Interviewing Tips, Again

So, related advice I give to both interviewers and interviewees. Interviewers: If you give a candidate a question that has several answers, they might say "well, we can do A, B, or C. Let's try B." At that point, politely stop them and make them pick a different path. If they chose B, it means they probably know B the best of any of the choices; if they can knock A or C out of the park, they would have done at least as well with their own choice. You get much better signal about a candidate when you (gently!) knock them out of their comfort zone. Push candidates away from near-certain success; it's not worth your time or theirs. Interviewees: Some interviewers will intentionally knock you out of your comfort zone, and since their are a lot of folks with asbergers in technology, even if they think they're being nice... sometimes, they really aren't. Roll with it; every good interview is going to push you out of your comfort zone, and you're not always supposed to succeed at everything they ask. (It's nice if you do, but honestly, almost never, ever required to get the job.) Be aware that interviewers may nudge you on the hard path, and don't give up until you get a call telling you to do so a few weeks later.

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.