“People are inherently imperfect – we like to say that humans are mostly a collection of intermittent bugs. But before you can understand the bugs in your co-workers, you need to understand the bugs in yourself. We’re going to ask you to think about your own reactions, behaviors, and attitudes – and in return, we hope you gain some real insight into how to become a more efficient and successful software engineer who spends less energy dealing with people-related problems and more time writing great code.”
— Titus Winters, Senior Staff Software Engineer at Google and author of Software Engineering at Google: Lessons Learned from Programming Over Time
If you’ve invested in a career as a Software Engineer, chances are you have your sights set on landing a role at one of the highly sought-after FAANG companies. All offer unique benefits, prestige, and, most importantly, the opportunity to make a big impact. But what makes Google stand out?
It’s common knowledge that Google offers highly attractive remuneration packages. Access to great tech resources, opportunities to have a tangible impact, and internal mobility also rank high on the list of reasons that attract Engineers to this role. The company has been described as “Disneyland for Geeks” by Engineering Managers. This New York based Software Engineer summed it up by saying, “If you’re a software engineer, you’re among the kings of the hill at Google. It’s an engineer-driven company”.
So, what does it take to land this sought-after role at Google?
We chatted to Carrus Coach Phil Verghese, Ex-Google Software Engineer, and Engineering Manager to pick his brain on what you can expect during the Google Software Engineering interview process.
During his 12+ years at Google, Phil conducted hundreds of technical interviews for Software Engineers, Engineering Managers, and Product Managers. He was also responsible for training the interviewers. This combination perfectly positions him to help great candidates stand out in this process.
Preparing for the unexpected. What might surprise you about the Google Engineering interview process?
Despite all the industry hype about how only the best of the best will ever grace the Google hallways, Phil says that the biggest surprise probably is that you don’t need to be perfect.
“You’ll be presented with very challenging problems to solve, and it’s often ok if you aren’t able to come up with a complete working solution (especially given the constraints of the interview environment in terms of limited time and not having access to a full programming environment).”
A big part of what you’re being evaluated on is your analytical ability. Essentially your approach to understanding and solving complex problems. Of course, it’s best if you can completely solve the problem given to you, but it’s not an automatic failure if you can’t do that.
In keeping with the topic of flawlessness: Phil says that it’s also possible to be hired even if you didn’t do well in one of the interviews.
Google uses a ‘hiring committee’ of experienced engineers and managers who review all the information available about a candidate (resume, internal references, and interview results). The hiring committee can decide to move forward with a candidate, even if one of the interviewers didn’t feel the candidate should be hired. Sometimes they’ll also request that a candidate repeat a portion of the interview to assess if the one bad interview was just an off day.
What should I expect? Some insights into typical Google Software Engineering interview questions
Phil says he typically likes to ask a warm-up question that also tells him a bit about the person and their ability to communicate technical information concisely.
A standard warm-up question he would use is:
“Spend 5 minutes and tell me about an interesting technical problem you solved? For example, it could be something you designed, a challenging problem you solved, or a difficult bug you tackled.”
One of the things that Google evaluates during engineering interviews is communication skills. With this question, he would be looking for the candidate to genuinely have an interesting technical problem to discuss, and be able to describe it within 5 minutes. Some people struggle with how much context to give for someone else to understand the story. Software Engineers need to be able to concisely communicate technical information.
Phil offered these sample problems as excellent practice for what you can expect to face in your Google interview.
First off a question on determining whether a string has valid parenthesis, and then one on finding a longest dictionary word through deleting which has practical applications in a swipe keyboard implementation.
When presented with a coding problem, it’s really important to spend a few minutes clarifying the requirements with the interviewer. Many times you’ll get a question that seems very straightforward, but actually has a lot of nuances and gray areas that should be cleared up.
Phil says that this key part to answering these types of questions is often overlooked – a huge mistake.
“I’m expecting a candidate to ask me several questions to make sure they have a clear understanding of the problem (and with people fresh out of school, I’ll explicitly tell them that they should ask me several questions before starting to code).
Once you understand the problem, don’t start coding yet! Take another few minutes to make a plan of how to solve the problem. Consider edge cases, sample inputs, and expected outputs. Think about if there are data structures that can help with the solution. Then, when it is time to code, don’t be afraid to iterate back through the requirements and design phases.
Do not try to come up with the optimal solution right away. One of my Computer Science professors would always say “Premature optimization is the root of all evil.” That quote has stuck with me even today, and it has been a few decades since I took that class. Try to do the simplest possible solution to the problem first. Then when you know how to do that, you can look for bottlenecks or ways to improve it that may lead you to a better solution.”
Software Engineers will also typically be asked at least one System Design question.
These questions test your ability to think about large-scale software systems and typically result in you drawing some kind of block diagram and describing the key components of the design.
There are some great online resources available to prepare for these questions. Phil recommends Grokking the System Design Interview, Fundamentals of System Design, and The System Design Primer (which includes good questions with solutions).
What about more senior roles? Are the interview questions different for senior Software Engineers, or Engineering Managers?
Phil says that he generally asks the same set of technical questions to both junior and senior engineers.
With junior engineers, he is looking to see that they can solve problems with some guidance. He would typically give them plenty of hints. What he is looking for is to see that they can take his hints and apply them to the problem.
For senior engineers, he is expecting that they don’t require many hints, and the clues given would be more vague and higher level. Here, he would be testing the ability to get to the core of a problem and figure out a reasonable solution.
At Google, Engineering Managers are expected to be very technical. They need to understand their team’s work with enough technical depth to contribute code, fix bugs, and be part of design decisions. They have to guide their team, evaluate how their engineers are operating and coach people to perform better.
Phil says that most Engineering Managers are writing some code – he tried to spend about 60% of his time writing code during his tenure in the role. It then follows that during interviews, Engineering Manager candidates will be expected to solve problems with code and crack system design problems. Interviewers will often evaluate them like senior engineers.
What about the juniors? What could an applicant for a Software Engineering Intern role expect?
Phil says that at Google, Software Engineering Interns are always matched with an experienced full-time engineer who will mentor them on their intern project. The interviews for interns focus on testing their ability to solve programming problems, and it’s expected that they will need lots of hints and help.
“When evaluating an intern candidate, it’s similar to evaluating a new graduate. I want to see strong proficiency in their language and the ability to take a hint and apply it to the problem at hand.”
Ready to practice and prepare for your Google Engineering interview? Reach out to Carrus Coach Phil to best equip yourself with the tools to succeed.
- Software Engineering at Google: Lessons Learned from Programming Over Time by Titus Winters (Senior Staff Software Engineer at Google), Tom Manshreck (Staff Technical Writer within Software Engineering at Google), Hyrum Wright (Staff Software Engineer at Google)
- Cracking the Coding Interview: 189 Programming Questions and Solutions by Gayle Laakmann McDowell
- In the Plex – How Google Thinks, Works, and Shapes Our Lives by Steven Levy
- How Google Works by Eric Schmidt, ex-Google CEO
Other Google related reads on Carrus:
- How to land an interview at Google
- Top Tips on Nailing the Technical Interview from ex-Amazon & ex-Google Engineers
- How to Ace your Google Product Manager Interview from a PM Interview expert
- Insider Advice on Crafting Your Resume to Catch the Attention of Hiring Managers at Google, Apple, & Amazon
- The Pros & Cons of Being a Temp or Contractor at Google
- How to Use the STAR Method to Nail Your Interview at Facebook, Google and Amazon