Software Engineers are responsible for designing, developing, testing, deploying, maintaining, and improving the software. To achieve this, they must have extensive knowledge of databases, frameworks, and other technologies. They must have experience in managing projects and delivering them within deadlines.
A Software Engineer at Google should be -
- Experienced in fields such as app development, UNIX environments, distributed/parallel systems, or software development.
- Able to test and debug software and also maintain it so that it is usable in the longer term and can be improved from time to time.
- Motivated to work on and learn new technologies to develop large-scale innovative software.
The Google Software Engineer interview consists of 3 rounds.
The first round is a recruiter phone screen which will be a general discussion with the recruiter. Following this, there are generally 2 phone interviews, with a mix of behavioral and technical questions. This round will test your coding skills on topics like Data Structures, Dynamic Programming, OOP. The third and final round is the Onsite round, which will consist of 4-5 interviews - 4 technical interviews, and 1 behavioral / ‘Googliness’ interview.
This is the first round of the Google Software Engineer Interview, a short call with a recruiter. The recruiter will inquire about your background and ask about projects you have worked on. They will also schedule your phone interviews. Over the course of the interview process, the recruiter will provide ample resources to prepare from and give advice on how you can best handle the interviews.
Some sample Google SDE interview questions -
- Tell me about yourself.
- What do you hope to learn while working at Google?
- What are you looking for in a workplace?
- What is your favorite project that you have worked on?
- What inspired you to learn programming?
The second round of interviews consists of phone screens with software engineers. Technical interviews are 45-60 minute whiteboard-style interviews and test your basic coding skills through 2 questions. You will be required to share your screen and write the code on a Google Doc or similar text editor. Questions will be asked from the following topics -
- Data Structures - topics such as BST, Linked List, Recursion
- Dynamic Programming
- Graph theory
You will be asked follow-up questions about the solutions you have provided for the questions. Additionally, the interviewers will also discuss elements of your resume, especially the projects you have worked on.
- You will have to code on Google Docs or a similar text editor. Therefore, many features such as indentation and syntax auto-complete will not be available. Also, since you will not be able to compile the code, it is recommended that you get enough practice so that you are comfortable during the interview.
- It has been observed that many questions are similar to easy and medium-level LeetCode questions, so practicing them can help you be better prepared for the interview.
- Be prepared to answer questions related to the projects as the interviewer may ask about them in great detail, especially if they are relevant to the specific role you’ve applied for. You can be asked to describe how you came about a particular feature or the challenges you faced while programming it.
Google Coding Interview Questions -
- Write a code to create a pyramid of numbers.
- Write a code that gives the shortest path search for a given linked list?
- Write a code to check if the given binary trees are identical.
- Write a program to reverse a linked list.
- Write a code to find the longest sequence in a binary tree.
- How to Traverse a Binary Search Tree?
Note - Questions related to traversing 2D matrices, DFS, backtracking may also be asked.
You may have another technical interview if you’re a borderline candidate.
Here’s a helpful video by Google in which 3 Googlers provide tips for the coding interview -
Feeling confident about the technical phone screen?→ Book a mock interview
The onsite round of the Google Software Engineer Interview is generally considered the toughest round. In this round, you will have 5 interviews with various executives of the company. Out of these, 4 will be technical interviews that will test your programming skills, and 1 will be the ‘Googliness’ interview.
1. Technical Interviews
Each technical interview will last for 45-60 minutes. If you have applied for a specific role, such as Machine Learning Software Engineer, then at least one of the rounds will be Machine Learning centric. Here, we will discuss the general Software Engineer interview flow. The following topics are tested in the technical interviews -
- Data Structures
- Dynamic Programming
- Graph Theory, BFS, DFS
2. Googliness Round -
At Google, interviewers are on the constant lookout for people with a purpose and want to impact. This round helps the interviewers do this, and assess whether you are a good fit for the company or not. This is a non-technical round wherein you will be asked scenario-based questions regarding the workplace i.e. how you will handle commonly faced situations while working there. Your personality will be reflected through your answers, which will act as an important factor in your selection.
This 5-minute video by Google will give you an insight into how you can prepare for this round -
Sample Behavioural Questions -
- Are there any projects that you regret working on? Why?
- What is your favorite Google product? What would you do to improve it?
- How did you resolve a conflict at the workplace?
- Talk about a project you completed successfully.
Google Coding Interview Questions for the Onsite Round:
- Write a program to print the first non-repeated character from a given string with minimum complexity.
- Write a function to reverse a string using recursion.
- Given a square 2D matrix containing X’s and O’s, find the largest square containing X but not O.
- Which is the best data structure to implement an autocomplete feature? Demonstrate with the help of a code.
- Find the longest consecutive subsequence in a given array.
- Find the number of pairs from the given array that add up to 10.
- Write a function to remove an element from a hashed linked list.
- Write a code to implement an iterator over a binary search tree.
- Design an algorithm to find a path from one node in a binary tree to another. Find the K closest integers to X from a given array, where K and X will be user inputs.
- Write a code to construct a binary tree that is a mirror of the given binary tree.
- Find the largest palindrome in the given string.
- Write a code to check if the parentheses are balanced in the given string.
- Given two binary numbers in the form of strings and in reverse, calculate their sum.
As a software engineer, you open your doors to a plethora of tech career paths. A popular career path is to become a senior software engineer and advance to become a technical lead, where you will manage a team of software engineers and solve complex problems. As you begin to understand more about the product and consumer, you become qualified enough to be an Engineering Manager or VP of Engineering. By now, you will have acquired enough experience to work at the Chief Technological Offices and play a role in the R&D of the company and hire like-minded people for the organization.
Alternatively, you may also want to specialize in fields such as Web Development, Machine Learning, and Ethical Hacking, and advance in these fields.
Another option is to become a Java/Python/PHP developer and empower companies as a freelancer. You can also get into software testing and mobile application development; the options are endless!
The salary of a Google Software Engineer has a really wide range. An entry-level SWE gets a total compensation of around 192,000 USD and goes up to 356,000 USD for a senior-level SWE position. For staff SWEs, the salary hovers at around 670,000 USD and a Principal Engineer (having 10+ years of experience) gets a total compensation of about 1.02 million USD. This can be broken down into a base salary of 331,000 USD, 572,000 USD in stock, and 119,000 USD as a bonus.