OK, I think everybody knows an average process of Amazon's interview. So I want to write something that I didn't find usually in reviews..
HOW TO PREPARE
* rest well before interview. Be in a good mood. Smile! Smile all the time!
* read book "Cracking coding interview". I didn't have any single question from there, but this book has 2 huge pros - it helps you to understand how your interview will look like and how to prepare to it (yes, this first, smallest part of book helped me A LOT! I never had such interviews before), and it could help you remember basic stuffs about algorithms etc (especially if you graduated more than 5 years ago).
* they will send you a list of questions to prepare. Pass whole list, use Wikipedia at least, jump between links, etc. - it will also help you
* prepare your own questions for them. Be personal! Ask exactly what you want to know! Maybe, you will not have another chance to ask such questions
* sleep well for at least one week before
* don't drink alcohol for at least 3 days before
* eat well before. Approx. - in 1-1.5 hours before. Eat something that you like, and something that is good for sure ;)
* be there in 15-30 minutes before scheduled time
ON INTERVIEW
* talk out loud! Talk out all the time! Talk out all stupid stuffs that you have in your mind! Most probably, they don't care how much you know, they should care - how much you can "invent"! So, if you don't know some famous algorithm, but you can "invent" it just on interview (of course, with mistakes) - it's much, much better!!!
* be honest. Don't try to cheat. If you know exact answer to exact question - talk out loud first - "I know an answer. I just read about it yesterday". And then, if your interviewer will say you "go on" - answer on it. First of all - they will know that you're honest person, and they can trust you. Again - it doesn't matter in general - how much you know, it matters more - how much you can invent! Because in Amazon you will solve problems that probably nobody solve before..
* amazing quote from book "Cracking coding interview": "Despite the questions onpolymorphism and heaps and virtual machines, the question interviewers really want an answer to is : Would I have a beer with this guy?"... So - smile! Be honest! Be yourself!
* "your future teammates (most probably, your interviewer is one of them) want to be sure that they can rely on you. That you can work yourself" - another quote from the same book. So - prove them that you can work yourself!
* don't answer immediately, think a little before. But think aloud! Be sure that your interviewer knows that you're thinking and not answering ;)
* if you find a mistake in your answer (even in question that you answered 10 minutes ago) - don't be afraid to fix it
* if you have ANY question - ask it! It could change your answer really a lot.. (one guy answered to 10 my specifying questions - "I don't know".. And it was actually right answers ;) but usually you will receive a lot of information)
* yeah, I messed all the time. I did errros. I did one HUGE error, most stupid error in my last few years. But - I talked out loud! I talked all the time, I talked about what I think about it etc. So, again - talk out loud! This is your mantra for interview
* if you see how you can optimize your solution - optimize it! Optimize it all the time. And talk out loud why you think it's better! Don't be afraid to change you code. But be sure that you will finish your task in time!
* stand out from the "crowd". Be different. Of course, probably you should not paint you hair in blue color ;) but be sure that you are not like "everyone". You should be "a little different". They should remember you
* ask about requirements for code. They could be different - maybe, much more loose than you think (e.g., when I said that my solution will be non-optimal, one guy said that he need ..A.. solution. My solution was horrible, but I "delivered" it. Just in last seconds of our interview. He looked very happy...)
AFTER INTERVIEW
Have a beer! You deserve it.