Welcome, Guest: Register On Nairaland / LOGIN! / Trending / Recent / New
Stats: 3,161,732 members, 7,847,949 topics. Date: Sunday, 02 June 2024 at 12:08 PM

How To Prepare For A Job At Google - Programming - Nairaland

Nairaland Forum / Science/Technology / Programming / How To Prepare For A Job At Google (1650 Views)

Ios & Android Mobile App Developer Needed For Full Time Job At Africa Innovation / Learn How To Prepare Nigeria Meal / Help: PHP Mysqli Procedural API Problem With Prepare Functions (2) (3) (4)

(1) (Reply)

How To Prepare For A Job At Google by AAinEqGuinea: 4:56am On Dec 05, 2015
This is my second of interview trials at Google. I am not as passionate to work at Google as you gifted programmers may be, as I have my own company with projects and products I am happy to bring to market, maybe my path with Google will intersect later in life.... as for fellow programmers, if you want to get a job at Google, here's helpful information an interviewer sent me:

Job Description: Front End Software Engineer Software Engineer

Preparation Materials:

YouTube Videos & Important Links:

Preparing for Google's Technical Interview #1

Preparing for Google’s Technical Interview #2

Tips to interviewing at Google

Do Cool Things That Matter

Peruse papers written by Googlers

Life at Google

The Faces and Voices of Google article


Note: We strongly encourage you to review the above videos. The videos feature Googlers who have been both interviewers and interviewees sharing their unique perspective on how to prepare for Google's technical interviews! The principles are applicable to a technical phone interview or onsite interview.

Preparation Best Practices:

Your background is important, so utilize it to your advantage by sharing interesting points that can help you and the engineer work through the discussion as efficient as possible.

Review your resume and be prepared to discuss your experiences and past projects! Often times it will help drive the discussion and gives you an opportunity to share situations where you solved a complex problem.

Our interviews are very technical! It will be based on Computer Science (CS) fundamentals - topics such as coding, data structures, algorithms, computer science theory, and systems design. It is strongly recommended that you review algorithms like Big-O notations, Binary Tree, Hash Tables, etc. For more information on algorithms and data structures examples, visit coding sites like Github, TopCoder.com or similar sites.


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 either speak on the phone with one of our engineers or meet face to face. You will definitely 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 as you go through 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, within relevance, say EVERYTHING you are 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.


Important Google Interview Tips

Here are some hints and tips to help you prepare for success! Those who study tend to do FAR better on their interviews!

1) Plan ahead:

The Google engineers who will be interviewing you have only limited time set aside from their projects, so please reserve time in your schedule, too! This also helps you relax and perform better for interviews. Please have a pen and paper handy in the case that you are asked to write some things down.

2) What to Expect:

Up to a 45 minute technical interview with a Google software engineer. The interviewer will be interested in your knowledge of computer science principles (data structures, algorithms etc.) and how they can be used in your solutions.

3) Interview Questions:

Interview topics may cover anything on your CV (especially if you have stated that you are an expert!), whiteboard coding questions, building and developing complex algorithms and analyzing their performance characteristics, logic problems, systems design and core computer science principles - hash tables, stacks, arrays, etc. Computer Science fundamentals are pre-requisite for all engineering roles at Google, regardless of seniority, due to the complexities and global scale of the projects you would end up participating in.

4) How to succeed:

At Google, we believe in collaboration and sharing ideas. Most importantly, you'll need more information from the interviewer to analyze & answer the question to its full extent.

Its OK to question your interviewer.

When asked to provide a solution, first define and frame the problem as you see it.

If you don't understand - ask for help or clarification.

If you need to assume something - verbally check its a correct assumption!

Describe how you want to tackle solving each part of the question.

Always let your interviewer know what you are thinking as he/she will be as interested in your process of thought as your solution.


Also, if you're stuck, they may provide hints if they know what you're doing.

Finally, listen - don't miss a hint if your interviewer is trying to assist you!


5) What is Google looking for?:

"We are not simply looking for engineers to solve the problems they already know the answers to; we are interested in engineers who can work out the answers to questions they had not come across before."

Interviewers will be looking at the approach to questions as much as the answer:

Does the candidate listen carefully and comprehend the question?

Are the correct questions asked before proceeding?

Are things assumed without first checking?

Are hints heard and heeded?

Is the candidate slow to comprehend / solve problems?

Does the candidate enjoy finding multiple solutions before choosing the best one?

Are new ideas and methods of tackling a problem sought?

Is the candidate inventive and flexible in their solutions and open to new ideas?

Can questioning move up to more complex problem solving?


Google is keen to see really high quality, efficient, clear code without typing mistakes. Because all engineers (at every level) collaborate throughout the Google code base, with an efficient code review process, it’s essential that every engineer works at the same high standard.

6) Still reading..?

7) Ask more questions!:

Make sure you have a decent understanding of Google as a business - further than Google's main products, find out about what we do here:

Company Overview

Google - Wikipedia


At the end of the interview, most interviewers will ask you if you have any questions about the company, work environment, their experience, etc. Its clever to have some pre-prepared for each interview, but don't worry too much if your mind goes blank.

If you have questions about the interview process, remuneration or your performance, please direct these to me.

8 ) Further reading:

Google’s Core Projects

Steve Yegge's “Get That Job @ Google!”

Big O Notation

Gayle L. McDowell's "How to Ace that Google Dev Interview"


9) There’s More? Additional Technical Preparation Tips:

The main areas software engineers should prepare to succeed at interview at Google:

Algorithm Complexity: It's fairly critical that you understand big-O complexity analysis. Again run some practice problems to get this down in application.

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 and merge sort). Merge sort can be highly useful in situations where quicksort is impractical, so take a look at it.

Hashtables: 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,in about the space of one interview.

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.

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 and A*.

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.

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 Discrete Math 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.

Operating Systems: Know about processes, threads and concurrency issues. Know about locks and mutexes and semaphores and monitors and how they work. Know about deadlock and livelock and how to avoid them. Know what resources a processes needs, and a thread needs, and how context switching works, and how it's initiated by the operating system and underlying hardware. Know a little about scheduling. The world is rapidly moving towards multi-core, so know the fundamentals of "modern" concurrency constructs.

Coding: You should know at least one programming language really well, and it should preferably be C++ or Java. C# is OK too, since it's pretty similar to Java. You will be expected to write some code in at least some of your interviews. You will be expected to know a fair amount of detail about your favorite programming language.


10) Sample Topics:

Coding

Sample topics: construct / traverse data structures, implement system routines, distill large data sets to single values, transform one data set to another.

Algorithm Design / Analysis

Sample topics: big-O analysis, sorting and hashing, handling obscenely large amounts of data. Also see topics listed under 'Coding'.

System Design

Sample topics: features sets, interfaces, class hierarchies, designing a system under certain constraints, simplicity and robustness, tradeoffs.

Open-Ended Discussion

Sample topics: biggest challenges faced, best/worst designs seen, performance analysis and optimization, testing, ideas for improving existing products.


Last, But Not Least....

In addition to the interview prep materials attached, you would want to visit www.topcoder.com to familiarize yourself with the overall approach to design, algorithm creation, and implementation (coding) of programming based problems.

Furthermore, you can take a nice look at the any open source projects, along with a sample google app engine project then work on those physically. Keep in mind that we want to ensure that you have all the time you need to make yourself as comfortable as possible interviewing with us!

Supplemental Readings & Book Suggestions:

Programming Interviews Exposed: Secrets to Landing Your Next Job by John Mongan and Noah Suojanen

Programming Pearls by Jon Bentley

Cormen/Leiserson/Rivest/Stein: Introduction to Algorithms or the CLR textbook.

Interviewing Tips and Advice from current Googlers

5 Likes 1 Share

(1) (Reply)

Why You Hate PHP / Please Help With Flight Booking API / Microcontroller Programming Training Needdd Urgently

(Go Up)

Sections: politics (1) business autos (1) jobs (1) career education (1) romance computers phones travel sports fashion health
religion celebs tv-movies music-radio literature webmasters programming techmarket

Links: (1) (2) (3) (4) (5) (6) (7) (8) (9) (10)

Nairaland - Copyright © 2005 - 2024 Oluwaseun Osewa. All rights reserved. See How To Advertise. 78
Disclaimer: Every Nairaland member is solely responsible for anything that he/she posts or uploads on Nairaland.