Cracking Big Tech (FAANG) as a Senior Engineer (12 + YOE, Non IIT| IIIT|NIT|BITS)

Shoibal Karmakar
6 min readSep 8, 2021

--

Patience…. Perseverance…. Acceptance of failure…. is key to cracking big techs. Please read on to understand what I mean….

Introduction

My name is Shoibal Karmakar. I am employed as Senior Software Engineer (SDE III) @ Microsoft.

Little bit of background

I am a BE in IT from a private engineering college (YCCE) from Nagpur. During our college days we were not even aware of the importance of DSA. We took it as a normal subject and our goal was just to pass the subject so that we can move on.. :). Getting into Indian service based software companies during our campus placement was a dream. So basically, we didn’t even know that big techs hire employees from colleges like ours. :)

The journey as a software engineer begins

During third year, campus placements began. I got placed in Patni Computer Systems (now Capgemini, a service based company). Worked there for 3.5 years. Switched to Sears Holdings (a captive unit). After working for 2.5 years switched to my first product company, Avaya (tier 3 product). Avaya interviews were mostly Java questions and Design Patterns.

Realization and Enlightenment

I worked in Avaya for roughly 4.5 years. Its here I was enlightened about FAANG or Big Techs in general. After round 2.5 years working here, a question popped into my mind, what next? How to get into Google or Microsoft or Amazon or Facebook?

I started interacting with new grads who joined our team as I used to see them solve DSA problems on platforms like Leetcode (did not know about Leetcode even :D). After interacting with them, reading through blogs and vlogs the realization dawned that I need to be excellent with DSA and System Design.

After starting to explore about DSA I realized that these concepts I already studied during my engineering days. But as I did not concentrate on solidifying these concepts, which I should have, the task of learning DSA became all the more daunting as I now had to start from scratch and that too while managing my 8–10 hour job.

The journey to Big Techs begin

Big techs never focus on tech stack interviews viz. Java, React, Spring, Hibernate etc.. etc.. There focus is on problem solving using DSA and System Design. So how to ace those?

Commencement of DSA

I started learning DSA from scratch. I started with the book Data Structures and Algorithms made easy in Java by Narasimha Karumanchi. Its an excellent book to start your learning. The language used is pretty fluid and not very difficult to understand. I read through the entire book patiently and solved the questions given in the exercises using pen and paper. Its very important to write code in plain paper or white board basically no computer or IDE. It took time to complete the entire book. It took me around 2 months to complete that small book.

After completing the book, I started solving questions on Leetcode. Started with easy ones and could not even solve those. It took time to ace the easy questions, around 3–4 months. Then I slowly progressed to medium questions. And found it extremely daunting. Even if I solved a question it was not good enough time complexity wise. Slowly but surely I progressed. It took time. It took me total of 2 years to reach a level of confidence that I can solve medium questions (which is generally the complexity of questions asked in tech interviews). It took time primarily because I had to balance my work, my family and learning.

Hard questions, I did, but far and few. Around 40 in total on Leetcode till today. I know its embarrassing. But its difficult to spend that much time with work in back of your mind.

NOTE: Dynamic programming is tough and its tough for others as well. The only way to get comfortable with DP is to practice.. practice.. and practice… you will eventually be able to solve . (Even I can’t solve all DP problems even today ;))

System Design

Along with DSA its very important to learn System Design as well. Especially for senior engineers as the interview weightage for DSA and System Design is 50% each. Sometimes more on System Design (especially on bar raisers).

For System Design I started referring YouTube videos by Gaurav Sen, Clement Mihailescu, Tusshar Roy and whatever other videos I can lay my hands on. Also I read any article or case study that I could find on designing systems over the internet.

Generally these videos talk about system design at high levels viz. load balancers, servers, databases and overall architecture. Which is really awesome and very important to know. But as senior you are required to ace the HLD, LLD and design at code level as well.

Senior engineer’s initial design rounds will consist of designing HLD like Design YouTube, Design Instagram, Design Tinyurl. Then also little granular stuff like which messaging queue will you use and why? What database would you choose and why and all these stuff.

But as you go along, the later design rounds and bar raisers will involve designing a module or a code flow eg: How will you design a code profiler, how would you read a data from database and handle the data (includes handling multithreading locks, exception handling and identifying all the possible failure scenarios and how to handle those). Along with design, most of the time you will be asked to write the code for that module (a method which handles that scenario with all the edge cases and error handling and multithreading).

At this senior level, you should have some first hand design experience. Just reading stuff on internet won’t help as the interviews go deeper and in more granular details for the design (code level).

Resources used to learn

DSA Learning and Practice

  • Data Structures and Algorithms made easy by Narasimha Karumanchi
  • Geeks for Geeks course (purchased)
  • YouTube videos by Gaurav Sen, Rachit Jain
  • Algoexpert.io subscription
  • Leetcode
  • Codechef
  • Hackerrank
  • Google Code Jam

System Design learning and practice

  • Systems expert.io subscription
  • YouTube videos by Gaurav Sen, Tusshar Roy
  • educative.io (Grokking system design) purchased.
  • My personal design experience @ my work (not possible for everyone to get this experience. In that case I would suggest, get into some mock interviews with your seniors or peers).
  • Random case studies over the internet.

Commencement of interviews

After spending a total of 4.5 years (which includes 2 years of learning) at Avaya (tier 3 product), I made a switch to ServiceNow (tier 2 product). At ServiceNow I continued with my learning and practice. And while in ServiceNow I continued giving interviews. Till the day I got my first big tech call, I continued to fail in other product company interviews eg: Mentor Graphics, Arcesium…etc..

Finally my first big tech interview got scheduled at Amazon. Failed miserably :D. This was the start of many big tech failures to come. I continued learning and continued giving interviews. Kept on polishing on interview skills. Kept on improving on speed of solving problems. Kept on reading and improving on System Design presentations.

So totally I failed once in Google, once in Facebook London, twice in Amazon, once in Uber and 4 times in Microsoft.

Success at last :)

Finally after around 4.5–5 years of hard work, cleared all rounds of my first Big Tech…… MICROSOFT…. :D :D

How I managed time

As I already told above, my preparation started late into my career, to be precise, after almost 8 years of working in software industry. So learning was always going to be tough. I used to utilize every bit of time available to me apart from work and family time. Used to get up early in the morning to read and practice. Burned late night oil to read and practice.

Key learnings

Hard work always pays off. Failures will come. A lot of failures, especially at senior level. Do not get discouraged by that. Learn from your failures and keep on learning and practicing. Success will come.

Interview format for Senior Engineers in Big Techs

Generally in any Big Techs the interviews for Senior Engineer will focus on coding i.e. problem solving using DSA and System Design equally. The weightage will be 50% each. Sometimes the System Design will be of more weightage. The bar raiser will be on System Design.

Coding rounds will be tough. Not in terms of questions (mostly), but in terms of accuracy and speed. As you are a senior you will be expected to solve 2 problems (medium in general) in 35 mins.

System Design rounds, you will be expected to catch all corner cases. Think of all the possible use cases and failure scenarios and come up with a solution to address those.

Cheers to all. And all the very best. :)

--

--