Kelvin

Software Engineeer
no-visa
USA
1 yoe
Java
FAANG
Backend
multiple-offers
Offer companies
googleamazonindeeddisneymntnembursetmobileepsilondirecttvnielsenjpmorgancisco
Prep Time

3 months

Problems solved

421

Avg. Hours per week

15

Target Companies

FAANG

Don't feel dumb if you don't see immediate progress, think of it as working out. Your brain is a muscle too, consistency is key.
Interview Difficulty
Hard
Hard
Hard
Medium
Medium
Medium
Medium
Easy
Easy
Easy
Easy
Easy
Topic Confidence

Arrays

High

Strings

High

Linked list

High

Trees

Medium

Graphs

Medium

DP

Low

Greedy

High

Back Tracking

Medium

System design

Low

OOP

High
Resources
Neetcode
Cracking the Coding Interview
Excalidraw
Other details
50
10
40

Prep Approach

I had not done Leetcode problems before and lacked confidence in. My process got much more refined as I practiced more and learned what worked best for me. Here are some tips I have for you from the perspective of someone who had no experience.

  • Do breadth, then depth. To get situated with each topic, I recommend skimming through the Cracking the Coding interview. Try to solve the example problems on paper but don't try to code them up. You must receive feedback on your work, it's better to use Leetcode's test cases rather than think of your own starting out.
  • After getting a high-level understanding of every topic, I recommend making your way through Neetcode. Do EASY in each topic at first, then move on to MEDIUMS. When you move on to mediums, it's time to dive deep into each topic. This depends entirely on how much time you have but I highly recommend spending one week on one topic. It's important to have some understanding of each topic because a lot of times you will see 2-3 different topics combined in one question. Not all topics are equal, if I had to pick a few important ones to focus on, I'd go with arrays/strings/hashing/trees/graphs. Know your target company and what kind of questions they like to ask.
  • Now, if you still have time, practice spaced repetition to really pat it down. Revisit topics that you haven't touched on in a while. Mix in random problems into your practice, and take part in Leetcode contests to test your skills. Turn off autocomplete if you have it on Leetcode.
  • Do mock interviews. Also, you can practice with real companies you don't care about to get an authentic experience. I used hired.com (some people have had mixed luck with it) to get 30+ practice interviews with random companies, but not all of them whiteboard so we are wary of that (I still think it's good practice even if they don't whiteboard).

Interviews Approach

  • Paraphrase and repeat questions back to the interviewer
  • Clarify Assumptions - Check for invalid/empty/negative/different type input - Is input sorted? Can you modify the input? - How big is the input range? - Write down input and desired output - Constraints/edge cases
  • Work through a simplified example to ensure you understood the question.
  • Think of possible solutions, and identify the time and space of each: STRATEGIES: - visualize the problem by drawing it out - think about how you would solve the problem by hand - come up with more examples - break down the problem into subproblems - apply common data structures and algorithms at the problem - think of brute force solution
  • Optimizations - Think of the best possible time complexity - Identify overlapping / repeated computation - Identify redundant work - Try different data structures
  • Code up problems and talk through decisions and tradeoffs while coding
  • Go through a test case by hand and clean up code if need be