Rahul

Fullstack Software Engineer

Do not try to memorize or cram anything, it's useless. Instead try to deeply understand concepts and be curious. That's the only way to make this more enjoyable. It's a difficult journey but it will all be worth it at the end!

Bio

Background

Years of Experience

6

Highest Education

Masters

Current Company

JP Morgan - L3

Accepted

Meta

E4

Google

L4

Microsoft

L62

Rejected

Uber

L4

Atlassian

P4

Interview Preparation

Behavioral

  • YT videos by Dan Croitor
  • Understand various Leadership principles.
  • Go through your Resume and write stories following STAR approach Your story should project at-least one of the attribute such as taking lead, resolving conflicts, dealing with ambiguity etc..
  • Read, Rehearse and Repeat.

Technical

Coding:

  • Leetcode
    • Would recommend buying premium subscription. It's worth it.
    • Try to do daily Leetcode challenges. It helps you in being consistent and also covers variety of problems.
    • I used Explore card of Google and Facebook and tried to solve most of the problems.
    • Top 100 questions by frequency.
    • Top 75 LC curated: https://leetcode.com/list/xi4ci4ig/
  • Cracking the Coding Interview book
  • YT channels/videos:
    • Data Structure lectures by Abdul Bari
    • Graph Theory by Willian Fiset
  • Few Tips:
    • Try to solve a problem by yourself, even if you are not able to come-up with an optimal solution.
    • Think about time and space complexity of your solution. Identify sections which can be optimised and think of a better solution/ data structure.
    • After understanding the approach, try to implement it yourself without taking a look at code. This would help you in really understanding the concept.
    • Try to beat 90% of solutions by runtime.

System Design:

  • Book: DDIA (MUST READ if targeting Google)
  • Book: System Design _Interview by Alex Xu
  • System Design Primer by Donne Martin
  • Courses - Groking the System Design and Groking the Advanced System Design
  • YT:
    • System Design Interview videos by Mikhail Smarshchok.
    • InfoQ videos and presentations
    • Go through Architecture of popular systems such as GFS, Kafka, Cassandra etc.

Interview Experiences

Accepted

Meta

Only did Leetcode daily challenges this month and went through 10-15 FB tagged problems(sorted by frequency) before the interview.Spent 1-2 days in preparing for behavioural round as well (writing stories following STAR approach).

Had 2 coding + 1 product design + 1 behavioural round with Facebook.

In 1 coding round I had to solve 2 LC mediums and in other round 1 LC easy and 1 LC Hard was given. Solved all 4 problems. These were all variations of FB tagged problems on Leetcode and if you have solved them, it's fairly easy. Yep, FB is very predictable w.r.t. coding.I had very strong feedback for 2 coding rounds, good feedback for behavioural but my product design round didn't meet E5 expectations. This was I believe happened due to following reasons:

  • Never did a mock-up before or gave any product design interview before. This was the first time for me in an interview setup so was a bit nervous a well. I would highly recommend doing some mock interviews.
  • I had prepared extensively for system design which focuses heavily on the system side (Database, Schema, Partitioning, Replication etc.). In product design, you are expected to focus more on the API side and High level functionality. I was not given a choice between product design and system design round. Talk to your recruiter and see if you can schedule the round where you are strong at.

Recruiter reached out to me and offered to send my packet to HC for E4 as feedback for product design didn't meet the bar for E5. I declined as it was not worth and a down-level for my experience.

Google

I had 3 coding rounds , 1 system design and 1 googlyness round.

Round 1 (Coding): 1 ambiguous problem with follow-ups. Expectation was to gather requirements and frame the problem statement. Once the scope was defined I provided few solutions with Time/Space complexities. Coded the same. Had few follow-ups w.r.t. what changes I'd make to make it thread-safe etc. This went well.

Round 2(Coding): 2 problems were given. First was related to 2-D matrix and 2nd was a graph problem. Solved both.

Round 3(Coding): A problem statement was given related to a e-commerce website. Had to gather requirements and once the scope was clear I understood it was a graph problem. Provided solutions using both DFS and BFS approach, implemented using DFS. Follow-up was again how to make it thread-safe. Next was kind of LLD question where I was given a problem and was expected to define classes/schema and relations. I provided a generic solution which would scale even for cases outside of problem statement scope.

Round 4(System Design): Was a given a problem related to a real life scenario. Very practical but not something you'd find on any YT channel or course. Since I had never seen the problem before there were no biases or known design in my mind. Kept it simple from the beginning. After gathering functional and non-functional requirements and some back-of-the-envelope estimations presented a very simple high level design. I literally drew just 3 components: client, server and a database. Then started talking about how I can scale each layer and talked about trade-offs as well. This was 1 hr round and first 45 mins went pretty well. In last 15 minutes I wasn't sure about what to talk about more as I was not getting any feedback from my interviewer. I believe he only talked during first 10 mins when I was gathering requirements and he had to answer my queries. In last 15 mins I thought of providing an algorithm of how to implement my approach and talked about few data-structures as well (although this might not be in scope of system design round). After the interview I knew it won't be a No Hire but was also not sure whether it would be Lean Hire or Hire etc.

Round 5(Googlyness): This was the best round. I discussed about various scenarios and situations following the STAR approach. I had prepared a lot of answers w.r.t. ambiguity, leadership, conflict, strengths etc. but I was kind of surprised as he didn't ask any direct questions which you usually prepare. I guess I only used 1 prepared story and rest was on the fly. But if you had prepared enough, you'll know what to answer and how to answer and would be able to relate to it using one of your experiences/projects.

Problems asked in Google were not directly from LC or any other platform. If you had practiced enough, you'll be able to solve them.Make sure you gather requirements, ask questions before jumping to solution. Keep talking and explain your thought process through-out. This is very important as interviewer would be able to judge you better and provide hints, if required.

Microsoft

Round 1 (Coding):  It was a online assessment round. I had to solve 2 problems in 90 mins time. These 2 problems were new to me and I didn't find them on Leetcode. I'll categorize them as LC medium from algorithm perspective. But I had to write a lot of boiler-plate code unlike the usual LC mediums. You are given few visible test-cases and option to add custom test-cases. When you submit, 10-12 hidden test-cases are executed which are only visible post submission. So make sure you write your own test-cases well. After talking to various folks and going through community discussions, I also focused on code quality.I was able to solve both of them in 60 mins. Spent next 15 mins in adding comments in various functions to explain what they were doing. I also mentioned time and space complexity wherever I felt it was required. This is really important as this was not the screening round for me but an actual coding round where I would be judged not just on code correctness but also on code quality/modularity.My score was 100% (I passed all the visible and hidden test-cases for both the problems)

Round 2(Coding): 2 LC mediums with follow-ups. This went really well. Since we completed the coding exercise in ~35 mins, spent next 10 mins discussing my work experience/projects.

Round 3(LLD): First 10-15 mins were spent on my work experience. I had to design a Parking-Lot. Went well. You can find a lot of example/tutorials on Y**tb etc.

Round 4(HLD): This was the Hiring Manager round. First 20 mins spent on my projects and various discussions w.r.t. how I handled a particular scenario and why I chose one technology over other. Next was given a popular HLD question. I did very well here.

Round 5(Director): This was mostly project discussions and behavioural questions. Nothing technical. Went well.

Rejected

Uber

Screening Round: This was rather unexpected as interviewer gave me a LC Hard graph problem!! Who expects a LC hard in screening ? Well, Graph theory is one of my favourite and kind of my strength too, so I solved the problem well within time limit. At the start of the interview she told that if I could write the psuedo-code, that'd we fine too. But since we had time, I wrote some test-cases and tried the ones she copied pasted as well. All worked, pheww.

Round 1(Coding): 2 LC medium types. 1 related to Linked-List and other binary tree problem. Solved both.

Round 2(Coding): 1 data-structure design problem with lot of follow-ups including making it thread safe. Similar to Design a HashMap with custom O(1) operations. I was able to come up with design and implemented the same with O(1) complexity. Couldn't find the variation given to me on Leetcode.

Round 3(System Design): Design Uber. (yep, LOL)

Round 4 (Hiring Manager): Mostly project discussions and Behavioural questions.

Round 5 (Behavioural) - Cancelled. I received offers from Google and Microsoft and asked them to cancel as I had a deadline to make a decision on offers.

Atlassian

I felt Atlassian's interviews are really practical and they don't ask questions which you won't be expected to solve on a daily-basis. No screening round here, just a 30 min discussion with recruiter before scheduling interviews:

Round 1(Coding) : 1 problem was given. I was expected to code the same in my preferred IDE (IntelliJ, Eclipse etc.). Focus was mostly on data-structures and code quality. The algorithm itself was really easy if you chose correct data-structures. I used HashMap, Set and PriorityQueue in my solution. Created multiple classes, methods etc. Wrote a few test-cases. You end-up writing a lot of boiler-plate code in IDE as you need to write the main class and method, instantiate everything and then create test-cases. I even used a debugger to debug one of the test-case. This round went well.

Round 2(Machine Coding): Asked to implement a Rate-Limiter. Used an IDE again. Was given 1 problem statement and was expected to write a Object-oriented and modular code. This also went well.

Feedback of both the rounds were positive and recruiter scheduled 3 more rounds for me. 1 Design and 2 Cultural fit types. But I had to cancel them all as I had a deadline to make a decision on offers.

Sign up to be notified of new interview experiences!

One weekly email curated with top-tier FAANG interview experiences. No spam.