Amazon | SDE 3 | June 2020 [Reject]
Anonymous User
6798

Disclaimer: My last interview was 8 years ago, I never searched for another job during this period, so I my interviewing skills are very rusty. I'm Software Engineer who has reccently taken the role of a Product Owner, but I'm looking to get back more into coding.

TL;DR: I went through 2 phone interviews, which were mostly composed of behavioral questions (which I did not prepare that well for) and a single technical question, which I didn't do well.

I have been working on the same company for most of my professional life, and reccently I decided I wanted to make a move. Problem is that I was really oblivious about the whole interview process (and how challenging it was), so once I realized how much work I had to do in order to be well prepared, my first interview was already scheduled for a SDE III position in Dublin. I've tried to write down some personal histories that would line up with Amazon Leadership principles and decided my time would be best spent (at first) with the CTCI book and some LeetCode, but I only had a little over a week before the first session.

My first phone interview was only composed of behavioral questions, such as:

  • Tell me of a complex problem that you solved with a simple solution.
  • Tell me about a time where you worked outside of your confort zone.
  • Tell me about the most complex project you worked on.

I think I did decently enough on this one, and lo and behold, I got an email the next week telling me that I should schedule for a second phone interview, but this time it would be a technical one (System Design and Algorithms). I spent most of my time doing LeetCode (based on an Amazon questions list I found) and consuming some SDI materials (Grking the System Design Interview and a few youtube channels).

On the second phone interview, to my surprise, half of it was again behavioral questions, but this time around I feel I didn't do very well. I was taken by surprise by a question which I did not have a story prepared (thinking that I would have time to prepare more for behavioral questions for the third round). I did not want to repeat the same history from the first interview (which had similar premisses), so I ended up picking what I see now as a weak example to avoid being quiet for a long time.

On the last 30 minutes, I was asked to implement getOrder and addOrder methods (that was the only thing that was stated, as far as I remember) for an order management system.

I started by asking if this was an algorithm or system design question, to which he replied that it was an algorithm question. I chose Java as my language.

I then, naively, spent too much time asking other questions, thinking this would be well perceived (since this is such an open ended question, I thought my requirement assessment skills were being evaluated). I asked:

  1. What kind of orders do we have to deal with?
  2. Does the system use any payment system API?
  3. Should these methods return objects or web response objects (services)?
  4. I discussed scalability topics, such as using the orderId + userId to shard the database if we are dealing with a huge system, etc.
  5. Etc.

My second pitfall was not heeding the interviewer directions to the letter. As I was designing the entities, he kept saying (yeah, just keep it simple), and eventually he made clear he simply wanted to see some database implementation interface. I suggested we go with an SQL based solution so that we would have ACID properties. I then explained that we could have an Ibernate implementation, and that I would have an interface to deal with generic CRUDE db interfaces. As I didn't have much time left, I ended up implementing only a skeleton of the solution:

  • A skeleton of the getOrder and addOrder methods, just doing some object validation and calling the database interface;
  • A skeleton of the entity management (crude), without being able to really implement anything.

The next day, I received an email telling me they would not move forward with my application.

With that, I've come down to the following conclusion: I won't do any interviewing for a FAANG company before throughtly preparing, which may take from 6 months to a year. This is what I plan to do:

  • There are several books I want to read, such as "Design Patterns: Elements of Reusable Object-Oriented Software", "Introduction to Algorithms - Third Editon" and "An introduction to Information Retrieval, Online edition".
  • Doing 2 hours of LeetCode every day, starting from the easy ones to build a good foundation. I plan on never looking at an answer, unless I have an accepted submision.
  • Writing down good behavioral stories that may be employed on several questions. I do have good stories, just need to have them on the tip of my tongue.
  • Trying a mock interivew or two.
  • When my first interview is scheduled, I'll buy LeetCode premium and tackle the most recent questions of the company I'm applying for.

Having said that, is there any advice you would offer about my study plan? Is there something obvious that I might be missing, which would be important to achieve my goals?

On a side note, how would one go about acing the technical question? Just focus on the database interface, without spending much time on general questions? e.g.

	...
	PreparedStatement ps = conn.prepareStatement(...); 
	ps.setString(...); 
	ps.setString(...); 
	ps.executeUpdate();
	ps.close();
	...
Comments (4)