I am frequently asked how to prepare for a technical interview at top software companies in the US. Having been on both sides of programming interviews, I can say that one of the keys to successful interview is to start preparation early and have focus.

Maintaining focus during preparation is difficult as there literally thousands of programming problems to solve. However, I will keep the list of must-read books short as they will prepare you for 99% of all programming interviews. Here are the books per area:

Programming Interviews

Algorithms

Computer Architecture

Software Design

Ideally you would read all of them and complete most tasks, but if you are on a really tight schedule, both books from Programming Interviews category will get you started and the rest can be used as a reference.

Good luck and raise the bar!