# Site Reliability Engineer (SRE) Interview Preparation Guide This repository is an attempt to consolidate useful resources for Site Reliability Engineer (SRE) interview preparation. ## Basics * [What happens when you type google.com into your browser's address box and press enter?](https://github.com/alex/what-happens-when) * [What happens when you type in ‘www.cnn.com’ in your browser?](https://syedali.net/2013/08/18/what-happens-when-you-type-in-www-cnn-com-in-your-browser) ## Linux ### Boot Process * [An introduction to the Linux boot and startup processes](https://opensource.com/article/17/2/linux-boot-and-startup) * [What happens when we turn on computer?](https://www.cdn.geeksforgeeks.org/what-happens-when-we-turn-on-computer) * [What happens when we turn on computer?](https://leetcode.com/discuss/interview-question/125107/What-happens-when-we-turn-on-computer) ### Filesystem * [Understanding Inodes](https://syedali.net/2015/02/08/understanding-inodes) * [Understand UNIX / Linux Inodes Basics with Examples](https://www.thegeekstuff.com/2012/01/linux-inodes) * [Understanding proc filesystem](https://syedali.net/2013/08/20/understanding-proc-filesystem) * [Common Mount Options](https://syedali.net/2015/01/06/common-mount-options) * [Understanding Linux filesystems: ext4 and beyond](https://opensource.com/article/18/4/ext4-filesystem) ### Kernel * [Explain the basics of Linux kernel](http://learnlinuxconcepts.blogspot.com/2014/03/explain-basics-of-linux-kernel.html) * [Kernel Space and User Space](http://learnlinuxconcepts.blogspot.com/2014/02/kernel-space-and-user-space.html) * [Linux Kernel Process Management](http://learnlinuxconcepts.blogspot.com/2014/03/process-management.html) * [Linux Addressing](http://learnlinuxconcepts.blogspot.com/2014/02/linux-addressing.html) * [Linux Kernel Memory Management](http://learnlinuxconcepts.blogspot.com/2014/02/linux-memory-management.html) * [STACK AND HEAP](http://learnlinuxconcepts.blogspot.com/2014/02/stack-and-heap.html) * [Paging and Segmentation](http://learnlinuxconcepts.blogspot.com/2014/02/paging-and-segmentation.html) * [Linux Kernel System Calls](http://learnlinuxconcepts.blogspot.com/2014/02/system-calls.html) * [The Virtual Filesystem](http://learnlinuxconcepts.blogspot.com/2014/10/the-virtual-filesystem.html) * [Concurrency and Race Conditions](http://learnlinuxconcepts.blogspot.com/2014/07/concurrency-and-race-conditions.html) * [Memory Leak](https://stackoverflow.com/questions/312069/the-best-memory-leak-definition) * [What is a kernel Panic?](http://learnlinuxconcepts.blogspot.com/2014/07/what-is-kernel-panic.html) ### Troubleshooting * [Linux troubleshooting tools](https://syedali.net/2013/08/20/linux-troubleshooting-tools) * [Linux Performance Analysis in 60,000 Milliseconds](https://medium.com/netflix-techblog/linux-performance-analysis-in-60-000-milliseconds-accc10403c55) ## Networking * [Network protocols for anyone who knows a programming language](https://www.destroyallsoftware.com/compendium/network-protocols?share_key=97d3ba4c24d21147) * [Introduction to Linux interfaces for virtual networking](https://developers.redhat.com/blog/2018/10/22/introduction-to-linux-interfaces-for-virtual-networking) * [Multi-tier load-balancing with Linux](https://vincent.bernat.ch/en/blog/2018-multi-tier-loadbalancer) * [Introduction to modern network load balancing and proxying](https://blog.envoyproxy.io/introduction-to-modern-network-load-balancing-and-proxying-a57f6ff80236) * [Load Balancing Algorithms](https://syedali.net/2013/08/22/load-balancing-algorithms) ## Containers * [Introduction to Docker and Containers](http://container.training/intro-selfpaced.yml.html) * [Deploying and Scaling Microservices with Docker and Kubernetes](http://container.training/kube-selfpaced.yml.html) * [Containers Patterns](https://l0rd.github.io/containerspatterns) * [Kubernetes Production Patterns](https://github.com/gravitational/workshop/blob/master/k8sprod.md) * [Docker Container Anti Patterns](http://blog.arungupta.me/docker-container-anti-patterns) ## Infrastructure as code / Configuration management * [Terraform](https://learn.hashicorp.com/terraform) * [Ansible](https://github.com/leucos/ansible-tuto) ## CI/CD * [Pattern and anti-pattern CI/CD](https://www.gronau-it-cloud-computing.de/pattern-and-anti-pattern-cicd) ## Programming ### Go (Golang) * [A tour of Go](https://tour.golang.org) * [Go by Example](https://gobyexample.com) * [Getting up and running with Go](http://www.golangprograms.com) * [Effective Go](https://golang.org/doc/effective_go.html) * [Go Design Patterns](https://github.com/tmrts/go-patterns) * [Go Memory Management](https://povilasv.me/go-memory-management) ### Big O Notation, Algorithms and Data Structures * [AlgoExperts](https://www.algoexpert.io) * [Hacking a Google Interview – Handout 1](http://courses.csail.mit.edu/iap/interview/Hacking_a_Google_Interview_Handout_1.pdf) * [Hacking a Google Interview – Handout 2](http://courses.csail.mit.edu/iap/interview/Hacking_a_Google_Interview_Handout_2.pdf) * [Hacking a Google Interview – Handout 3](http://courses.csail.mit.edu/iap/interview/Hacking_a_Google_Interview_Handout_3.pdf) ## System design * The most useful course: [Grokking the System Design Interview](https://www.educative.io/collection/5668639101419520/5649050225344512) * [The System Design Primer](https://github.com/donnemartin/system-design-primer) * [Crack the System Design Interview](https://www.puncsky.com/blog/2016/02/14/crack-the-system-design-interview) * [System design interview for IT companies](https://github.com/checkcheckzz/system-design-interview) * [Web Architecture 101](https://engineering.videoblocks.com/web-architecture-101-a3224e126947) * [What's in a Production Web Application?](https://stephenmann.io/post/whats-in-a-production-web-application) ## Monitoring * [SLOs & You: A Guide To Service Level Objectives](https://www.circonus.com/2018/07/a-guide-to-service-level-objectives) ## Interview ### SRE interview process * [How to hire talent](https://syedali.net/2014/04/01/how-to-hire-talent) ### Interview Questions * [A collection of questions to practice with for SRE interviews](https://github.com/michael-kehoe/sre-interview) * [SRE Interview Questions](https://syedali.net/engineer-interview-questions) * [Sysadmin Test Questions](https://github.com/trimstray/test-your-sysadmin-skills) ### Blogposts * [SRE Interviews in Silicon Valley](http://blog.marc-seeger.de/2015/05/01/sre-interviews-in-silicon-valley) * [Preparing the SRE interview](https://blog.balthazar-rouberol.com/preparing-the-sre-interview) ## Books ### SRE books * [Site Reliability Engineering](https://landing.google.com/sre/sre-book/toc/index.html) * [The Site Reliability Workbook](https://landing.google.com/sre/workbook/toc/) * [Seeking SRE](https://books.google.ru/books?id=tmhqDwAAQBAJ) ### Linux * [Linux Kernel Development (3rd Edition)](https://www.amazon.com/Linux-Kernel-Development-Robert-Love/dp/0672329468) * [UNIX and Linux System Administration Handbook (5th Edition)](https://www.amazon.com/UNIX-Linux-System-Administration-Handbook/dp/0134277554) * [Linux Pocket Guide, 3rd Edition](http://shop.oreilly.com/product/0636920040927.do) ### Networking * [TCP/IP Illustrated, Volume 1](https://www.amazon.com/TCP-Illustrated-Protocols-Addison-Wesley-Professional/dp/0321336313) ## Courses * [Site Reliability Engineering: Measuring and Managing Reliability](https://www.coursera.org/learn/site-reliability-engineering-slos)