How to crack CS Interviews?

Little background about myself: I have faced interviews of several IT companies ranging from start-ups to the top companies like Amazon, Microsoft and Google and cracked them all!

My Interview questions with these companies can be found here.

This post is about how to crack these top notch companies.

The key to crack these interviews is to prepare the questions exhaustively and it is quite possible as there are only a limited set of questions that are asked. Once you master them, you can crack any company that you want.

I have given below the list of sources from which I had prepared for these interviews.

  • Get the basics right on following topics from the book “Introduction to Algorithms” by CLRS:
    • Fundamentals of recursion
    • Computing the running time complexities
    • Basic data structures like Arrays, linked lists, binary trees, balanced trees (red-black trees, AVL trees, B-trees), binary search trees, sorting algorithms (especially quick sort and merge sort), graph algorithms and basics of Dynamic Programming (Dynamic Programming is one of the favorite areas of Google, Amazon and Microsoft).
    • KMP String matching algorithm.
  • Interview corner on “geeksforgeeks” and go through all the recently asked questions for the company that you have applied for. Most probably they would repeat. Pretty much all the questions can be exhaustively covered from this site only.
  • Dictionary implementation using hash table and tries(/patricia tries). Learning tries is important because of its efficiency in implementation of dictionary.
  • Cover Morris inorder traversal for binary trees, which is of O(n) time complexity without any extra space and recursion.
  • Pay special focus on questions involving Arrays, Strings, Linked lists and Binary Trees/ Binary Search Trees.
  • Basics of Operating Systems which include:
    • Synchronization problems [selected reading of “Downey Semaphores“]
      • Readers-writers problem [99% they will ask only this]
      • Producer-consumer problem
    • Paging and page tables [For this I have referred to the book “Understanding Linux Kernel”]
    • Memory management basics like Code Segment, Data Segment, Stack Segment etc.
  • Search for some of the testing mechanisms like unit testing, functional testing, stress testing etc.
  • If applying for SDE 2 or higher levels prepare well on design level questions – both low level design (class diagrams) and high level design (services, UI etc.). Also cover the software design patterns and use them where ever possible.

Apart from this, prepare well on your projects including the design level details. Do a lot of practice on writing code both on computer and paper – the little time you take to convert your algorithm into bug-free code, the better it is.

Things to do when in an interview:

  • Think out loud – so that the interviewer can help you.
  • Be open to take in those little hints given by the interviewer.
  • Never get into an argument with the interviewer unless you want to kiss your chances of clearing the interview good bye.
  • Never hesitate to ask any questions – though they sound silly in your head. Sometimes interviewers intentionally ask incomplete questions to check if the candidate can raise the questions or not.
  • Begin and end the interview with a smile and wishing the interviewer properly. Do that even when the interviewer screwed you because that can change his opinion about you.

Do this and you’ll surely crack any company that you want. 🙂


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s