Programming Interview : Why do they all ask those CS 101 Algorithm/Data Structure questions these days?
Interview Experience
I'm 51 and have been programming since I was around 13. I've worked in all sorts of companies, big and small, in many different industries. I like to think I write good, efficient, quality code that's
Full Details
I'm 51 and have been programming since I was around 13. I've worked in all sorts of companies, big and small, in many different industries. I like to think I write good, efficient, quality code that's readable, extensible, and reasonably clever. A good "software craftsman" as it were. Recently, I've been phone screened at Google, Twitter and Netflix. For the first time in my long career, almost all the questions in my technical interviews were what I call "Computer Science 101" style questions. Tree/graph traversal, tree balancing, checking for cycles in data structures, shortest-path algorithms, Cartesian Product algorithms, most-efficient-access algorithms, etc. etc. Things that could be found in the slew of recent "How to interview at Google/Microsoft/Facebook" books and articles. And they are - amusingly - things I've almost NEVER had to use in any job I've ever had. And these techniques seem to be starting to be used at lots of other, not-as-big-or-successful companies. To what do you think we can attribute this rise in this style of interview? In the past, the technical portion of the interview process has been composed of: 1. Do I have the skills they need for this project? 2. Demonstrate to them my experience in these skills 3. Here's a real-world sort of problem - solve it 4. Add complexity to this real-world problem, and solve it again 5. Explain my solutions to this real-world problem 6. Relatively simple discussion of algorithms and data structures (eg. when would I use which kind of algorithm or data structure, and why?) 7. Describe some difficult technical problems I solved, and how I solved them 8. Code samples for projects I worked on 9. Coding tests ... and a few other things. They were more "organic", if you will, not quite so "Solve this classical/academic CS problem that's been solved before, so we can see if you know it, or 'how you problem solve' if you don't). Personally, I really suck at some of these sorts of interview questions, but my work - in my own estimation and that of quite a few of my past colleagues and managers - has been first rate. But my past performance is immaterial if I don't solve these sorts of interview questions to the interviewer's satisfaction. The entry to a lot of these interviews now seems to be this sort of question, and if you choke up, you're out immediately. Why has the programming interview morphed into this kind of thing lately? Anyone have any good clues as to why? Is it just because "Google does it, Google is successful, so we'll do it too"? Or is it that much better than past interview techniques, do you think?