Taro Logo

Software Engineer Interview Experience - San Francisco, California

January 1, 2020
Positive ExperienceGot Offer

Process

The general Google interview process has five to six phases:

  • Recruiter phone interview
  • Technical phone interview / coding challenge
  • Coding project*
  • On-site interview
  • Team matching phase
  • Hiring committee

*This step was only necessary for the UX Engineering role and not the Software Engineering role.

Let's dig a little deeper into each phase.

Recruiter Phone Interview

During the recruiter phone interview, the recruiter will tell you a bit more about the role and the interview process. Don't take this interview lightly, however, as each step in the interview process is important and counts towards your overall performance.

Some tips for the recruiter phone interview include:

  • Read up on the role and the company ahead of time.
  • Be on time.
  • Have two or three questions prepared to ask the recruiter.
  • Thank them for their time.

Your recruiter will fight hard to get you an offer, so treat them kindly!

Technical Phone Interview

If your recruiter phone interview goes well, you'll move on to the technical phone interview. During this call, you'll pair up with a Googler who will give you a coding challenge question.

I had one question to answer, and it primarily tested the following skills:

  • DOM manipulation (accessing DOM nodes, performing some task, dynamically generating new DOM nodes)
  • CSS

I coded my solution in a Google document. Here is the approach I took to problem-solve:

  • Ask clarifying questions: The questions are left with a few missing pieces because the recruiter wants to see how you think.
  • Write pseudo-code: Writing pseudo-code allows you to get your thoughts in order before you jump into the code.
  • Code a brute-force solution: You don't have to code the most efficient solution first. Starting with a brute-force solution then optimizing shows your attention to performance.
  • Optimize your solution: Once you have a brute-force solution, where can you optimize it? Can you refactor a nested for-loop into two top-level loops?
  • Test for edge cases: Once your solution is working and optimized, create some test cases. These will allow you to see if you missed any corner cases.

Coding Project

If your technical phone interview goes well, you may be asked to complete a take-home coding project. I was not asked for a project during the Software Engineering interviews; however, I was asked to complete one for my UX Engineering interview.

I thoroughly enjoyed completing the coding project for a few reasons:

  • I was able to pick from two projects which showcased different skills.
  • I had a week or so to complete the project (although I was informed it should only take a few hours) which reduced the “on-the-spot” pressure of a coding interview.
  • I was able to showcase some of my strongest skills like thorough documentation, user flows, and information architecture.
  • I was able to pick my tech stack.

You should clarify project requirements with your recruiter before diving in. For example, if you want to use a JavaScript framework, you should ask if this is allowed.

Some tips for your coding projects include:

  • Try not to rely too heavily on third-party libraries. I chose to use Material UI, Google’s design system, for the UI work because it showcased my knowledge of design systems and kept the UI consistent; however, using a UI framework can have performance implications.
  • Be honest about the areas you would like to improve upon. One part I always include when submitting a take-home assessment is “areas for improvement.” If you had an extra few hours or weeks, what would you have done differently?
  • Run your application through an accessibility tester. I ran my app through Google Lighthouse to test for accessibility.
  • Don’t pour your heart and soul into the project. If the recruiter says to spend 2–3 hours on the project, don’t spend a week working on it. You’ll burn out and feel taken advantage of if they reject you after this step (I know from personal experience).
  • Clean up your code. Be sure to remove comments and format your code appropriately.
  • Think about project architecture. Your file structure should be clear and organized.
  • Include setup instructions. If the person reviewing your code doesn’t know how to run your application, you probably won’t move on to the next round.

Questions

What coding languages are you most proficient with?

Was this helpful?

Interview Statistics

The following metrics were computed from 142 interview experiences for the Google Software Engineer role in San Francisco, California.

Success Rate

9%
Pass Rate

Google's interview process for their Software Engineer roles in San Francisco, California is extremely selective, failing the vast majority of engineers.

Experience Rating

Positive55%
Neutral28%
Negative17%

Candidates reported having very good feelings for Google's Software Engineer interview process in San Francisco, California.

Google Work Experiences