Running with Code Like with scissors, only more dangerous

2Apr/140

The technical job interview, part 0

I’ve had the opportunity to be on interview loops for the last six months or so at Microsoft. I had previously done interviews as part of my job at Terralever as well, and at least for the technical part of the job, it hasn’t really changed. This post isn’t really about interviewing specifically at Microsoft. I’m a Program Manager, but on a programming language team, which means that my job is much more technical than most PM jobs on, for example, Office products. My expectations as a technical interviewer for PM are probably more in line with a developer’s job in other parts of the company. As such, I’d also expect that they’re in line for other development jobs throughout the industry.

I’d expect the specific problems are going to vary based on the team or the job you’re interviewing for, but some problems are good universal fits. In general, I try to ask questions which will fit within the following buckets:

  • Basic problem-solving skills. If I give you a simple problem statement, can you talk through how you would solve the problem and then turn it into code? Can you do it on a whiteboard without a code editor? What level of detail do I need to provide? What levels of detail are you going to ask me for?
  • Performance analysis and trade-offs. While approaching your basic problems, almost always, the problems have multiple possible solutions. I hope you’re identifying the alternatives as we go, but if you don’t, can you discuss them when I ask you about them?
  • Bits and bytes. Do you understand the basic number operations, endianness, and two’s-complement arithmetic? Do you know about specific implications for your target environment (e.g., number representation and optimization in JavaScript has special considerations)? Do you understand why this post is called “Part 0″?
  • Data structures and algorithms. Do you understand LIFO/FIFO, linked lists vs. arrays, hash tables, etc.? If you’re a junior candidate and are unfamiliar altogether with the data structures, do you understand what I’m talking about if I explain them to you?
  • Object-oriented design. Can you decide what should be a class, a function, global variables, etc.? Do you know how to represent these kinds of constructs in your language of choice (e.g., prototype inheritance in JavaScript)?
  • Job-specific skills. On my team, I generally ask about JavaScript questions (looking for a PM), but I know C, C++, C#, Java, and JavaScript well, and so generally, I’m interested in asking about fundamental understanding of at least one programming language. For a web app developer, I’m going to likely ask about jQuery, perhaps Angular, Node.js, or other common libraries. But, unless I’m interviewing a senior person who should be able to join the team and immediately contribute, APIs and libraries generally get de-prioritized, because a fundamental understanding of the language is going to make it easy to quickly grok a library.
  • Debugging. What are the tools you could use to debug a problem that might crop up? Do you know the sequence of steps to diagnose a bug that I might have introduced, or that you introduced?
  • Testing. Do you know how to test and validate your code? What are the ranges of inputs you might want to test?
  • How up to date are you? Do you love your trade? Are you watching for ES6 features and specs coming out of the JavaScript language design committee? Do you have personal projects? (This isn’t a required category but it generally gives bonus points).

Over the next few posts, I’m going to talk through some common interview problems, what a candidate’s answers might be, and then what the interviewer might try to discuss about the answers and questions. This isn’t a comprehensive guide, and you shouldn’t expect to get these questions if you actually interview with me. The purpose is really to give you the mindset for an interview. What will make you successful? What do you need to know? How can you build up your skills to be ready?

Up next: testing for a palindrome. (Yes, it’s super-common).

Comments (0) Trackbacks (1)

Leave a comment

ERROR: si-captcha.php plugin says GD image support not detected in PHP!

Contact your web host and ask them why GD image support is not enabled for PHP.

ERROR: si-captcha.php plugin says imagepng function not detected in PHP!

Contact your web host and ask them why imagepng function is not enabled for PHP.