Thank you leetcode community. Going into this interview there were a lot of helpful and relevant posts that helped me understand the interviewing process and I'd like to give back.
My background:
I went to college for computer science and due to extenuating circumstances I had to drop out in the 3rd year and since then I haven't planned to go back. I was able to join a SaaS company local to me that understood my situation and gave me a chance. I've been here for 4 years and 5 months working in Operations focused roles and more recently as an SRE. I had always wanted to be a software engineer but always kind of figured my options were slim to none and I should be happy to take anything I can get. I have to thank one friend in particular because he got me out of that loser mindset and made me realize there will always be opportunities for me to be an SDE even if its not a big company. This is a very shortened version of my background but I want to convey to anyone like me whos reading this... you can do it. I mean it.
My Preparation/Tips:
300 Leetcode problems
50/50 - Easy/Medium
Write notes for every interesting problem you solve. I made sure to write notes on Time/Space complexity and the strategy used for most problems I solved. Yes there is a solutions tab but writing notes for yourself will help ingrain the information. When you problem solve, always think out loud, this is an extremely valuable practice for a real interview. It'll help make the interviewer want to help you, trust me. Lastly don't worry if you can't solve every hard problem after months of studying. Doing mostly Medium problems should get you to a level where you could solve the 'Hard' problems to some extent.
Interview 1:
Object oriented design (OOD) round. 15-20 minutes of intros and leadership principle questions. 40 minutes writing classes/functionality. Interviewer was nice and gave me freedom in how I wanted to design the classes. I didn't do particularly good or bad, it was an open ended problem so this round was 50/50 in my mind.
Interview 2:
Problem solving round. 15-20 minutes of intros and leadership principle questions. 40 minutes of coding. This involved object transformation. LC Medium level problem. This was unlike any LC problem I'd seen so all I can say is get comfortable with string operations/casting operations. This problem wasn't too bad, just a process. Interviewer was very helpful and gave words of affirmation along the way so this was a win in my mind.
Interview 3:
Problem solving round. 15-20 minutes of intros and leadership principle questions. 40 minutes of coding. LC Medium BFS graph problem. If you can do this you should be good https://leetcode.com/problems/number-of-islands/. This problem and its variants are problems I'd use to warm up with before interviews, basically just starting from scratch and re-solving them, so I crushed this round. This went a long way as the hiring manager mentioned afterward that my interviewer was impressed. This was a huge win for me.
Interview 4:
OOD round. 15-20 minutes of intros and leadership principles. 30-40 minutes ish of coding, 5-10 minutes final thoughts. This round was with the hiring manager himself and to my surprise, was another OOD round which I wasn't expecting. This was my last interview and objectively the worst one. He was very talkative and tried guiding me through my design choices but my brain was fried at this point. I kept thinking 'what does he want me to do?' and 'is this what he wants?'. If you have an interviewer who leads you around like this just stay firm to your own ideas as long you can justify them. Him and I thought about the problem differently which isn't an issue in itself but I ended up not really writing anything in the end because I was indecisive of the direction I should go.
Conclusion:
Amazon congratulated me the next day. On the follow up call with the hiring manager, he said I did really great which was a huge surprise to me. From what he told me, it sounded like I did really well in every interview except his. He chalked up my horrible performance in the coding portion of his interview as me being tired/fried in the last round. Looking back I definitely got an easy set of interviews but I'm still happy and grateful for passing.