Jeff's announcement post
Jeff outlined his story: here
In his own words
He wrote out his story after receiving his Amazon offer and before receiving his Snapchat offer that he ultimately decided to go with!
TLDR: learn data structures before leetcode, use patterns for leetcode and look at solution fast, find a community for interview prep to help with burnout/consistency
I wanted to put together some information/resources to prepare for Technical Interviews. I'm currently a Junior and have known about the Leetcode style interview process but consistently failed OA's and was just generally unable to solve medium Leetcode problems until the last 3 months or so. I just received my Amazon intern offer and have a final round with Snap so I thought it would be helpful just to share some tips, information and strategies I found the most effective and wish I learned sooner. Also this is just my opinion and what worked for me so take it with a grain of salt.
Do not start Leetcoding until you are comfortable with fundamental Data Structures
My experience was that I heard about DSA style interviews during my second programming course after having no previous background in programming. I hopped on Leetcode and got completely demoralized because I couldn't solve 90% of easy problems. I didn't know what a heap was and had never heard about graphs and so many other fundamentals that trying to learn each piece as I went was overwhelming and I gave up after a week or two. My opinion is that you can learn algorithms as you go and explore patterns but it's much more difficult to learn both at the same time and most solutions for problems discuss the algorithm and just assume understanding of the data structures used.
This is a really brief summary but I think the core data structures to learn and be able to implement from scratch understanding the time complexities are:
Linked list, Array, ArrayList, Binary Tree, Binary Search Tree, Heap, Hashset, Hashmap, Graphs as edge list and adjacency list, undirected and directed, Stack and Queue.
Resources to learn Data Structures:
Hopefully your university has some course work. We used https://people.cs.vt.edu/shaffer/Book/JAVA3elatest.pdf. In general I think it's good to know but you don't need the extreme depth covered in a textbook or more exotic data structures for intern interviews. I would recommend being able to implement and use them in your language of choice and understanding time complexities of different operations. Also I really liked William Fisets youtube channel for this material
You know your Data Structures how to approach Leetcode?
I'm copying advice I've seen posted on this subreddit before that really helped me. I really struggled after having the fundamentals of just not making any progress and still having to look at the answer for 50% of the easy problems and 90% of the mediums. I was just randomly selecting problems and then I would get discourage and stop practicing for weeks or a month.
Do not spend 45 minutes stuck on 1 problem:
This has been said before but spend 5 minutes honestly attempting the problem. If you are completely stuck and not making progress look and understand the solution and flag the problem to come back to later. I used a google sheet where I would track every problem, the category, if I passed or failed, and any trick for the problem. Also come back to any problems you fail in 3-7 days. An awesome resource for understanding problems when you are stuck is NeetCode https://www.youtube.com/c/NeetCode . Also if your having trouble with the fundamentals of an Algorithm or concept I got a lot of benefit from Abdul Bari
I used this problem list https://seanprashad.com/leetcode-patterns/ and would pick a pattern and work through all the problems for that section with the advice I listed above. Also make sure to circle back periodically to review certain patterns to make sure the material stays fresh
How to Stay Consistent
Once you've reached this point the hardest part by far for me was just staying consistent in my practice. I would be motivated for a week or two and then burnout and feel like I was right back where I started when I picked it up again. Probably the biggest factor that really changed the game for me and where I started to feel confident in my ability to land a big tech internship was when I found a community of people working through the same process and had support and accountability
Find a community for interview prep:
I joined a program called Hackpack where you're expected to post daily updates on what you did for prep the day before and your plans for today. Having some accountability and making friends in the group that where going through the same process was super motivating and instead of starting and stopping my interview prep I was able to stay consistent for an extended period of time. I think you can replicate this experience with classmates from school and create a discord server where everyone checks in everyday or use a site like https://www.pramp.com and connect with some other people preparing for interviews. Really just any way you can think to remove the isolation of the interview prep process and have some peers you can talk to and connect with that are working through the same process.
Top comments (0)