Amazon | SDE2 | Sydney | 2020 [Reject]
Anonymous User
2780
Status: Experienced
Position (current): SSE at a Finacial Institution
Position (interview): SDE 2
Location: Sydney, Australia
Date: Oct-Dec 2020

Hi folks,
I wanted to share my experience interviewing with Amazon in Sydney. I'm a Software Developer by trade (mid level) and have been preparing for LC-style interviews since August 2020.

Spoiler alert - I signed an NDA, so won't be sharing exact questions.

Here's how it went -

Sep 2020 (Application) -

  • I applied through the Amazon jobs website for a role that I thought suited best to my skill-set. I don't follow a scatter-gun approach to apply to every job that's out there.
  • I got an invite from the recruiter (who was beyond brilliant btw) to attempt the Online Assessment.

Oct 2020 (Online Assessment) -

  • Typical OA - 2 coding questions, followed by a section to write the approach, and then a work-style survey.
  • Both the questions (medium level hashmap and hard level graph) I was able to solve optimally. Passed all the test cases for both the questions, wrote clean and modular code replete with method level JavaDoc and code level comments, and explained my solution with time and space complexity in the next section.
  • Got a call from the recruiter the next day - they were happy to move forward to a phone screen. He mentioned they liked the coding style, along with the helpful comments and optimal code.

Nov 2020 (Phone Screen) -

  • There were two people on the panel, one of them was merely shadowing and silent the entire time. The interviewer was extremely friendly and accomodating. Typical LP questions first, before we jumped onto a coding question.
  • It was a String + Recursion kinda question, I would call it LC medium. You're expected to come up with your choice of input (think how you want data to be given to you as input - set, list, map, trie, etc). I solved the question using recursion. I had made a note to memoize the result, there were just 2 lines of code that were needed to be added - but we stopped before I could do so. Immediately after the interview, I sent an email to the recruiter about the same.
  • I received the call the next day that they will be moving to the onsite loops - but I need to work on optimizing my code (I thought as much).

Dec 2020 (Amazon Loop) -

  • Round 1 (Bar Raiser) - The interviewer was kinda cool, and had a keen interest in what I was speaking. 30 mins of LP questions with loads of follow-ups. We then moved onto the coding challenge - 2 LC medium questions - I coded solutions to both and spoke about how I would optimize the code for certain scenarios. He pointed a small bug (< vs <=) in my code, but seemed happy with my approach.

  • Round 2 (LLD) - There were two interviewers, one of them was shadowing the other. Started with LP questions (the interviewer asked the same question like the ones asked by the bar raiser - and I wasn't expecting that). 30 mins later, we proceeded to the coding challenge - and here is where I think things didn't go great. The question was very vague, and until now I don't know what was asked. I tried to dig deeper and deeper by asking clarifying questions, but I'm not sure what was being assessed. I wrote modular code and I was asked to write unit tests for the same - which I did. Later they twisted the question and added some more complexity, but my code (with the test case) was able to handle that easily.

  • Round 3 (Coding) - There were two interviewers, one of them was shadowing the other. Typical LP questions first (20 mins) before we jumped onto the coding question. It was an LC hard type question, and I hadn't seen it before (it isn't listed here though :)). I asked a lot of clarifying questions and eventually settled on an approach that seemed to work. Halfway through I thought I was trying to over-optimize (the interviewer pointed it out) and I immediately took that as a cue to do something simpler (recursion). I coded it out and it seemed to work (verified later that it certainly did). The interviewer asked me to clean up the code to remove redundant if checks, and I was very close to doing that before we ran out of time.

  • Round 4 (System Design) - This was the hiring manager. He explained the project and what the team is working on - and dare I say - was very very polite/humble/accomodating. 30 mins of intense LP questions (with umpteen follow-ups) - we moved onto system design. Initially, I thought there was more time on my side (since the interviewer mentioned "taking my time") - but I guess I mistook that. 20 mins in and he mentioned that we have 4-5 mins left to complete. I rushed through the design touching on load balancing, caching, DB, redundancy, and service level breakdown. He seemed quite happy with the design - though I thought I could've done much better.

Outcome -

I got a call the next day that the committee wouldn't be moving forward towards an offer. I was gutted and was left wondering where I might have not met the bar. He mentioned that they had concerns about me using multiple if loops (see round 3 - boolean algebra - damn you), and not being able to come up with enough unit tests (see round 2). They were happy with the system design though, and other things in general. You only get a verbal feedback from the recruiter, so this is all that I could remember.

Nevertheless, it was a positive experience (the kind you're not quite used to in Australia with recruiters ghosting you after you spend the entire week doing a USELESS coding assignment - I have been rejected for using double instead of BigDecimal in such stupid assessments). You might code out everything properly (non-brute-force), in some cases optimally but still not get a hire decision to go your way. Anyway, the point is to keep my chin up and prepare better. There's always something better out there, and you can only become better than what you were yesterday!

Some Tips -

  • Prepare well, and expect to be thrown curve-ball questions at.
  • Ask clarifying questions. Learn the art of paraphrasing.
  • Keep a track of time when answering the LP questions. You don't wanna talk too less to invite umpteen follow-ups, neither do you wanna talk too much to leave yourself precious little time at the end to do the coding part.
  • Keep a bottle of water near you - you end up talking non-stop!
  • Talk through your approach, and also whilst you code.
  • Aussie folks - Most agency recruiters are leeches. Don't waste your time running behind them.
  • Practise, persevere, and believe in yourself.
  • See the last point above.

Lastly, thanks to the LC community! Y'all have been Good Samaritans, and I wouldn't have envisioned getting this far without the LC fam :)

Abbreviations -

  1. LC - Leetcode (d'uh)
  2. LP - Amazon Leadership Principles
Comments (4)