

Amazon.com Software Developer Phone Interview: Any advice? - shubhamharnal

Hey people! Just landed myself a telephonic interview with Amazon for a Software Developer position (Description Follows).<p>This phone interview will be technical in nature and asks me to be prepared to do some coding.<p>Software Development Engineer Job Description:<p>Have a direct impact on the evolution of Amazon eCommerce platform and lead mission critical projects early in your career!  At Amazon you will design, code, and contribute to solving some of the most complex technical challenges in the areas of Platform, Applications, Operations, Retail, Transaction Systems, and Merchants!
Software Development Engineer: 
•	Strong, object-oriented design and coding skills (C/C++ and/or Java preferably on a UNIX or Linux platform) 
•	Knowledge of Perl or other scripting languages a plus
•	Experience with distributed (multi-tiered) systems, algorithms, and relational databases
•	Experience in optimization mathematics (linear programming, nonlinear optimization)
•	Ability to effectively articulate technical challenges and solutions
•	Deal well with ambiguous/undefined problems; ability to think abstractly
•	Computer Science/Computer Engineering degree (or related technical discipline)
•	Previous technical internship preferred
•	Graduate degree a plus<p>I am seeking advice on what questions to expect if anyone here might have been through this process before? Any other advice will also be appreciated.<p>Thanks!
======
justrudd
I worked at Amazon for a while. And the only thing I can tell you is that
unless someone replies that specifically works in the group you are talking to
any specific advice or questions they give you would be mildly useful. Every
group has different hiring bars and questions (some groups use the same script
for every applicant so they can be ranked next to each other. My group never
did this).

advice on questions? Coding, algorithmic complexity, and design. You will
probably have to write code during the call. Depending on the screener, it
could be e-mailed in a couple of hours after the screen.

A lot screeners tend to combine coding and algorithmic complexity in one
question. They'll give you a question with an obvious quadratic solution and a
less obvious linear or logarithmic solution (or even more rare a constant
solution).

When you are refining your algorithm - talk. Talk about the variables and
what'd you name them. Talk about why the nested for loop isn't good. Talk
about everything you are thinking of. The whole point of the screen is to get
an idea about how you solve problems.

If there is a way to solve the problem using a standard library, mention it.
You'll be told you can't do it that way, but it is good for a screener to hear
that you know how to use a standard library to solve the problem. I used to
give points for this even if they missed implementing the algorithm
themselves.

Language tends not to be a big deal. I would let applicants use Java, C++, C#,
JavaScript, etc. Whatever they were most familiar with was OK with me. I'll be
honest, my group used to give preference to C++. C++ is a harder language to
master than Java. so someone that gives a good C++ answer, usually got the
edge over the Java guy. Again this was my group where 90% of the code was
already in C++.

If you say you know C or C++ and can't see how pointers could be used to solve
the coding problem you are given (especially if a string manipulation
question), that would be a huge red flag for us.

Design questions can run the gamut. I used to ask "design a reservation system
for restaurant", "design a parking lot", etc. Simple things that everyone
knows. The design would include what objects you have, how they interact, data
structures, etc. I'd look for whether you treated classes as data containers
or you believed in data + behavior.

And finally, don't forget that Amazon is about getting stuff done. That means
your solution may be a perl script slicing some data and piping the result
through cut, sort, uniq, etc. Don't assume you've got to write a program from
scratch to solve every problem.

Good luck!

~~~
shubhamharnal
Thanks!

All advice appreciated!

------
playwithfire
As someone who just successfully went through the Amazon interviewing process
(new grad, 4 interviews on campus):

1) Relax. Maybe I got lucky, but all of the interviewers I met with were nice
and pleasant. They made me feel comfortable.

2) Brush up on the fundamentals of CS. Pretty much all of the questions I was
asked built upon standard CS knowledge. If you can pass a standard
Algorithms/Data Structures course, the interview will probably be a piece of
cake.

3) Think out loud. It helps more than sitting there in silence. As a benefit,
the interviewer will most likely help guide you in the right direction.

4) Ask questions!

The interviews were actually a lot of fun! Good luck.

