Amazon June 2020 | SDE2 | Vancouver [SDE1 Offer, 2 YOE]
Anonymous User
2170

YOE: Just about 2.
Current: no-name startup
Recruiter reached out to me on LinkedIn.

Here's what my experience was like preparing for this interview, hope someone finds it useful.

I can't believe I actually got an offer. Previously, I've received online assessments from Google, Amazon, etc, but I was so bad at Leetcoding that I would open the assessment, spend 30 mins, and just be like "nope" and close everything. I never took leetcoding seriously until about 2 months ago when I got another chance at Amazon. I set myself up with a study plan and told myself I have to get an offer here. Seems like if you want to advance your career in tech, leetcoding is a must.

After receiving the OA, the recruiter offered to give me about 1 month to complete the assessment. I started studying data structures and algorithms and refreshed on everything I learned in university. I practiced a few questions under Amazon OA thread and both questions I received were from there. Thankfully I understood the question really well and was able to do great on the OA. I passed all test cases and received an onsite opportunity the next day. This was my first FAANG onsite interview, which was exciting and also very nerve wracking.

I chose the latest possible onsite date, and started researching what Amazon looks for in an interview. I had to work on Leadership Principles (LPs), System Design, OOP, and more leetcode. I had about 5 weeks until my onsite interview, and for those next 5 weeks, I was a cave dweller, waking up at 6am to study, working 9am - 5pm, and from 5pm - 10pm, studying more.

Data Structures & Algorithms Preparation

  • I pulled out good old CLRS, CTCI, and gave these books a good skim through.
  • Did about 3/4 of the top Amazon questions, and learned the concepts.
  • Did top 75 curated leetcode problems.

This was most of my preparation. There was no point doing any more. I got Evernote and created a table of about 100 problems I did.
My evernote columns looked like this, (green means I know the question by heart, orange if I need practice, no color if I have yet to do the question)
image
I took notes about the solution and reviewed the notes as it solidified my mental models for each problem.

System Design Preparation
I read a few chapters of Designing Data Intestive Applications book which versed me well in System Design.
The infamous system design course that everyone knows. Bought for like $100 CAD, wasn't too useful.
System design primer, great resource.
High scalability blog and other similar websites.
Youtube videos, etc.
Researched the team I'm interviewing for, and brainstormed what kind of questions they might ask.

OOP preparation
None really, I'm confident on my skills here.
I did go through almost every single SDE2 experience and tried to do all the questions.

Leadership Principles (LPs) preparation
This is where I shined. I've worked at a startup for the last 2 years and have done some great work. I had a lot of impressive stories so I came up with about 20. I ranked them from best to worst. Best stories applied to many LPs. Worst stories were at the bottom, and I'd only use these if I ran out of good stories.

I listed them in STAR format on Evernote and just read them over at times. I read them out to a friend and got their opinion, and fixed a few inconsistencies in the stories and worded them better.

Overall, it was such a pain to prepare for everything. I went from not being able to solve a single leetcode problem on my own to feeling confident that I could take on any FAANG interview. It was really stressful. I really wanted to prove to myself that I could get an offer if I really tried, so that pressure helped. At the same time, I put so much pressure on myself that I thought I was going to lose it. I kept telling myself "if I don't get an offer it's alright I tried and that's what counts" but deep down I knew I'd be severely disappointed anyway.

So a few tips for everyone out there who is in a similar situation, here's how to not lose your mind:

  • have a beer
  • get up every once in a while and walk around
  • take notes of everything you do so you can keep track of progress
  • if you feel like your head is going to explode when studying, take a 20 minute nap (this is a life saver)
  • don't work past 10pm (you'll be annoyed you can't retain anything you read because your brain is tired, study in the morning instead)
  • have a beer
  • take a day off, you won't forget anything by taking a 24 hour break

Online Assessment

  1. Something like number of islands
  2. Reorder data logs

Received email from recruiter and invited to onsite next day.
Onsite was scheduled for ~5-6 weeks into the future.

Onsite
Round 1:
I believe the hiring manager. LP questions, I answered them greatly and the manager mentioned all my stories fit his follow up questions perfectly, so he had to find other questions which didn't fit my existing story.

Moved onto system design. I started by clarifying some things, didn't need to worry about estimations (I think the manager did them prior to the interview), and moved onto high level architecture design. Talked briefly of how to store things, I brought up SQL vs NoSQL, then he tried to nudge me into another direction. Took my longer than I'd hoped to figure out what he wanted, but I think I got there in the end.

This was probably my weakest round as it felt it came and went by in an instant. I had thought it would be much longer and we could get in the nitty-gritty details of everything.

Round 2:
This was an OOP round. Usual questions on object-oriented concepts. Designed high level classes, some methods, interfaces, etc. The interviewer guided me in a direction he wanted me to go in, and I implemented what he wanted following that.

He mentioned it was perfect, and there was nothing to improve, and that's exactly what he was looking for, and moved onto me asking questions.

Round 3:
Coding round with an SDE I believe. I was asked a question that's commonly asked and is under the top Amazon questions. I had solved it weeks ago, but it wasn't fresh in my memory so it still required a lot of thinking and problem solving.

I explained the question well, asked for clarifying inputs and edge cases, asked if I should move onto the code, and coded up a solution. The time complexity was not great, so I then mentioned how we can improve it and coded the optimal approach.

The interviewer seemed happy, and mentioned that's what he was looking for.
Ended with me asking questions.

Round 4:
This I think was the bar raiser, didn't seem like it. Very friendly person. Started off with LPs as usual, and he mentioned I had some good answers.

Moved onto a coding question, it was String based, but not anywhere on Leetcode. It wasn't intensely difficult or involved algorithms or data structures, rather it forced me to really think and consider all edge cases.

I coded up the approach, he pointed out one small thing (misplaced a "break" statement), took me a second to correct that. I spoke aloud "I'll just think for a second, how can we optimize this?" but the interviewer mentioned it's fine and that the answer is good.

Went onto me asking questions. He was very open to answer things, and we actually went over time.

After
I received good news after 1 business day that I'll be made an offer. It was, however, an SDE1 offer. It wasn't what I was expecting but the recruiter hinted that it wasn't based on my interview performance, but based on the fact that I'd just hit my 2 years of experience mark.

I recently had a chat with my to-be manager, and he mentioned that since my interview performance was SDE2 level, and my LP stories were great, he can see me promoted to SDE2 in less than a year and he'll help me get there asap. He said I just need to be exposed to some largely scalable systems in practice and I'll be there. He eased my concerns over whether accepting SDE1 would mean "starting over". He seemed like a great manager.

This downlevel was understandable. I did feel all "I did all that preparation but all I got was SDE1" at first but thinking logically, it worked out in my favour. I would not have to compete with people 5-10 years into their career as soon as I started. It would be less stressful starting work knowing I have SDE1 level expectations. Once I felt more comfortable working, moving into an SDE2 role would be more comfortable.

In addition, I ended up getting the higher band of SDE1 compensation which I couldn't be happier with. It is >100% increase in my current salary.

Happy to answer any questions you guys might have.

Comments (6)