Take the 2-minute tour ×
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 want to start looking for jobs in great companies and I have four years of enterprise corporations development, three years with C#.NET and alomst one year with Ruby On Rails, JS, etc... But when I look up interview questions from Google, Amazon, Fog Creek, DropBox, etc... they are really targeted at students that are coming fresh out of college and still remember what was Dynamic Programming and Dijkstra algorithms ... but I don't! :( It has been a while for me ... If a I need a sort algorithm I would either Google it or there already is a library and method that does it for me.

So what should I do? Do they realize that this guy is not coming from college and will ask more general questions about software architecture or nop! I should go back find my old Data structures book from the storage and read them? In that case wht books and language do you recommend to hone my skills?

share|improve this question
add comment

2 Answers

up vote 3 down vote accepted

If a I need a sort algorithm I would either Google it or there already is a library and method that does it for me.

I think you've missed the point of studying algorithms. The point is not to be able re-write heapsort from scratch (although that can be a useful side effect). As you say, there are plenty of good libraries implementing any sort you care to name.

The reason that you study things like quicksort or Dijkstra is that they are simple examples of general classes of algorithms which may help you solve the novel problems you will encounter on the job. You probably will never need to re-implement quicksort, but you want to be able recognize other problems that can be efficiently solved using divide and conquer, and you want to be able to estimate how much of a speed up it will give you over brute force.

Balog Pal has a point in that sometimes folks ask these questions out of ritual or as a form of hazing, even when algorithm development isn't remotely part of the jobs. In that case they may be BS. However, you specified that you are looking at places like Microsoft, Google, and Amazon. Companies like those are much more likely to have jobs where computational complexity and algorithm development are as much a part of the job as software engineering. If you want to work on Google's core systems where they need to re-create an index for the entire internet every X weeks you darn well better know something about algorithms and O(n) estimates.

The key though is not to memorize algorithms but to understand them. Once you understand them answering questions about them at an interview is much easier than if you've just memorized them.

share|improve this answer
add comment

Did Fog Creek turned over to the dark side really while I was not watching? I thought they still eat their own dogfood still and stick to the smart+get_things_done.

The rest I don't know, but yes, I too observed that some companies are obsessed with algos, O-notation and other quasi-BS while seem completely blind to software engineering.

I believe that the recruitment process is a good indication of what the workplace would be -- if it makes you pain, then expect even more pain working. So just use it to your advantage and be glad to avoid those companies.

Or maybe they learned to be better, or adjust -- if you have some time to apply, just go ahead and see what happens.

share|improve this answer
add comment

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.