Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I didn't study CS in school. Ten years ago, I studied a mix of liberal arts, CS, philosophy, languages, CS and art. Unsurprisingly, the Ruby syntax bewitched my soul and I've been loving and writing Ruby since I first met it about 4 years ago. I've met several people (I live in SF) who have come from this un-traditional history and some of us have made great insights into great systems that touch all our lives every day.

I want to move out of a BigCo environment to a place where I can have more impact and use Ruby more regularly. But I think CS programmers have a set of shibboleths to weed out those who aren't minted by the same stamp: The Data Structures and Algorithms questions.

While I understand the applicability of the concepts, it seems strange to ask me to write a linked-list implementation or a queueing mechanism: most 4GLs have already optimized that. Why not look at my github or my side project contributions? You want a web programmer, if you need me to write the algorithm I'm going to grab the Knuth opus, copy, past, and truck on to delivering a site that GENERATES REVENUE which is, after all, why we're here, right?

So, it's a shibboleth. Fine. I'm not going to complain about the fact that that's what it is. If presenting these signs is important, then I will present them BUT...what should I know? Is there a canonical book from which your secret brotherhood learned its secret handshakes? Is it better to implement in C or C++ or Java?

In short, what of my recollection of CS101/102 must I re-learn so I can get in the door and wow you with my code?

share|improve this question
While you will almost never have to write a linked list or any such structure...do you think knowing how they work internally may help you pick the correct structure while developing an application? It very likely will. I think if you want to get to/past the interview the classically CS topics are what you speak like has been mentioned below. – Rig Jul 19 '11 at 0:46
Absolutely, I'm old enough to accept things as being what they are. The market is reality. – user31697 Jul 19 '11 at 16:12

3 Answers

The CRLS book is the bible of algorithms and data structures. It's pretty heavy on theory and math (unsurprisingly), but reading through the core chapters and attempting the exercises will give you good insight and grasp on these sort of problems.

It's definitely not something you'll be done with in a week though, so for starters you might want to focus on the "classical" interview topics: elementary sorting, basic linked list/hashmap implementations, etc.

share|improve this answer
+1 You sir type faster than me. – alxbl Jul 19 '11 at 0:36
Cormen is a great book. – Vitor Braga Jul 19 '11 at 3:56

You need to know this stuff. It's not hard, but it is important. I wouldn't hire anyone for server-side programming with no knowledge of fundamental data structures.

share|improve this answer
I still want authoritative list. CRLS book looks exhaustive, and I'll probably get it, but I want something to give me a survey of the topics. To this end I'm thinking about.... amazon.com/Cracking-Coding-Interview-Fourth-Programming/dp/…, amazon.com/Programming-Interviews-Exposed-Secrets-Programmer/dp/… – user31697 Jul 19 '11 at 16:15

You ask someone to write a linked-list implementation for the same reason you ask someone how many people are flying in planes right now. Just because the actual result might not be very valuable or something you will likely have to do again, it presents a lot of information about you.

  • Do you have an understanding of the underlying concept? You are more likely to use the base data structures correctly if you understand which ones are good for what.
  • How do you think? Seeing someone work through a problem gives you clues about their work habits and if they can break down the logical pieces that make up the bigger picture.
  • How do you write code? Does the code you end up with look organized or is it just thrown together to make things function.

There are many ways to do things and sometimes asking a person a question directly is not the best way. Asking them to focus on one thing can get them to drop their guard about others and give you better insight.

share|improve this answer
I agree that these CS questions are designed to get you to reveal your process...but there is the expectation that you get them right, too, it seems. You're expected to have the vocabulary mastered so that you can discuss the why with the interviewer(s), I believe. – user31697 Jul 19 '11 at 16:14

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.