Saturday, November 24, 2018

Cracking the Google Interview | Software Engineer reveals tips & secrets

rachit jain blog, Rachit Jain, rachit jain iit roorkee, rachit jain iitr, rachit iitr,rachit codechef, rachit hackerrank, rachit jain microsoft

Tags: google, google job,placement, interviews, data-structures, algorithms

Hi! Today I will write about some tips, tricks and hacks I have found from my experience in attempting recruitment tests, interviews.

I will begin by giving a brief introduction about myself.
I have done B. Tech. in Electrical Engineering from IIT Roorkee. I have graduated in 2017, and now working in Microsoft for over 18+ months.

I started off competitive programming in 2-2(2nd Year 2nd Semester). So I had around 1.5 years of experience in competitive programming while I was sitting for placement tests. Having a strong background in competitive programming really saves your ass while others keep reading geeksforgeeks to prepare themselves.

You can subscribe to my programming YouTube channel, "Algorithms with Rachit" here.

"New Video Every Week" - Subscribe to my YouTube channel for free.


How to crack the Google interviews and get a decent job?

Here is the YouTube video of 12 mins where I share the complete journey of what exactly happens in a Google Interview, what kind of questions they ask, from where to prepare, and possible mistakes you might be making despite having good skills and getting rejected.

Video: Software Engineer talks about cracking Google | Tips & Story of cracking Google


After watching this, you already can see the links in video description. Anyway, if you are lazy, here is what you have to do next.
See the mistakes you will be making despite being good at tech skills and hence getting rejected.

Video: Why Google rejects great coders in Software Interviews?


Now, comes the part about what you have to study. For that have a look at -

                                       
                           Video: Why Google rejects great coders in Software Interviews?

To learn more on how to solve Coding Interview Problems, I launched a playlist where I pickup famous and interesting Interview questions and explain the approach and then the code in C++ to solve them. 

"Famous Coding Interview Problems and their Solutions" - click here

                                      Video from that playlist where I teach Graph Theory


Here is a short summary of important data structures and algorithms.
Basic Skill Set (BSS): 
1. Quick implementation & debugging (practise questions on codeforces, hackerrank, participate in contests)
2. String Matching (important, KMP, Z-Algorithm, etc)
3. Binary Search, Sorting, STL (sets, maps, unordered set/map, vector, sort) - very very very useful
4. Data Structures - (Linked Lists, stacks, queues, BIT useful, Segment Tree - asked in Google)
5. Dynamic Programming - very very important (medium level problems, all companies ask)
6. Binary Trees & BST - super important! (All companies ask this)
7. DFS/BFS questions on Graphs (Dijsktra and flows are rarely asked)
8. DP on Trees (yes, an important topic)
9. Greedy, Backtracking - (Important, can be tricky)
10. Math Concepts like Prime Seive - Not that much important
11. Bitmask DP - sometimes asked in interviews, cover it later.

I think this is enough for cracking through most of the recruitment tests. Though there are always many other topics that can be covered, but I would suggest don't get overwhelmed and focus on these first. Once you are ready with these basics, you should move on to study other Data Structures and Algorithms. Knowing more and in detail will always make you more interesting and awesome.

Many recruitment problems are based on usages of sets, maps.
Do many practise problems based on them. Eg: see this, and the solution.


Tips for recruitment tests:
1. Be fast. Don't just keep on waiting for finding the solution.
2. If stuck on problem, proceed to next. First solve all of those that are easy.
3. At the end, ALWAYS submit the worst brute force solution with no matter what complexity. YES! The test cases are many times weak, and you get pretty high score.
4. You must be familiar with Python inbuilt functions involving combinatorics, permutations and string functionalities too. It can prove to be very beneficial ;)
5. This tip is more of a personal experience. In one of the test, I was getting only a score of 25. I soon realized that the  for loop conditions weren't true and I was simply printing 0. When I corrected it, I got a score of 75. Yes! so I had to basically see that if I am getting a WA in some test case, I need to print 0 there. Finally I used binary search on the values of variables(size of array, first element of array) to identify those test cases, and simply print 0. Basically what I did was used an infinite while loop with some condition like $100<n$ and $n<500$ so that I get the verdict TLE, and I am able to figure out those test cases where I was getting WA.


Tips for interviews:
1. Be humble. Don't give the slightest vibes of overconfidence or arrogance.
2. Never give up. If the problem asked seems difficult at first sight, don't lose out confidence. See what is given, what you have to find, and try doing it for small test cases. Then maybe you will find a pattern.
3. Speak as you think. Don't just keep scribbling on paper. Let the interviewer know about how you are approaching the problem.
4. If problem seems difficult, give the brute force solution and its complexity. Then try optimizing it, maybe using dynamic programming or some greedy solution.

Don't think you don't have time :D
Just start doing already!
Feel free to write your queries, I am always there to help :)


Important Playlists:
================
Famous Interview Questions You Must Know ►click here
Tips & Tricks for Success in Career  ►click here
How to Improve at Data Structures ► click here
OOPS Interview Questions  ► click here
Gaurav Challenges Rachit ► click here
How to use Codeforces for Improving ► click here
Math Problems with Interesting Analysis  ► click here


Courses Taught by Me
==================
Dynamic Programming: Zero to Hero ► click here
Dynamic Programming on Trees ► click here
Graph Theory for Beginners ►  click here
SquareRoot Decomposition for Beginners  ► click here
Segment Trees ► click here

My Code Library
==============
Github ► https://github.com/rachitiitr/DataStructures-Algorithms


Follow me:
==========
Instagram ►https://www.instagram.com/rachitjain2095
LinkedIn ► https://www.linkedin.com/in/rachitiitr/
Facebook ► http://fb.me/AlgorithmsWithRachitJain
Programming Blog ► https://rachitiitr.blogspot.com
Twitter ► https://twitter.com/RachitJ55307787


Programming Profiles:
===================
CodeForces ► http://www.codeforces.com/profile/rachitjain
CodeChef ► http://www.codechef.com/users/rachitiitr

5 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. Thank you for your post. This is excellent information. It is amazing and wonderful to visit your site.
    Employee Training Software

    ReplyDelete
  3. your vids are very insightful. thanks a lot. If you could upload one on using vs efficiently and debugging c++. thanx alot.

    ReplyDelete

Art of Time Management | Achieving Multiple Things in Life

rachit jain blog, Rachit Jain, rachit jain iit roorkee, rachit jain iitr, rachit iitr,rachit codechef, rachit hackerrank, rachit jain micr...