- Know the job role and position.!
For SDE Interview preparation:
- Learn all the data structures and knows it best/average/worst-case time complexity.
- Also, learn it’s the usage and real-time application
- I will suggest you refer Geeksforgeeks or any similar sites and solve plenty of problems from each DS. (Note: The purpose is to get an idea of how to approach problems in different ways! Don’t expect similar problems during the Interview.)
- First, try to solve the problem by yourself. Once you get enough solution, check whether your solution is optimal.
- It takes few years to solve all the problems in geeks for geeks 😛 The purpose is not to solve a higher number of problems, instead try to learn the techniques in each problem and solve the maximum of 3 to 5 problems in each technique.
- Don’t just memorize the solution. Write the code in paper and do a dry run.
- Once you are done with preparation. Go through past Interview experience in Geeksforgeeks. There is a 300+ Amazon Interview experience shared in Geeksforgeeks. Go through at least 25+ Interview experience to know if you are ready for the interview.
- If you are not ready, solve a few more problems in those areas where you lag.
- Once you are fully confident, contact any amazonian through LinkedIn for referrals.
FIND THE DETAILED ANSWER BELOW
- Know the job role!
- We have many tech roles, not all require data structure knowledge.
- Choose the role which suits you. Mentioning a few roles:
- Software Developer Engineer (SDE), Front End Engineer (FEE), Data Engineer (DE), Quality Assurance Engineer (QAE), Software Support Engineer (SE)
Since most of the other answers are related to the SDE role, I’m providing tips for SDE.
SDE-1 (Entry Level Developer)
We expect SDE-1 to be strong in Problem Solving, Coding, Data Structures, and Algorithms. (Good to have Class/System design skills, but not mandatory).
- You should be able to come up with different approaches for a problem and should trade-off between those to choose the optimal approach.
- You should be able to convert your approach into the working code. Not a problem if you make a bug in code. But you should identify the bug by yourself when pointed out the failure case.
- You should be able to pick up a suitable DS to solve the problem.
- For example, You should use Stack for Parentheses Validation problem rather than Heap or not suitable DS 😉
SDE-2 (Mid-level developer)
- In addition to SDE-1 competency, Class/System design skills will be checked for SDE-2
The interviewer’s expectation is not to know the solution before, instead, we expect candidates to solve the problems on the spot. I know a lot of people who didn’t prepare much for the interview and still able to arrive at an optimal approach during interviews.
Learn different data structures and it’s usage/application. Also learn different algorithms/techniques used in those data structures.
Regarding the preparation, I will suggest you refer geeks for the geek’s site.
Start with a data structure, try to solve all the problems under that and try to learn/understand different techniques in that DS.
The array is a simple data structure, but there are plenty of techniques/algorithms available to solve array problems optimally. Mentioning a few techniques below.
- Binary Search
- It will be helpful to solve a few sorted array problems. To optimize the solution from O(n) to O(lg n)
- Kadane’s Algorithm
- Helpful to solve the subarray problems in O(n)
- Two pointer technique (Left to Right traversal)
- Sliding window problems.
- Two pointer technique (Right to Left traversal)
- Example: Two sum pair
- Making use of DS like Stack/Queue/Heap to solve the problems.
- Example: Sliding window maximum problem, Next Greater element, Kth largest element problem.
Similarly, solve problems in different data structures.