My preparation journey to cracking Amazon’s SDE 1

Ashish Ranjan
4 min readMar 27, 2021

--

It started in mid-October 2019 when I saw a message in the flock from a guy named Jivesh who wanted a peer for preparing for SDE interviews.

After seeing his message I replied to him Interested and that’s how I found a peer for preparation. We had a call on the same day and discussed why we were looking for a change and discussed our current programming state and how we can work on it to crack SDE interviews for some of the top companies. Believe me or not a preparation partner can really help you in being more disciplined and focused during your preparation.

Before moving ahead with the story, let me say a coding question in an SDE interview at companies like Amazon, Microsoft, Google, Apple, etc can consist of questions from the following

  1. Arrays
  2. Strings
  3. Graphs
  4. Linked List
  5. Trees
  6. Trie
  7. Heaps and Maps
  8. Stacks and Queues
  9. Greedy
  10. Backtracking
  11. Hashing
  12. Dynamic Programming
  13. Bit manipulation
  14. Searching and Sorting
  15. Time complexity

Yeah, that’s almost the whole DS/Algo but believe me or not the harsh truth is there is no predefined syllabus for these interviews and questions can be dropped from any part of the DS/Algo. Apart from this, the interview rounds can consist of questions related to your projects, your skillset, system design, and some behavioral questions. I will be linking some of the resources at the end which helped me during my preparation.

Returning back to the story, after the analysis of our status, Jivesh and both came to the conclusion that we are okay with arrays, linked lists, and trees and we really need to work on the rest of the mentioned topic. So to start with our preparation we both decided to start with something in which we both are noobs and we decided to pick up Graphs. For each topic, we decided to cover the famous algorithms of that topic first and then move to practice the questions of that topic until we get confident in those topics. You can find famous algorithms for DS/Algo topics here. Once we completed the algorithm part we used to practice most of our problems from geeksforgeeks practice problems and interviewbit. I would suggest sticking to one or two platforms for preparation as it will help you track your progress for your preparation. We repeated the same process for completing the rest of the DS/Algo topics. Apart from this, we used to read technical blogs and watch system design videos to tackle questions regarding system design. This is how we completed all the topics we needed for the interview.

But the story doesn’t get over here, to be on the right track we need to be doing the self-assessment to check whether we are improving or not, so for self-assessment, we used to have bi-weekly mock-interviews and used to practice previously asked question in the companies. By doing the self-assessment and practice we eventually realized that there is a pattern that most of the questions of these topics are based on and it is very important to understand and identify these patterns during practice. Remember you need to work smart not hard(that means fewer questions but more understanding). I still remember what my Jivesh said to me in this world there are guys who cracked google’s interview by solving ~300 questions and in the same world, there are guys who fail to do so even by solving ~1000 questions. So focus on quality rather than quantity this will help you grow.

Okay, that’s how we completed 80% of the preparation and the time came for revision. For revision, we both decided to stick to a small and compact resource, one was this link and the second was our own practice question code. I would suggest starting the revision 2–3 days before the interview and keep all you practiced code somewhere safe for lookup.

And now coming to the motivation why you as an awesome developer should be knowing this is because

  1. These big companies really want smart programmers to solve their technical problems. Anyone can solve a problem given an infinite period of time but big firms don’t have infinite time to solve their problems. So they need smart and intelligent people in their team for solving these problems.
  2. If you really want to be a good developer having the curiosity for learning new stuff and solving complex problems using your innovative ideas must be a habit for you, and getting the knowledge of DS/Algo will open new gates for you to find solutions for complex problems.

I know a very good amount of effort is involved in the preparation for the SDE interviews of these big companies, but believe me, all the pain is worth doing once you get into one of these companies and the perks you get from your jobs. There will be a very depressing time coming during your preparation, but you need to be consistent with your preparation and keep pushing hard.

Thanks for reading it till here guys, I will soon be sharing my interview experience in a different blog.

Links to resources which I used for my preparation:

Learning DS/Algo(there are lots of resources these were my favorite):

https://www.youtube.com/user/mycodeschool/playlists

https://www.geeksforgeeks.org/

https://www.hackerearth.com/practice/data-structures/arrays/1-d/tutorial/

https://www.hackerearth.com/practice/algorithms/searching/linear-search/tutorial/

Practicing questions (Select one or two):

https://www.hackerearth.com/practice/

https://www.interviewbit.com/courses/programming/

https://practice.geeksforgeeks.org/explore/?page=1

https://leetcode.com/problemset/all/

https://codeforces.com/

https://www.codechef.com/

Platforms for mock interviews:
https://www.interviewbit.com/mock-interview/

https://www.pramp.com/#/

Technical Blogs:

https://www.yourinterviewblog.com/

https://www.geeksforgeeks.org/

http://highscalability.com/

If you have money:

https://www.educative.io/courses/grokking-the-system-design-interview

https://www.educative.io/courses/grokking-the-coding-interview

--

--