**To crack the Google Interview you have to Eat, Drink, Sleep, Shower, Play, Love, Wear, Drive, Pee, poop and Vomit Code, Algorithm and DS.(e.g. In C++,JAVA,C#).**

This article explains detailed information to prepare Interviews for Google Software Engineering Jobs.

This Article equally applicable for the other core software product companies e.g. Amazon, Facebook, Apple, FlipKart, Adobe and many others or almost every core software product company

**General Interviewing guidelines from Google Recruiters**

It may have been a while since you experienced an interview where you are expected to produce live code and talk through it. Pull out a blank sheet of paper and start writing code, while talking it through to a friend, family member, or to yourself! This will build a high level of comfort as you speak with our engineers and you will feel the conversation go smoother.

Many of the questions asked in Google interviews are open-ended because our engineers are looking to see how you engage the problem. Be sure to talk out-loud your thought process about the questions you are asked, as well as your approach to problems and solutions. Ask specific questions if you need more clarification. Our engineers are not looking for the right answer, but the right approach and methods of thinking.

As you prepare, build toward thinking about ways to improve the solution you’ll present. In many cases, the first answer that springs to mind may need some refining. It is worthwhile to talk about your initial thoughts to a question. A brute force explanation will be received less well than taking time to compose a more efficient solution.

Ask clarifying questions if you do not understand the problem or need more information.

Many of the questions asked in Google interviews are deliberately underspecified because our engineers are looking to see how you engage the problem. In particular, they are looking to see which areas leap to your mind as the most important piece of the technological puzzle you’ve been presented.

**Technical Interview Areas of Focus**

**1) Algorithm Complexity (know Big-O):** For more information on Algorithms you can visit:

http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=alg_ind

**2) Coding:** Know at least one programming language well (preferably C++ or Java; C# is okay since it’s similar to Java). You will be expected to know a fair amount of detail about your favorite programming language.

**3) System Design:**

http://www.hiringlibrary.com/if-you-are-asked-to-design-a-new-operating-system/

http://www.hiringlibrary.com/how-would-you-improve-the-functioning-of-web-browser/

{ *questions on hiringlibrary for an additional example}

http://research.google.com/pubs/DistributedSystemsandParallelComputing.html

<http://research.google.com/pubs/DistributedSystemsandParallelComputing.html>

**4) Sorting:** Know how to sort. Don’t do bubble-sort. You should know the details of at least one n*log(n) sorting algorithm, preferably two (say, quicksort merge sort). Merge sort can be highly useful in situations where quicksort is impractical so take a look at it.

**5) Hash tables:** Arguably the single most important data structure known to mankind. You absolutely should know how they work. Be able to implement one using only arrays in your favorite language.

**6) Trees:** Know about trees; basic tree construction, traversal and manipulation algorithms. Familiarize yourself with binary trees, n-ary trees, and trie-trees.

Be familiar with at least one type of balanced binary tree, whether it’s a red/black tree, a splay tree or an AVL tree, and know how it’s implemented. Understand tree traversal algorithms: BFS and DFS, and know the difference between inorder, postorder and preorder.

**7) Graphs:** Graphs are really important at Google. There are 3 basic ways to represent a graph in memory (objects and pointers, matrix, and adjacency list); familiarize yourself with each representation and its pros & cons.

You should know the basic graph traversal algorithms: breadth-first search and depth-first search. Know their computational complexity, their tradeoffs, and how to implement them in real code. If you get a chance, try to study up on fancier algorithms, such as Dijkstra.

**8) Other data structures:** You should study up on as many other data structures and algorithms as possible. You should especially know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, and be able to recognize them when an interviewer asks you them in disguise. Find out what NP-complete means.

**9) Mathematics:** Some interviewers ask basic discrete math questions. This is more prevalent at Google than at other companies because we are surrounded by counting problems, probability problems, and other DiscreteMath 101 situations.

Spend some time before the interview refreshing your memory on (or teaching yourself) the essentials of combinatorics and probability. You should be familiar with n-choose-k problems and their ilk,the more the better.

**Some of our engineers read the following in preparation for their interviews:**

**[1]** “Programming Interviews Exposed: Secrets to Landing Your Next

Job<http://books.google.com/books/about/Programming_Interviews_Exposed.html?id=FQzczWtdm3gC>”

by John Mongan and Noah Suojanen – It’s a good book to have in general.

**[2]** “Introduction to Algorithms<http://mitpress.mit.edu/books/introduction-algorithms>”

by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford

Stein

They also practiced some questions at the following sites:

**[A]** “Five Essential Phone Screen Questions <https://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions>” by Steve Yegge

**[B]** StackOverflow pages, http://stackoverflow.com/search?q=google+interview

**[C]** Careercup, “Sample Google Interview Questions<http://www.careercup.com/page?pid=google-interview-questions>”

**[D]** TopCoder (http://www.topcoder.com) (about 10 division-2 competitions) Finally, one of the most useful sites for testimonials/preparation feedback around Google interviews is:- Steve Yegge’s blog,

http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html

Please read above again and again, You have to do the above, It will help you to understand the instinct of Data Structures.

**Preparing for YouTube / Google technical interviews video**

# Frequently Asked Questions

**What should I have to do or learn If I want to work for Google?**

Seems you have just a thought and not even started coding or thought about it.Here is the small step you can take just now, means now :

Install Intellij Idea or Eclipse or any other Editor

Install JDK

Write your first Java Program

(Tons of tutorial available for all of these)

Use any language and dev env of yours, youtube| internet | quora full of answers and guidance.

Once you will overcome from the first step , you will see the next step, Here is the 2015 version of helloworld to help you

Year of 2015 Version of HelloWorld.JAVA

**Any Major Ticks to Tackle the Google Interviews**

Tricks e.g. How well you align your answers with your professional and communication skill. How well you understood the job requirement.How you clarify the interviewer questions before answers. How you keep your consistent attitude during the whole interview

**I have Google Interview Scheduled on X date and looking for exact interview questions?**

Google Guys are smart , they don’t follow any predefined way to asking questions. Each interviewer is trained for several months before he actually go to interview candidate . For Google Software Engineering/Developer’s role be strong or almost expert with Algorithms and DS area e.g. If you have practices questions **“Merge two sorted integer array”** then google guys may ask how you **“Merge N Sorted Integer Array ” , **So Practice, Practice, Practice.

Tons of websites e.g. glassdoor.com, geeksforgeeks.com, careercup and many other provide questions, you need to practice for weeks until you feel its just a piece of game. so rather continue to focus on questions, questions, and questions. Do Practice, Practice and Practice.

**Please tell me some Sample Question and Answers **

Please refer below sample question and answers, with detailed explanation.

http://www.hiringlibrary.com/array-the-increasing-sequences-in-the-array/

http://www.hiringlibrary.com/array-creating-a-series-contianing-n-elements/

**How should I prepare for a software engineer interview at Facebook?**

https://www.quora.com/How-should-I-prepare-for-a-software-engineer-interview-at-Facebook

**What is a typical full google interview loop looks like ?**

http://www.hiringlibrary.com/sample-full-day-interview-loop-at-microsoft-amazon-google-apple/

**How can I get a job at Facebook or Google in 6 or 3 or 2 months?**

https://www.quora.com/How-can-I-get-a-job-at-Facebook-or-Google-in-6-months

**EXAMPLE APPROACH**

**You may design an approach which best suits to your skills/(and many others) related parameters**

** Example:** someone may use the following approach, for a two months plan –

**around 250 hours**to prepare software engineering interviews for MS/Google/…

Actually all these companies e.g. MS, Google, Amazon, Facebook, Apple follow an approach on which they measure the thought process of a candidate.

And they use different means to evaluate that, but yes most of them uses Algorithms/Data Structures/Open-ended questions(If you have applied for a software engineering job) as one of the approach to evaluate the talent.( As those are the base to develop the technologies).

To be accustomed with algos/data structure/coding , you must have understood/practiced the minimum e.g. :

** (Step-1):** You should have practical understanding of the Algorithms (e.g. When to use BackTracking, When to Use Divide and Conquer, Why double hashing required?, Where brute force concept can be applied?) (

**50 Hours).**

** (Step-2): **You should have practical understanding of Data Structures e.g. (Practical use cases related to :when to use circular buffer , or when to use adjacently list or the combination of both or something else to solve the problem ).

**(50 Hours)**

** (Step-3) :** You must practice several coding problems to implement the things which learn from Step-1 , and Step-2 (you may do the following choose any coding language for the choice of yours (C, C++ or Java or Python or PHP or Ruby any one else ).

**(50 Hours)**

** (Step-4):** Solving the problem doesn’t mean just to solve it, but to understand the best way to solve it e.g. The given technical problem can use various ways to come to solution, and you might want to use the optimal one. (How you connect the given solution with the computing/memory resources e.g. Memory/Processing Power)

**(50 Hours)**

__However the Most Important One.__

However other than programming you might need to understand the main concept for the interview is to keep the interview active and this requires some action from your side, such as the following:

You need to talk.

You need to explain.

You need to discuss.

You need to express your views.

You need to understand clearly the questions given to you.

You need to understand the interviewer’s expression and mindset to understand those questions.

You might need to ask appropriate questions to understand the question or any other discussion item. **(50 Hours)**

__And also :__

Prepare : “Please tell me about your self” , “Your skills related positive/negative further interest” , Basics for the most needed computer science concepts or anything as you presented on your “CV/Resume”.

**(10 Hours)**

Above is just a sample plan, you may customize the way you want(e.g. 50 hours to 10 hours or something else)

**(Here Google doesn’t mean the Google, it means any company which is very creative to introduce the computer science related products ).**

**(Assuming you are spending 4 hours **everyday** ~ 60 Days ~ 60 *4 = 240 Hours)**

**Remember:** The technical interview depends on various parameters.

** From employer side** e.g. job title, responsibility, department, project type, technology type, skills type, years of experience, mind set of interviewer/interviewers.

**From candidate side** e.g. the way CV (resume) was presented, the way the candidate carried the technical/non-technical discussion )