Google Interviewing Process for Software Developer Role in 2020


    Hello! I just finished interviewing with Google and wanted to quickly catch you up on some interesting and frustrating steps of the process so that you can understand what to expect from Google interviews and the steps involved. I will also share some tips on how to prepare for the interview and mistakes to avoid.

    If you’re looking for a success story, this is the wrong post for you. I actually failed the interviewing process, but the whole experience was pretty interesting for me and leads me on to another stage of my career. I will share more details on this at the end of the post. All names and identifying details have been changed to protect the privacy of Google employees.

    Initial screening interview


    My story starts on a rainy October morning. I received a message from Olivia, a Google recruiter, with the subject «Interested in solving high-impact engineering problems at Google?». At that moment in time I had recently finished several projects and was looking for new challenges. Working at Google seemed like a good opportunity that I didn’t want to miss, so I quickly responded, «Yes, definitely» and booked an appointment via Google Hangouts.

    Our chat took place two days later via Hangouts. Olivia told me how exciting it is to work at Google, and what the hiring process looks like. When I asked about the details of the position, she told me that they were looking for someone for their new office in Warsaw, Poland, to support and develop Google Cloud functions for enterprise customers. I asked about the exact responsibilities that would come under my remit, and the team I would be part of, but she said it didn’t matter at that stage – I could select the desired team and position later on when all steps of the interview process were completed. That was frustrating moment #1 for me, but I decided that it was worth persevering.

    Frustrating moment #1. What if there was no team at Google that I would like to join?

    From what Olivia told me, the interviewing process at Google comprises three stages: first of all, there are two remote coding interviews on algo and data structures. If you’re extraordinary, you might just have one interview, but for an average software engineer it will be two. The next stage is an on-site interview in one of the Google offices, which includes several coding interviews (again!), a system design interview, and last but not least, ‘Googleyness and Leadership’. The last one detects how well you’ll fit into the company.

    Tip #1. The Google interviewing process is difficult and will take up several weeks of your life. You need to go all-in to prepare for it.

    In Olivia’s words, «Even if you pass all the interviews and reach the final stage, it doesn’t guarantee that you will get the job. Because Google’s hiring process has one more step, which will take place without you. In this last stage, several senior Googlers (who don't know you and have never spoken to you) will review your CV and feedback from the interviewers and decide whether you will fit into Google or not. Only with their endorsement can you land the job.» OK, it’s time for frustrating moment #2.

    Frustrating moment #2. You can pass every interview with A grades and still not get a job, because a senior Googler decides that you're the wrong person to be hired.

    After the screening interview I realised how low my chances were and decided that I would go as far as I could only for the sake of experience.



    Stage 1. Remote coding interviews


    Later on, Olivia booked me a first remote coding interview. In the meantime I went through several algo problems on the geeksforgeeks website and completed its «Must Do Interview Preparation Course». I can’t recommend it, because problems on this course are very abstract and the platform is buggy, but for the first coding challenge it was enough.

    The call was via Google Hangouts. The interviewer briefly told me a bit about himself and asked me to solve a coding challenge. I can’t tell you the details of the coding challenge (it would be unfair and wouldn’t help you much anyway). The only thing I can share is that it was some sort of greedy algorithm in a chess game environment. I solved the whole problem in 50+ minutes, almost without any hints from the interviewer. The solution includes tests and code on Python. All coding for these types of interviews is usually done in some kind of shared notepad, and in this case it was Google Docs. Frankly, the interviewer himself and the challenge were interesting.

    I was waiting for the results: had I performed well or not? The results were ready only after a week, and only when I asked the recruiter for an update. This would become a common theme for all the following interviews: the results would be ready only after a week and a message to the recruiter.

    Tip #2. Don’t be shy about asking your recruiter for the results of your last interview.

    Olivia said that the result of my interview was «in the majority positive». The only negative thing was the time that elapsed in solving the problem: it should have been no more than 45 minutes. Olivia therefore asked me to undergo another remote coding interview. At this point I understood that in the eyes of Google I was an average software developer, not an extraordinary one. But that’s OK – I decided to move forward.

    The second remote interview was a week later, and it was pretty much the same as the first one. The coding problem was simple enough. It was a combinatorial problem and to solve it you had to come up with the math formula and think carefully about all edge cases. The solution took me only 40 minutes and I was super excited to have solved this problem in such a quick and elegant manner. I waited for the final feedback from the recruiter. The next step would be a trip to Poland for an on-site interview.

    There was a week of waiting, during which time the recruiter didn’t answer my messages. Then Olivia replied that she was on a business trip and would respond to me when she was back in the office. Two weeks after my last interview, I got a voice call from Olivia. She said that my last interview had been «in the majority positive». The only negative thing was that I used a lot of pseudo-code. She also mentioned that I was good at testing (maybe it’s because four years ago I read a «How Google Tests Software» book, who knows?)

    Tip #3. You should cover each and every line of code with tests in the coding interview. Just say it out loud when the interviewer asks you to test your function, and only after that, start writing your tests.

    After such a promising beginning to our talk, she said that they didn’t know what the next steps should be so I should wait for a while. A week later I got a message from Olivia who said that from now my recruiter would be a George, another guy from the London office, and that I needed to pass another two remote coding interviews. I would get all the details from George in due course.

    I had a call with George later the same day. He said that my coding interviews would be done remotely in a month's time and that I should select a date. He refused to say why these interviews would be remote, but mentioned that these coding challenges would be much harder than previous ones and if I passed them I would be invited for the remaining interviews at their office. I decided that I had already started this process and should see it through to the end.



    Stage 2. More remote coding interviews


    I started preparing for another two interviews. This time I was using HackerRank and its «Interview Preparation Kit». I highly recommend it – it’s really close to what happened at the interview.

    Tip #4. HackerRank and its «Interview Preparation Kit» are the best resources to prepare for Google coding challenges.

    Just after the new year holiday I received timeslots for my interviews – the first one on 20th January at 11a.m. (duration 45 minutes), and the next one 15 minutes later. Wow, that was unexpected. I asked George if we could separate the interviews by a day, and received an unexpected answer: «We will need to conduct these on the same day unfortunately Ilya, to minimise the number of steps in the process that you are going through, and to keep as time efficient as possible.» It was another frustrating moment. I had been waiting for them for several weeks, and now they wanted to be «time efficient».

    Frustrating moment #3. Google doesn't respect your time.

    This time the challenges were difficult for me. The first interview was about tricky searches on a graph. I only came up with a brute-force solution at first, and realized that it could be done with a graph later on – but it was too late.

    The second interview was about the «2048 game». It was the first time I couldn't understand the task clearly, maybe because I hadn’t played the 2048 game at all. The questions were about a strategy to win in the 2048 game and an elegant solution to generate the next board state. Only two days later I realized that the 2048 game is some kind of «Game of Fifteen» and the solution could be found with the help of A* search algorithm.

    It was clearly my fault – I didn’t pay a lot of attention to graph algos during preparation. So don't repeat my mistakes – as I said earlier, put all of your efforts into interview preparation.

    After a week of waiting, George gave me a voice call and said that I didn’t pass the interview and I should improve my skills in big O notation and graph theory. He mentioned that I could reapply to Google next year.



    What did I take away from the Google interviewing process?


    When I started interviewing with Google I clearly understood that my chance of getting the job was not that high. What have I gained after all these interviews? Experience – a lot of experience – and a bit of an understanding about how Google works internally. Google has a myth that it’s a dream workplace. Maybe, but not for me. After several months of interviewing, I understood that Google is just another big enterprise company that has all these bureaucracy problems, opaque processes and weird rules. Further reading about Google’s other side can be found at the Michael Lynch post “Why I Quit Google to Work for Myself”.

    What’s next?


    After a tough interview with Google and several interviews with small start-ups and companies, I have concluded that employment is not for me. I want to be an entrepreneur and create my own company. The first obvious step for me is freelancing. I think I'm good at full stack web development (my preferred stack is Node.js/Javascript/React/Docker and you can check out what I've already done on the «My Projects» page).

    Now I’m eagerly looking for clients and contracts. If you think you have something for me or you know someone who needs a remote full stack developer, let’s have a chat. I'm happy to talk business or simply give you some free advice.

    Originally posted at ipirozhenko.com/blog/google-interview-2020
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 9

      +6

      Googler here. I want to apologize for the way that the recruiters and interviewers treated you. There were several anomalies in the story you describe. The delays in were unacceptable. There should only be one phone screen in most cases. At some point, without telling you, my guess would be that they transfered you from one job ladder to another (the second round of phone screens) even though you seem to have qualified for on-sites with the first two phone screens. The second two interview questions that you got were also unacceptable because they tested for prior knowledge, not general capability. Also, I have never seen an interviewer care about testing (but I never interview for the Software Engineering in Tools and Infrastructure ladder—maybe it happens there).

        0
        This post discussed at HN:
        news.ycombinator.com/item?id=22405372
          0
          There are several similarities to my interviewing process with Google in 2018. Mine started off similarly, with a conversation with the recruiter where I learned that team placement didn't come until later. That conversation was okay, but it soon became more frustrating.

          The first problem was that the recruiter started e-mailing my GMail, even though I'd communicated that it was not my primary e-mail account. But we got that sorted. Then, when coordinating the time for the first remote coding session, the recruiter had asked if a particular time worked, and I replied that time didn't, but listed several others that did. I didn't hear back, until I got an e-mail sent in the hour she had initially proposed, asking why I hadn't been there for the interview. I found the e-mail where I'd mentioned that time didn't work, sent it to her, and she apologized and re-scheduled, but it was the first (and so far only) time I've had a recruiter not pay enough attention to ensure the interview was scheduled at a time the interviewee was available.

          When the remote coding session did occur, I still hadn't been informed that the format was a remote coding session. Perhaps the recruiter assumed everyone looks up Google interview prep and knows this, but Google wasn't my first choice of the places I was interviewing, so I hadn't. Like Ilya's 2048 example, the problem was one I wasn't familiar with in the slightest, and I didn't understand the task. Not knowing the format, I inquired about sample data, another problem… anything that would allow me to demonstrate my abilities. But apparently the format is to only ask one question, so the interviewer stuck with it until after 10-15 minutes I let them know I wasn't interested in continuing to struggle with a problem whose goal I didn't grasp for however long they planned to let me continue doing so.

          Perhaps also worth noting, even if the task had been comprehensible, Google Docs leaves much to be desired as a coding platform. Something like VSCode's remote sessions would have been far superior. I understand Google probably wants to stick with their own products, but some flexibility would have made for a much-improved process.

          Overall it was the most frustrating and least professional interview process I've experienced, out of a couple dozen in the past decade and 6 in the past two years alone. Some companies I decided I wouldn't want to interview with again because of the company, but Google is the only one where I wouldn't interview with them again because of the interview process… and I didn't even realize how extensive the process would have been, had it started off better, until reading this article.

          It worked out okay in the end, though. I wound up working for my first choice among the companies I interviewed for at that time, and have learned a ton through that position.
            0
            Have the same experience as you in July-September in last year. But it's worth noticing that the problem during the phone-interview section usually checks only the basic algorithms, and you could ask a lot of questions about the validity and the complexity of your solution before writing the code. Also, AFAIK if you pass to the on-site section Google had provided the free online-seminar about the System Design section(format, which questions is mandatory, etc.) for the applicants. But last year they said that such activities were cancelled in June.
            On on-site sections also you have not too many choices (ChromeBook vs whiteboard)

            Also I found that there is no balance between sections, but the fail on one of them can really costs you the position. Some questions can be just reformulated versions of the questions from the phone-interview. Some sections can be much easier than others (Graph traversal vs implementing lazy-evaluated Segment tree). IMHO Googliness is much harder than the algorithms and System Design). Also, It's said that the applicant can be invited to the on-site section only three times, after that you'd be permanently removed from the candidates list.
            Also I heard that complexity of coding questions slightly differs from SRE positions to SWE positions(harder)
            0
            Thank you for sharing your experience. I envy people like you who can pass a phone screening interview and solve remote coding challenges. I am a slow thinker, or just not as smart as big companies expect candidates to be. Moreover, I didn't care about preparing for interviews in my entire career. Usually, companies invite me to talk a bit and after a third cup of coffee they are verbally giving me an offer which is getting doubled after a week of negotiations. You can imagine my frustration, when I first tried to pass a «real» interview in a big company with all these algorithmic challenges and a multiple steps process. I was not prepared for this. It all starts with a message from a recruiter, like, «Hi ..., your profile is impressive and your experience perfectly matches our company's/team's needs, so...». When I get this kind of message, I won't gonna lie, I buy it and anticipate a conversation about my experience, and salary range to impress me. At first I was surprised how hard is to get a job in a big company for a salary that 2 times less than what I have. Of course a personal assessment of a candidate is not a scalable process, but still, is it really working well?
              0
              This happens in every big giant company, even I'm facing the same issues, hardly I tried more than 4 times the same company finally I had placed the same company.
                +1
                Thanks for sharing your views. Google process has really turned the days up and down for developers.
                  0
                  Interesting post, I just like the way you write out this post. Just bookmarked your blog and will visit at least once a week.

                Only users with full accounts can post comments. Log in, please.