How to prepare for coding interview of Google, Microsoft, Amazon & Facebook?
Many of us have question in our minds, how to prepare for the coding interview of dream companies like Google, Microsoft, Amazon, Flipkart, and Facebook.
Well, you should start by strengthening your programming language skills. Get a good grasp over a language syntax and library methods, preferably Java or C++. For C++, you should memorise the major data structures’ syntax from STL library.
Once you have a good knowledge of a language’s basics. You should move onto data structures & algorithms.
For data structures & algorithm, Introduction to Algorithms by Thomas H. Cormen is the holy grail. Every aspiring software engineer, must read it once. (You could buy it from the Amazon: Introduction to Algorithms.)
You can also study from online tutorials:
While studying algorithms & data structures, try to code the problem on your own first, writing on paper or coding on a compiler. You must practice writing the code. Don’t try to memorise the code, rather try to solve the problem first. Try to understand and implement the code yourself for once. While understanding the problem, you must analyse the time complexity of your solution in Big O – notation. This Know Thy Complexities! cheatsheet might come in handy. And try to optimise the time and space complexity of your solution. Learn the difference between the two (time & space complexity).
Major data structures
- Linked Lists
- Binary Heaps
- Divide & Conquer
- Dynamic programming
- KMP (Knuth Morris Pratt) algorithm for string search
- Depth First Search (DFS) & Breadth First Search (BFS)
- Minimum spanning tree
- Shortest path
- Dijkstra’s (Single source)
- Floyd-Warshall’s (All pairs)
Practice, practice and practice writing the code. You can practice by participating in coding competitions on sites like Codechef, Codeforces, Spoj, Hackerearth etc.
Or practice problems from Geeksforgeeks & Leetcode.
Once you are confident on your programming skills, prepare for puzzles and design (Design patterns) related problems. Also revise your Database and Operating systems concepts. Practise writing a few SQL queries involving joins.
In the end, work on your soft skills. Do a few mock up HR interviews. Read up the answers for standard cliche’ questions like what are your strengths/weaknesses, why this company?
Getting an interview!
Although offer decisions are mostly based on your performance in the coding interview, it’s your resume and your prior experience that lands you the interview. Both students and working professionals benefit from additional coding experience. So it’s always better to get your hands dirty with some coding projects.
For students this could mean:
- Getting an internship.
- Preparing for college minor and major projects passionately and not just copying an old project from the internet or from seniors.
Following points are applicable to both professionals and students:
- Make something (Android/iOS/Web app) of your own. Doing something entrepreneurial will impress almost any company. It shows your initiative skills and “get the things done” attitude.
- Contribute to open source community. There are several open source projects on Github (maintained by the community) – where one could create a pull request for a new feature or a bug fix in an existing project.
Creating a perfect resume
It is strongly advised to keep the resume length upto 2 pages. The reason for doing this is that, recruiters only spend a fixed amount of time (about 30 seconds) to read your resume. If you would only put the impressive items, the recruiters are sure to see them. But putting additional (unnecessary) things in your resume like “MS Office” in skills column would dilute the relevant information.
Points to remember while writing your resume:
- Employment history: Your resume should not include a full history of every role you ever had – like serving as a waiter, will not show your intelligence and aptitude. Mostly add your technical roles, if you are applying for Software Engineering post.
- Projects: You should add only significant projects with the technical stack used in that project. Try to exclude details like finished on deadline, under the guidance or, references, unless they make you look better.
- Programming languages and Softwares: It’s advisable to add technical softwares and Operating systems like Mac, Linux, Visual Studio rather adding IDEs like Turbo C++ or MS Office tools. While adding programming languages, also include the level of proficiency in that particular language. For instance: Java (proficient), C++ (expert), exposed to : Python, Ruby.
Expanding your network
In the past few years, LinkedIn has proved to be a boon for both the recruiters and candidates. It has created a place for itself in the industry as one of the best job portal, especially after being acquired by Microsoft.
So it’s always beneficial to create a splendid profile on the website because that’s where from, many recruiters hunt for the candidates. Therefore, it is also necessary to follow and connect with important people on the website. Try to add your connections only from within your working domain and employed by magnificent companies. Also, it’s not considered unprofessional to open-up and initiate a conversation. But keep the conversation precise and mostly technical. It is the best way to create a “vast & close” network. Better the network, better the opportunities.
NOTE: Many of the points in this post are from the famous book Cracking the Coding Interview (Indian Edition) by Gayle Laakmann McDowell. If you are a book person, you could buy it from this link.
Disclaimer: There are a few affiliate links in the post and if you buy from those, I might get a tiny commission that’ll help support my blog.
All the best!
P.S. Check out our new tool on our website for intelligent quotes & captions for your social media as well as blogs – CAPTAGRAM