The following is some information I got from a Google recruiter in March 2015.
What to expect: up to a 60 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.
The role of a Software Engineer at Google is to fulfill the full life cycle of a development process—so its everything from planning, research, implementation, development, testing and reporting. However bare in mind that much of the role involves programming/coding, which can constitute up to 60%. And this is much of the same for most projects within all product areas at Google and also constitutes to the reason why we focus on your coding, algorithms, data structures and system design skills throughout the interview process.
However, your roles and responsibilities do change depending on the “status” of the project- and what stage the project is at.
One of the reasons we think you would be great as a Software Engineer at Google is because of your technical and analytical skills shown in your CV and during our chat. At Google we look for bright, talented, smart, technical individuals that are able to handle all aspects of the development cycle and we believe you can fulfill this role successfully.
- Ask clarifying questions, especially at the beginning of the interview. Most interviewer will provide a very open questions, which you will not be able to answer without asking the correct questions at the beginning of the interview.
- Ensure you know your common data structures!!! Expect questions relating to graph, trees, strings.
- Most interviews will start with a small opening questions, which you should aim to complete within 5–8 minutes.
- Be open and communicative. The interviewer should be able to follow your thought process throughout the interview.
- Speed is very important. Once you have designed the algorithms, you will be expected to implement the code in an effective time (around 15-20 minutes) + discussion throughout implementation.
- Be detailed focused. The interviewer wants to ensure you know why your using such data structures, or why your designing this algorithm, not just that you can!
- Try to suggest alternatives to a problem/solution. They always like when you can think of another solution, or suggest another way of dealing with problem at hand.
For additional practice for your interview, you might find these resources useful:
- Understanding and explaining the Big-O Notation, data structures like Hash Tables, know the run time for a quick sort, equally the shortest time, binary trees, tree traversal
- Theoretical understanding of the Complexity Theory
- Topics: Graph Theory, Traversing a graph, Directed acyclic graph.
- Rectifying syntax of code
- List of Algorithm general topics
- List of Algorithms
- List of Data Structures
- Write a recursive program to solve this problem. What is the complexity?
- Shortest path problem
- Write an algorithm to plan a route by minimizing distance or time
- Traveling salesman problem
- Write an algorithm to determine the least cost round-trip, given multiple cities and varying costs of flights.
- Knapsack problem
- Write an algorithm to optimize the value of items you can fit into a backpack based on weight and volume.