Software Engineer Sal's advice for interviewing at Google
This post is part of Google’s “Inside the Interview” series, where current Google employees share their stories about interviewing for Google. The information presented here represents the sole views and opinions of the author and not those of Google. Because our hiring process is constantly evolving, the experiences below may not fully reflect what the current interview process looks like.
Meet Sal
I grew up in Strongsville, Ohio (a few miles south of Cleveland). After high school, I moved to Chicago and majored in Computer Science at DePaul University. I completed some small and large coding projects during college, which ultimately helped me land an internship (which led to a full time position), where I learned essential software engineering skills.
After gathering a year of software engineering experience, I got a job at Google working on the Customer Data Protection team.
Getting the Interview
I was always on the lookout for job opportunities at Google. Around December of 2021, I just happened to check if they were hiring and found a new opening in Chicago for a position titled Early Career Software Engineer. The position was intended for individuals with less than 1 year of engineering experience, and I fit the bill. I applied and completed a self guided online coding exam. The self guided coding exam consisted of 2 questions and a 90 minute timer. They were both typical coding interview questions, designing an algorithm to achieve an output. I was able to solve the first question quite easily, but the second question proved much more troubling. I was able to get a passable solution only a few minutes before the timer expired. I was dumbfounded when Google reached out via email a few weeks later about scheduling an onsite interview.
Preparing for the interview
I had a total of 5 interviews:1 behavioral interview, followed by 4 technical interviews, all back-to-back.
I scheduled my interviews for January 28th. This was a little earlier than I should have and I only had about 2 weeks to prepare.
In those two weeks, I was able to study for a total of 35 hours. I would study for an hour on my lunch break, and then around 6-8 hours straight on the weekends. I would not recommend this strategy - I encourage everyone to schedule their interviews as far out as possible not only to increase studying time, but also to avoid rescheduling at the last minute.
My focus was on data structures and algorithms, mainly practicing through a popular online platform for coding practice. Another excellent resource that I used was a well-known book containing hundreds of programming questions and solutions.
Returning to algorithms and data structures, my first technique was to drill the stuff I thought I had a good understanding of. For me, I drilled DFS and BFS algorithms and the usage of HashMaps and HashSets in algorithm problems. If you build a solid foundation out of these, you can hold your own when answering a lot of questions.
Once I felt like I had a solid understanding of the above, I isolated the things that scared me. In particular, the dreaded Dynamic Programming technique. My assumption - which was correct - was that anything that frightened me and anything that I was unsure about would appear in the interviews. I made sure to study these concepts as much as possible. As my studying time was running out, I did not feel confident in my dynamic programming abilities — and you probably won’t either. However, practicing the stuff that worried me the most ultimately paid dividends during my interviews.
The interviews
All in all, my interviews went alright. Some of them I thought I did well on, others not so much.
For my behavioral interview, my general impression was very neutral. I don’t think I crushed it, but I don’t think I did poorly on it either. I wish I devoted more time during my practice towards behavioral related questions.
The technical interviews were a little easier to gauge. I would say out of the 4 of them, I performed noticeably well on 2 of them and had a positive sentiment afterward.
The other 2 were hit or miss. It should be noted that the technical interviews started relatively simple and got progressively more difficult. Think of it like a ladder, with multiple rungs of difficulty. As you solve, the problem becomes more complex and you must compensate by adapting your initial solution to capture this added complexity. This technique is meant to gauge your level of knowledge and then stretch you to the edge of it. Ideally, you can use this to demonstrate your ability to think and solve problems outside of your comfort zone.
For my first difficult interview, I was able to climb the ladder up until a certain complexity point but was ultimately unable to solve the problem before time ran out. I was able to vocalize what difficulty I was encountering, and a calmer version of myself would’ve been able to solve it. However, my stressed interview self was unable to solve it.
As for the other difficult one, I was struggling to crack the main chunk of the problem. Slowly but surely, my interviewer and I were able to bounce ideas off each other and I was eventually able to figure it out.
In conclusion, I would say that I really enjoyed my Google interviews. Before interviewing, I had created this idea in my head that it would be nearly impossible to land a job here. I think that many people do this. I was also told by my recruiter that it was not uncommon for people to go through the interview process more than once before they are approved by the hiring committee. After my interviews, I felt that I was no exception. I did not feel like I got the job, but I did feel supremely confident that after more studying I would return next year with more success.
Recommended by LinkedIn
After the interview
Immediately after the interview, I called my Mom. I told her that I didn’t think I actually got the job.
The following week, I spoke with my recruiter and she said that she had all the data collected by my interviewers and that it was going to be reviewed internally.
A few days later, I spoke again with my recruiter, who told me that my packet would be going to the hiring committee, and that she would give me a heads up when I was going to be under review.
Another couple weeks went by without hearing anything.
On March 1st, I was sitting at my desk and I got a phone call from my recruiter. In the split second between reading the caller ID and answering the phone, the following went through my head:
She’s probably just calling me to let me know when the hiring team is reviewing my interview feedback… That wouldn’t make sense, she probably would’ve just sent an email… This is a verdict.
I picked up the phone, and listened as my recruiter delivered the news.
“Hey Sal, I’m just calling to let you know that the hiring team met to review your interview feedback, and has given us the green light to move forward with the team matching phase. Congratulations, the hard part is over!”
Before my recruiter could finish saying “Congratulations”, I was laughing into the receiver. I could not stop laughing. She said something about a matchmaking survey, and the phone call was over. I then proceeded to call about 20 people and tell them that I got the job.
What followed was, for me, the hardest part of the process. At the time when I interviewed, everyone who passed the hiring committee was then put through team matching. For most individuals, I heard this was a pretty seamless process. You’ve been hired, and teams that need people are trying to pitch you their project with hopes that you’ll be interested enough to join. I should note that the current hiring process at Google may not be like this anymore.
This was not the case for me. The primary issue was that I did not want to relocate. I live in Chicago and I love it here. I told my recruiter from the beginning that I was not open to relocate. The difficulty was that this made it much harder to place me on a team.
I met with one hiring manager on March 9th for my first match call - who decided to move on with a stronger candidate.
Then I proceeded to wait another 3 weeks. I was under the impression that if I did not find a match within a month, the process would close out and I would lose the opportunity. In retrospect, this was not true and the Chicago office had a low open headcount over that period. Regardless, I thought that this entire thing was going to come crumbling down.
On March 28th, I woke up to an email on my phone. I saw the sentence start with “Congratulations” and assumed that another potential manager had chosen to meet with me. However, as I kept reading, I realized that my first hiring manager reached out again and said that another position opened up and that he wanted me. I had found a match!
The next week or so felt like a blur. It should be noted that I also received a job offer from another large tech company. Although they gave me a great compensation package, I had my mind set on working at Google. However, having a competing offer from another large company gave me a baseline for negotiation.
I met with my recruiter and spoke about the Google offer, which came in higher than my competing offer. I was pretty thrilled with the compensation package and decided against negotiating. I also don’t recommend this strategy. I’ve since learned that you should always negotiate, regardless of how happy you are. But you should be prepared to back up that negotiation.
My first day was May 2nd, 2022.
The entire process from application to start date lasted 6 months.
A few key pieces of advice:
Working at Google is ambiguous and being able to function well in an ambiguous environment is important. When interviewed, you will be asked things you don’t know the answer to. My biggest piece of advice is to show intellectual humility. Admit quickly that you are uncertain - but explain how you would intuitively go about solving the problem.
For engineering interviewees, heed this advice from my recruiter. During the interview, imagine that you are trying to solve a problem with a coworker. In this situation, you are responsible for taking the lead, but in times of uncertainty, bounce ideas off of the interviewer. Talk through your ideas and be vocal as to why you are thinking a certain way, or stuck on a problem.
And finally, I consider myself incredibly fortunate to have been offered the job on my first go around. As I mentioned earlier, it is not uncommon to interview with Google 2 to 3 times before making it past the hiring committee. If you don’t get it the first time around - do not give up. Take the time to find your weaknesses and strengthen them.
Software Engineer | Java | Spring | Spring Boot | Angular | React | REST | Microservices | Kafka | AWS | Kubernetes | Docker | Hibernate | Jenkins | Maven | PL/SQL | JIRA
4wGreat insights from Salvator Guarnera! Thanks for sharing!
Laravel | PHP | MySQL |
1moWow, what a great and detailed explanation!!! Definitely helpful!!
Project Manager | Digital Transformation | AI Enthusiast | Master Black Belt | Chatbot Expert | LLM | Process Improvement | Business Roadmap
2moGreat article!!! Learning about Sal's journey to Google is inspiring! His persistence and dedication, despite facing challenges such as the coding exam and the long interview process, paid off in the end. The story emphasizes the importance of preparation, problem-solving skills and a positive mindset. It's a great reminder that even if you don't succeed on the first try, perseverance can lead to great opportunities.
Aluno na FIEC - Fundação Indaiatubana de Educação e Cultura
2moGenial!
IT Manager at Intuit
2moVery practical advice, thank you for sharing~