Yet another blog post after Google On Site Interview

Oğuz Yarımtepe
9 min readSep 10, 2019

--

Everything started with an email i got below on last March:

Hi Oguz,

I hope you are well.

My name is Funso and I’m recruiting for Google Engineering team. I came across your profile during my research. Based on your combination of skills, I think you could be a fit for roles here at Google! I understand that you were in contact with my colleague Mairead back in 2016 but the timing was not right.

If you’re looking to take your ideas to the next level, you could be part of a team that builds, runs, and scales our massively distributed systems, where you can help us tackle global scale problems in reliability, scalability and availability.

I would love to schedule a call with you to explore options as I think you could potentially be a great addition here at Google!

Looking forward to hearing from you, thanks for your time.

I remembered the mailed he mentioned about 2016. I was not thinking to move abroad those times, not sure about it and maybe because of the environment i was in, i was not able to focus on that subject so much.

It was the time while i was having my friends going different countries for work when the new offer mail came. Nearly every week, i was hearing a new migrate to Amsterdam, Zurich or London. So, i have some thoughts about living abroad, also feeling more confident about my job. So i said “Yes”.

The first call was a an online interview at meet.google.com, face to face. I talked with a Google engineer. The talk was basically the details of the job offer, about my current position, how will the process continue if i accept. The offer was for SRE team, which sounds really exciting. It took 45 minute. The talk was really so sincere that i never felt myself stress. Last 15 minutes, he said that he want to ask some quick questions to warm up to the next technical online interview. He warned me about that, don’t think that it is like a real one, just let go through the questions and see your level.

The questions were about Linux/Unix internals, networking and coding. Some were multiple choice, some were just waiting an answer from me. A typical network questions was like which protocol is used at DNS protocol:

A) TCP

B) UDP

C) Both

Linux internals ones are not hard also, but i remember one hard one:

Which system call’s return value is not zero although it is ended successfully?

That was something i didn’t know. The choices were:

A) malloc

B) exit

C) open

So i just made my guess a bit thinking and gave the right answer. So it was 10 questions, at the end, the guy said me that i should work on a bit Linux/Unix internals, buy a book most probably that has hands on practices. Asked me a date for the first online interview. I gave a date for 3 week later. After that i got an email that has invitation for online interview with lots of link covering the topics that can be asked, that is suggested to be watched and read. The interview would be on Linux/Unix internals and coding.

I started to fresh my knowledge on Linux/Unix internals. Started reading Linux Programming Interface. Also made some practices on Python. Googling helped indeed. Found lots of information on Quora, questions that had asked before, even some Github repos for coding interview exam preparation.

3 weeks later, i was on another meet.google page, talking with a guy from US. He was working as senior SRE engineer, looks like a really tough Linux guy. We directly started the interview. The first question was, “what will happen when you type www.google.com to Linux terminal, according the Linux internals”. Starting from PATH variables i started to explain. The answer was covering how a process is run at the Linux shell, fork command, process id, even strace commands that you had seen when you executed the telnet command. I was not sure about all the strace commands but fork was enough for him. Then network connection explanation started. DNS resolution, TCP handshake, SYN package sending, reason of TCP handshaking, details of it. The last thing we were talking was where the file descriptor is created for the TCP connection. Then coding started. It was on Google docs. Asked me to write a Python code to sort top n words of a document. Dictionary usage, sorting according to values solved the issue. Then he made the question a bit complex, and asked me to think about words ending with punctuation. So splitting according to space was not enough, i needed to write a regex to identify each word.

Overall, the interviews was good enough. I learned it after i got an email from Funso again about the result of the interview. I remembered i was so happy when he said that i am invited to on site interview. He asked me choose Dublin, Munich or Zurich for interview location.

After talking with my wife, searching and talking with my friends i decided on Munich. And the process for the flight is started with the below mail:

Dear Sir or Madam,
Please accept this letter in support of the visa application of Oğuz Yarımtepe to travel to Munich, Germany
in order to interview for the position of SRE. Oğuz Yarımtepe will be in Munich, Germany for
approximately 5 days during June, 2019. For scheduling flexibility, we would like to request a visa spanning
the month of June, 2019.
Oğuz Yarımtepe will be a guest of Google for the duration of the stay, and Google will cover all of the costs
associated with the visit. The office is located at Google Germany GmbH, Erika-Mann-Straße 33, 80636
München, Germany. Reception Number: +49 89 839309029. For queries please contact xxx

The topics were informed and i prepared for the below topics:

0 Interview on Googleyness&Leadership: Non-technical interview.

Googleyness:Share how you work individually and on a team, how you help others, how you navigate ambiguity, and how you push yourself to grow outside of your comfort zone.

Leadership: Be prepared to discuss how you have used your communication and decision-making skills to mobilize others. This might be by stepping up to a leadership role at work or with an organization, or by helping a team succeed even when you weren’t officially the leader.

1 Unix/Linux internals

It’s a deep technical discussion centered on aspects of how Unix/Linux systems work and why

It usually starts with a broad question (f.ex. describe an inode) which evolves into a discussion about that topic (depth) or you might be asked about multiple areas (breadth).

You’re expected to be able to explain aspects of: processes, system calls, file systems, context switching, kernel resource management, kernel network stack, how the shell works and why, client-server protocols.

You should provide a detailed and structured answer, explaining how things work and why

2 Troubleshooting

You will be given a hypothetical problem around systems troubleshooting and your objective is to effectively and systematically find the root cause

3 Practical coding in Python

Practice your coding without a compiler to avoid any confusion throughout the interview

4 Interview on NALSD:

Designing solutions for a very large scale distributed system/sub-system (think of scalability, data centers, network latency, redundancy, concurrent users, etc.) With this interview, thinking of scale is KEY, also try and think of the most optimal design and trade-offs. Be sure to ask clarifying questions, suggest alternatives, and propose a better solution. Think of it as a technical discussion with a colleague where the objective is to come up with a design document for a new system

The Non-Abstract Large Scale System Design was something i have never heard, and most probably unique to Google, that’s why they offered me to attend and online couching session covering this topic.

The session was instructed by a Google engineer. There were ~20 people attending and he explained us what type of interview is the NALSD by asking a simple design question. The question was very simple, how to desing a system for copying a file to remote servers. Each time we realized new points to figure out like, whether the file is big, how much the speed of the network connection, whether it is required to transfer resume if any fail occurs, do we need to check the content of file, …

So step by step, we design a system covering every problem we saw.

I used below links for preparation:

Also read articles on the architecture of large systems. At the end, i flight to Munich. Google arranged me a very nice hotel. I reached there, one day before the interview.

At the morning, i walked to the Google office, early in the morning, although the interview is at 10, i was there at 8.30 :). A young Google engineer came, took me to the interview room and we started with Linux/Unix internals. We started with talking on threads, user space threads and continued on file system types, extending partitions. Trouble shooting was the next one. Started with an easy question, ended with the reason of an output at database logs. Coding was not that bad for me, asked to create a hash function from a given string. Large scale design was the scariest one but i did that too and designed a key value system via the given metrics.

Overall, i was not good at threads parts, esp. at user space designing. Trouble shooting was not bad but the root cause was not so clear for me. I wish to know Python collections module before coding interview, it was a working code, but was so complex.

Each were 45 minutes. For every one, i had interviewed with another engineer. I had 10 minutes breaks. We gave a break for lunch. Another young engineer came for lunch. He showed me around, the lunch part was awesome:

  • They have open buffet, daily specials from the cook, even vegan menu
  • There is a bar inside
  • Deserts, salads, fruits and everything you can imagine

We talked about his job, GLinux distro, what he does at GLinux team. It was exciting to hear that they have a Debian based distro for inside usage and he is a Debian developer and what he does is to send code to upstream.

Google Munich Office

When the day ended, it as 2'o clock and i went to room for a bit resting. Next day i rented a bike and travelled Munich.

  • I stayed there 3 nights.
  • English garden was wonderful
  • Google engineers were mostly young generation
  • Munich is not that expensive, i checked their open bazaar, markets, tried local foods, and can say that some prices are even cheaper without concerning the unit os the money
  • 1 lt beer is 5 euro
  • It was my first time i was in Germany, Munich. Till that time i have fear about living abroad, but visiting Munich helped, and i felt that i can live there with my family
  • Till that time, i was feeling like, “anyway i will fail, Google will ask me hardest questions, how can i pass, at least i am going on site, thats enough for me”, after i saw Google office, Munich and answered some tough questions, i wanted to pass the interview

Unfortunately i couldn’t. It was the time when i got a phone call while waiting for plane for returning. A Google engineer from Dublin, asked my feedback. I said how i felt, where i troubled. At the end he said the process will not proceed, the feedbacks were matching with mine from the interviewers, but also added %90 of workers at Google are the ones who failed at their first on site interview :). Also added, not all people were able to come and interview with Google.

So, overall, it was a good experience for me.

English Garden

--

--