I am interviewing for the Systems SRE role with Google (Alphabet) in about 2 days. The SRE team at Google is something that I have looked up to ever since I read the first SRE book. I have tried interviewing for the role twice previously and I wasn’t able to go past the phone screen both the times. Hoping that the third time will be the charm!
Google pioneered the concept of Site Reliability Engineering, which is an amalgamation of systems engineering, coding and scripting, and networking functions. Google has two kinds of SREs - systems SREs, who have more expertise in the Unix/Linux systems and troubleshooting domain and software SREs who have more expertise with coding. The interviews for this role are also unique.
My recruiter felt that I would be a better fit for the Systems SRE role and I also had an opportunity to talk to a member of the SRE team prior to my phone screen. Google calls this the “champion call” and it was really useful. The person I spoke to was able to explain to me what interviewers look for in the responses a candidate gives and also discussed his journey with the SRE team. Python is my choice of the coding/scripting language and I will be using it for all the coding interviews.
The interviews consist of a phone screen which would involve a practical coding problem and some Linux trivia. Upon clearing this round, a candidate would advance to the onsite interview which would have a couple of rounds involving coding, Linux internals, Networking, Non-abstract Large Scale Systems Design (NALSD - this round is unique to Google), and a behavioral round. Once a candiate clears the onsite interview, they would progress to multiple interviews with prospective teams to help the candidate decide which team they would best fit.
I am hoping to document my journey properly this time and what better way to do it than my own blog! I cannot disclose any of the questions that will be asked, but I would like to share my experience.
This is what I am preparing for my first round of the Google Systems SRE interview:
- Brushing up on Python’s memory management, particular emphasis on Garbage Collection and support for multithreading.
- Python’s data structures - the inbuilt Lists, Dictionary, Tuple and Set and the deque, bisect, defaultdict, Counter, OrderedDict, heapq datastructures.
- File operations using Python
- Linux system internals - basic system calls, port numbers etc.
- Linux boot process.
- Linux process management - what happens when you type a command?
- What happens when you enter a website on your browser and press enter? - The entire sequence of steps.