How to study for software engineering interview: A step by step guide to interview preparation for top Product based companies in world

How to study for software engineering interview: A step by step guide to interview preparation for top Product based companies in world

In 2016 while explaining the company’s interview process, the recruiter of a reputed Software company asked me about my current CTC (salary package). This got me perplexed because my current salary was far less compared to the market rate. Anyhow, I gave away my current salary information and the technical interviews followed which I cleared over the next few weeks.

This is the point where everything started going downhill. The recruiter offered me a package that was low for my years of experience and the role they offered. I had a long email chain going which went like this:

Me: “This package is really low for the role offered”
Recruiter: “This is the best for the BFSI domain job in Service-based-companies. Moreover, it is 30% increment on your current package”
Me: “But I am already under-payed in my current job. That is the reason I am looking for a job change. If you also under-pay me then what is the point of job-change?”
Recruiter: “Sorry we have HR policies”

When people start citing rules for their incompetent actions, I take a mental note that either they are clueless or they are worthless. In either case a waste of my time.

I did not join that company.

Don’t sell yourself short in a job Interview

Take a pause and think about it, what the hell is a 30% increment? If my current salary is Rs 20 lakh per annum in India, that would mean an increment of 6 lakhs per annum or Rs 50,000 per month. Sweet!

However, not everyone has a current salary of Rs 20 lakh. What about Rs 7 lakh? A 30% increment on 7 lakh would be Rs 2.1 lakh per annum or Rs 15,000 per month. Fine, but now you are in 15% instead of a 10% tax bracket, so you will pay more tax. Salary increment doesn’t sound lucrative anymore, does it?

With growing inflation and high prices, you need more salary to make ends meet and have a comfortable lifestyle while saving something on the side.

Ever since I realized about those number games, I stopped sharing my current package to the recruiters and also stopped applying for Service based company jobs. Trust me on this: there is nothing more special about the people who get higher packages than you. They just happen to be good at interview preparation and aim for higher goals.

Summary: Don’t sell yourself short, instead, aim higher during a job change.

How to aim higher

Do you know what is better than a 30% increment? A 100% increment. That is, doubling your current salary in the next job. I have done this in 2016, you can do this too!

It is possible for a candidate who is earning a meager 6 Lakh Per Annum in India to make 15 lakh per annum or more in just 1 job switch! The most significant problem is we think we are not worth so much, so we become complacent and start aiming for average goals. We make goals for changing job but we never target a particular company for an interview. This sentiment is more significant for Tier 2-3 Engineering college graduates.

Enough talking! Let’s get into some concrete stuff. Now in this post, I will take you step-by-step through the process I followed to get into Product based software company.

Step 1: Set a concrete Goal

This sounds obvious but not many job aspirants write their goals. They say they want to change their job, but the key is to set the exact goal, the exact company they want to apply. Time to fix that problem.

Go to Google and type: “Top product-based software companies in Bangalore” You will get dozens of results, pick about 20 software company names from the Google search result into your notepad. Now there will be few companies on that list which you have heard already and there will few which you have never heard of. Go to Glassdoor website and research about those unheard companies. Now you have solid 20 companies you have to target. Good! now let’s move to the next step.

Step 2: Know your goal well

Now that you have a list of companies to target, you need to know them well. Here’s what I did: I researched about the interview process of each of those 20 Product based it companies. After a few hours of Google search, the Interview patterns started emerging as follows.

Best Product Based company interview process:

FAANG companies, Uber, LinkedIn, Tower research, Twitter, etc in this category
Screening round : Expect 1 or 2 Telephonic interviews with Live coding test with an Engineer on the other side
Onsite Coding rounds: Expect 3-4 Technical interviews focused on Data structure and Algorithm coding on Whiteboard or Laptop
Onsite Design rounds: Expect 1-2 System Design interviews on the Whiteboard (only for senior Candidates more than 5-6 years experience)
Non-technical round: Expect 1 round where they will test you on your Communication, Behavior and Culture fit for their organization.
HR discussion: Salary negotiation, etc

The whole process may take up to 2 months.

Top 10 product based companies interview process:

Intuit, Samsung labs, Paypal, Walmart, Flipkart, Netapp, Oracle, Ola, Paytm, Inmobi, Yodlee, Akamai, etc in this category
Screening round: Expect 1 Online coding challenge on Hackerrank, etc for screening good candidates. Here you can be given a DSA problem to solve in less than 60 minutes. Or they can give you a Design problem which requires more than 1 hour to solve, eg. Simulate a Cricket 20-20 match with multiple teams or Simulate a Snake and Ladder game. You should write such programs using Object-oriented programming.
Onsite Coding rounds: Expect at least 2 Technical interviews focused on Data structure and Algorithm coding on Whiteboard or Laptop
Onsite Design rounds: Expect 1 System Design interview on the Whiteboard (only for senior Candidates more than 5 years experience)
Hiring manager round: Expect 1 round where they will test you on past work experience. If you are fresher they may also grill you on your projects and any Side-project or Opensource contributions. They are assessing if you are fit for their team. Some companies may instead have an HR testing your Communication, Behavior and Culture fit for their organization.
HR discussion: Salary negotiation, Perks and benefits

The whole process may take up to 1 month and some companies may add 1 more technical round before the Hiring Manager round.

Other Product Based company/Startups interview process:

Screening round: Pre-screening round may or may not happen
Onsite Coding rounds: Expect at least 2 Technical interviews. There is no documented process for these interviews and varies from company to company.
It may or may not have Data structure and Algorithm questions. It may be specific to the technologies you have worked on like Reactjs (Javascript), SpringBoot-Hibernate (Java), etc.
Hiring manager round: This round may or may not happen which depends on company to company. If it happens expect 1 round where they will test you on past work experiences. It will be a good time to show off your cool side-projects and/or any Opensource contributions you made recently.
HR discussion: Salary negotiation

The whole process may take up to 1 month. Again, these companies don’t have any documented interview process and *everything depends*.

Step 3: Do Gap-analysis

After going through above interview process info you will be overwhelmed. More often than not, you will feel incompetent to even apply to these top tier companies.
“Intuit, Walmart, Paypal, no these are beyond my capabilities. I am better off with whatever I have right now,” many would think.

But wait, I would say. Let’s do some gap analysis before signing this deal off the table. The problem here is the lack of the right attitude. We are engineers and we have to take each problem from a scientific mindset. Don’t let emotions take that opportunity away.

While you took the time to research these Product based IT companies and their interview processes on the Internet, it would be a good time to invest in knowing your self-worth. Meaning, what is the gap between what-you-already-know and where-you-have-to-reach to qualify for these Hi-tech product based software company interviews. Let’s be honest here: we are not perfect and we have a long way to go. But that doesn’t mean you should settle for average and never even try.

As you would have guessed reading till here, the following skills are a must to appear for the interview:

  1. Strong knowledge of Data structure and Algorithm:

    • Data structure topics » Arrays, LinkedList, Stack, Queue, Binary tree, BST, Heap, Hashtables, String, Graph

    • Algorithm topics » Asymptotic Analysis, Search, Sorting, Randomized, General recursion, Backtracking, Branch n bound, Divide n conquer, Greedy, Dynamic programming

  2. Some side projects to showcase your programming language and technology skills

  3. Above average communication skills

The above list is in the order of priority expected by the interviewers.

At this point stop reading further and take time to reread topic #1 above i.e. “Data structure and Algorithm”. This is the single most important topic that can make or break your deal. So take it seriously. You may spend hours Googling topics inside DS & Algo but I have made it easier for you by mentioning the DSA sub-topics in the above list itself.

Spend some time assessing Topic #1 above and see if you remember those sub-topic names from college: LinkedList, Stack, Queue, Divide and Conquer. Does that ring any bell? Don’t worry if the answer is ‘All forgotten’, because I was in the same position a few years ago.

Now look at topic #2 above, do you have your Github account which boasts of a couple of side-projects you built in the past? If your answer is yes, then congratulations because now you only have to focus on Topic#1 above. However, don’t fret if the answer is ‘No’. It only takes 2 weeks to finish a side-project. Even I didn’t have a Github account a few years ago. Trust me, over a matter of a few months, anyone can build their portfolio on Github showcasing several small side-projects code-base over there.

Now you may think with the sub-par education in the Tier 2-3 Engineering college, it will take you at least 2 to 3 years to put a tick mark at the above 3 topics. But there is good news, you can cover these topics in about 6 months if you follow the steps that I followed.

Just so you know I also graduated from Tier 3 Engineering college where they had 0 (zero) placements. The professors who had earlier graduated from the same college 2 years ago, literally memorized and regurgitated line by line from the textbooks in the classroom.



Now that you are done with the Gap-analysis of what is lacking in you, read further for the steps I have carefully crafted to prepare for Product based software company interview.

Topic 1: DSA preparation for Product based software company interview

For this section, I am assuming you are an intermediate programmer who has a very basic knowledge of DSA (short form for Data structure and Algorithm). Also, I am assuming you want to prepare for a good Product based company interview and for that you have a couple of months in your hand.

Which Programming language to pick:

One needs to pick up a programming language for practicing DSA. Any language will do and there is no particular preference for this. If you practice in C++ and the company works in Java, then they will ask you to write code in Pseudocode. Google “Pseudocode” if you don’t know what that means.

Choose whichever language you are comfortable with. My preference is C++ or Java because most of the DSA interview books are published for these 2 languages and also coding solutions for difficult problems can be easily found online for C++ and Java. But again any language is fine.

What do you need to learn in a programming language for practicing DSA? Basic language syntax is good enough. Don’t waste time learning everything about your programming language before starting DSA practice.

Go to https://learnxinyminutes.com. Search your programming language on this website and start learning basic syntaxes. Within a day you will have enough Syntax awareness to get you started with writing DSA code. Later if you get stuck you can always google more details about the language.

How to prepare DSA:

For good Product companies, a minimum of 6 months is required for preparation. I am listing down the topics that are most likely to be asked in such interviews:

  • Data structure topics » Arrays, LinkedList, Stack, Queue, Binary tree, BST, Heap, Hashtables, String, Graph

  • Algorithm topics » Asymptotic Analysis, Search, Sorting, Randomized, General recursion, Backtracking, Branch n bound, Divide n conquer, Greedy, Dynamic programming

That makes it a total of 20 topics. Now I would like to emphasize here the importance of time-bound preparation strategy. Meaning you have to put a deadline for your overall preparation. I am telling, give yourself a gracious 6 month for complete preparation. Break the 6 months into 2 parts:

Step A: The basic concept of DSA: This will take at least 3 months
Step B: Problem-solving on Competitive website/Online Judge: This will take 3-4 months

Step A: The basic concepts of DSA

When I was preparing for Product based company interviews I used GeeksforGeeks website for this purpose. You should :

Go to Geeksforgeeks.org -> Tutorials -> Algorithms
Go to Geeksforgeeks.org -> Tutorials -> Data structure

For each DSA topics that I have mentioned above, you will find a detailed topic-wise section on this website. From each topic solve:

  • 15 Basic/Easy problems,
  • 15 Intermediate problems,
  • 15 Difficult/Miscellaneous problems.

Only once you finish this then move to the next topic.

But remember that you only have 3 months for preparing Basic concepts. Think about it: you have a total of 20 DSA topics and each topic has at least 50 questions on GeeksforGeeks website, which means a total of 1000 questions in 3 months. This looks daunting but it is doable if you have 3+ hours every day.

I chose GeeksforGeeks because among all other websites for learning basic DSA concepts, this website is the best and it has all the topics in one place.

For example: If I want to learn Hashtable data structure I will go to Geeksforgeeks.org -> Tutorials -> Data structure -> Hashing
Then I will start solving 15 Basic/Easy problems, 15 Intermediate problems, 15 Hard/Miscellaneous problems.

You will appreciate that if you open any of the Intermediate problems for example on GeeksforGeeks for Hashing topic, then you will find the question, all possible solutions and Time and Space complexity, all on one single page itself.

Step B: Software engineering interview questions. Problem-solving on Online Coding platform

Once the basic concepts are clear and you have exhausted 3 months, you should quickly jump to this next section of your preparation phase: Problem-solving

You will be using online Coding websites to solve Software engineering interview questions in the next 3 months. The idea is to help you develop critical algorithmic thinking. I recommend Leetcode.com and Hackerrank.com for this purpose because they have a good amount of questions tagged with Easy/Medium/Hard. I used Leetcode.com and here is a screenshot of the website once you go to Leetcode.com -> Problems

Leetcode
Leetcode problems

You will notice that the questions are randomly distributed across Easy/Medium/Hard. Also, some questions have Solutions available, and every question will have a “Discussion forum” where you can find solutions posted by other developers.

There are a total of 1200+ questions on Leetcode and the website has spread logical interview questions for software engineer across several pages. If you can solve 400+ problems it is good because then you would have solidified all the Basic concepts you learned in the previous preparation step. These cover vast array of topics including interview questions for fresher software engineer.

You can also filter problems based on Difficulty. Let’s say you don’t want to solve Easy problems on Leetcode, in that case, you can filter for “Medium” and filter for a particular tag eg. Heap and start solving only those questions.

The most important part of this phase that candidates miss is “Problem-solving in a time-bound manner”. My recommendation: At the start, you will take 1 hour to solve 1 problem, but after 2 weeks don’t give 1 hour just to think and come up with the approach. The reason is that you also need to write the actual code after coming up with an approach. If you see you have invested 30 minutes on a problem and still trying, then that is a Red flag. In that case, you immediately need to stop trying and search for the solution online. Either Leetcode will have the solution already, or you google the solution on the Internet, or you go to Leetcode problem’s Discussion forum and find other Developer’s posted solution. Important: after you saw the solution online, write your version of the code and then submit it.

Your ultimate aim should be solving each problem under 30 minutes because that is the expectation in the Top Product company interviews. After solving 200+ problems you will start seeing the results of your daily effort. Keep pushing futher until you cross 400+ problems.

3 additional points I want to add here:

  • Your code must cover Edge-cases: When you submit your solution on the coding website your submission may fail because there will be Edge-cases that you might have missed in your code that you will only come to know after you submit your solution. Google “Programming Edge case” if you have no idea what is an Edge-case. It’s okay to forget base conditions and Edge cases in the start but slowly you will learn to handle them in your code before submitting.

  • You must calculate the Time and Space complexity: Trust me I can’t emphasize more on the importance of this topic. Every problem solved by you in an interview will be followed by the interviewer asking you: “So what is the complexity of your solution?” So you must calculate the Space and Time complexity of your code.

  • Don’t use IDE to write your code: In the starting month for coding your solution, you may use an IDE like Eclipse(Java) or VSCode(Javascript/Python), etc. But after the first month, you must use normal Notepad to do coding. This will help you because in the Interview (Telephonic round or Onsite round) they will ask you to write the program on Shared Notepad or whiteboard. Use simple notepad software like Atom, Sublime, Notepad++(Windows) or simply go to the Online coding platform (Leetcode or Hackerrank) and write your code there itself.

Books and Competitive programming:

While it is good to solve one problem at a time on an online Coding platform like Leetcode, you also can hone your skills on Competitive programming websites. Don’t get afraid of Competitive programming websites like Codechef.com, Codeforces.com. They are just like Leetcode but they have online competitions and challenges where your speed of problem-solving matters. The faster and more accurate solution you give the better rank you get.

I haven’t used competitive programming in the past because I like to learn at my own pace and I time my solution with a simple watch. No worry about competing against other coders. But its a personal choice and I will leave it to you.

Some people like me also like to study algorithms from books for practicing DSA problem solving. I would recommend you buy 2 books:

  • Cracking the Coding Interview - Gayle Laakmann
  • Elements of Programming interview - Adnan Aziz

These books are meant for candidates who already know basic concepts of DSA. If you decide to purchase the book or search its PDF online, then finish the book end-to-end and you will learn real questions that get asked in the Interview, along with that you will also learn what other topics to be prepared apart from DSA.

Note: It is okay if you are not able to keep up with my timelines and not able to finish Step A (Basic concepts of DSA) in 3 months and Step B (Problem-solving) in 3 months. Everyone has their learning rate and my timeline assumes you are an intermediate programmer. Create your roadmap if mine doesn’t work for you. Increase your learning timeline from 6 months to 9 months if that eases your burden to some extent. But you must have a deadline, else you will leave the preparation in between.

Topic 2: Build Side-projects for Tech interview

Preparing DSA is good, but professionals appearing for Interviews are also expected to know general computer programming and solving real-world problems by writing software programs. This skill will be required in the following 2 places during the entire interview process:

  • At the time of Online coding round (1+ hours round) where they give you a design problem that you have to solve using the OOPS concepts. Google “OOPS programming” in case you don’t know what is Object-oriented programming.
  • For general Product company interviews, if 2 candidates performed equally well in previous rounds, then the Manager may consider the projects you built and open-source contributions mentioned on your resume. He may even ask you questions on those topics. Hence it is a good idea to mention your Github profile link in the Resume and upload several side-projects source code on your GitHub repository.

How to build Side-projects:

Pick any programming language of your choice. Java, Python or JavaScript are the top 3 languages currently in the market. You may be able to write a Tree traversal or Binary search algorithm function. But that is only good enough for the DSA interview round.

If I ask you to create the following 2 assignment, how will you approach solving it :

  • Create a Class diagram to represent a Chess game or a Snake and Ladder game
  • Create a software project that fetches the latest share price of “Reliance Industries” every minute from the stock market and if the price goes below Rs 1000, then your software should notify you via SMS/Email.

Now you see above 2 are no more an algorithm problem. Here you will need to showcase your ability to solve a real-world problem by building a workable project with multiple classes using Design patterns. Also, for Problem 2 you will have to use some open-source libraries and Webservices(REST API), etc.

Your side project should always be so small that an intermediate programmer should easily finish it in less than 2 weeks. If you are crossing 2 weeks then either you are weak in Programming concepts (time to learn some theory concepts) or your project scope is big (time to make the project requirements small).

If your project has a UI screen then along with uploading the source code on GitHub, also upload the running Server on some free cloud tool eg. Heroku-app cloud. You can go 1 step further and share your working project on LinkedIn/SubReddit where other people can go and play with your software project. You will need to Deploy your project and start the server on the free Cloud platform. This may involve knowing some basic commands of Git. Then share its link with anybody. Google ‘How to deploy my Nodejs or Python code on Herokuapp cloud’ if you have no idea what I am talking here :)

Side-project ideas:

Search ‘side project software ideas’ on Google and you will get various websites offering ideas. If the ideas there seem complicated and lengthy to build then tweak it to reduce the scope of the project and serve your need. Here the first 2 Google search results I got:

Other Side-project ideas I can think of right now are:

  • LinkedIn scraper for collecting the list of your LinkedIn Connections and storing their details in JSON file/XML file/Excel file or some Cloud based Database like Google Firebase
  • Sending Connection request on LinkedIn with a Personalized note using the Selenium library.
  • Chat app with FB login embedded in it
  • Automate Tinder swipe using Selenium library
  • Share-Market price change notification software for any company’s Stock symbol as an Input
  • Weather app to use any free weather APIs to send you today’s weather details via Email/Sms. It should take country name as Input
  • Currency exchange software which will notify you if the currency exchange rate of Rupees has changed
  • URL shortener software which takes a big URL as an input and returns a short URL. Just like TinyUrl. This should use a Cloud Database storage like Google Firebase and take care of Url collision.
  • Convert a complex JSON into Flat Map. Just like this Java open-source library
  • A Software to take Student details as an Input from your webpage and use a templating engine to auto-generate a PDF Resume from those details.

Side project programming principles to consider:

When there are multiple Classes in a code project talking to each other, you have to use tried and tested Design concepts to make your project structure more robust and scalable. You need to have an understanding of the basic programming paradigm and Design concepts such as: OOPS, SOLID Principles, Software Design patterns

You must use the above concepts into your side project to make it more robust and scalable.

Topic 3: Improve Communication skills-Behavioral skills for interview

Don’t waste too much time on this topic. This is good to have but giving separate time just for this is not justified. Do this in your relaxing/traveling time.

For communication skill improvement I suggest following:

  • Do Role-play with peers/colleagues/friends and talk in the English language for any Role-playing scenario.
  • Read English newspaper
  • Watch English movies and web-series with Subtitles

For Behavioral skills improvement Google “Behavioral interview question for Top Tech companies” to get adept at that challenge as well.

Topic 4: Computer science fundamentals

I am not covering CS fundamentals in detail for this blog because that you would have already covered as part of your Engineering curriculum. Also, people who prepared for the GATE syllabus for the Master’s entrance exam will have a good hold on these topics.

Topics that you need to refresh: DBMS, OS, Networking, Computer network, OOPS, etc.

Things to keep in mind: Learn concepts by watching the videos and take notes. You can do this while traveling and relaxing time. Search ‘GATE lectures < topic name >’ on Youtube and start revising these basic concepts. Don’t spend separate hours for this section. Only theoretical concepts need to be refreshed so put just enough effort here.

Topic 5: System design interview preparation

I am not covering System design preparation here as that is only required for senior candidates(5+ years experienced). If interested here are a few links and book(s) which you can refer.

Website: System Design, Design Paid course, Distributed System, CAP theorem

Book: Designing Data-Intensive Applications - Martin Kleppmann

Mock Interview practice

After your interview preparation is done, you will need some mock interview practise before going for real Interview. Some websites allow you to simulate Product based company interview by pairing you with other peer candidates from across the world online. Use websites like Pramp & InterviewBit for this purpose.

Try this step and do 10 - 15 mock interviews online only after your preparation is done.

Closing notes

This step by step guide for interview preparation is tried and tested and it works. If you religiously follow the above detailed-steps you have a good chance of cracking Product based company interviews and getting your desired package, etc.

However, whether you will follow these steps or not is up to you. Also, I want to reiterate one point: the timelines I have mentioned are what I followed and different students may have different learning capacities. Therefore don’t fret and stress if you are not able to meet the aggressive timelines of 6 months. You can increase the time based on your individual-learning capacity. But remember, you must work in a dead-line based manner, else you won’t succeed.

Another important point I want to highlight in the closing: interview preparation is a function of time. This means the more number of hours you will give to this process daily, the better and faster result you will get. Don’t worry if you were an average student in college or you didn’t get good campus placement. If you just follow the above steps religiously and dedicate 3-5 hours daily for 6 months, you will get desired results.

Thanks for reading!

Image credit: Photo by ThisIsEngineering from Pexels

Share: Twitter Facebook LinkedIn
Sunny Mishra's Picture

About Sunny Mishra

Sunny is a senior developer with a decade of experience working on Backend architecture. In his freetime he is a storyteller and a YouTuber.

Bangalore, India
Website |   LinkedIn

Comments