Last updated on Jun 02, 2022
In this post, I will share a comprehensive list of the learning sources that you might need to study before your interview. The actual interview questions that I was asked will be shared in the next post.
The learning resources that you will see in this post are the resources I have been learning for years. You might not find any other detailed list dedicated to machine learning infrastructure interviews like this anywhere else.
Computer science fundamentals
- Computer Science questions (opens in a new tab)
- The 10 Operating System Concepts Software Developers Need to Remember (opens in a new tab)
Coding test
- Introduction to algorithms (opens in a new tab)
- Cracking the Coding Interview (opens in a new tab)
- Coding platform
- Dynamic Programming tutorial on Quora (opens in a new tab)
Machine learning
- Machine Learning Roadmap (opens in a new tab)
- TensorFlow and Deep Learning fundamentals (opens in a new tab)
- Machine Learning Learning Plan (opens in a new tab)
- Machine Learning Cheatsheet (opens in a new tab)
- Machine Learning Interviews Book (opens in a new tab)
- Deep Learning Interviews book (opens in a new tab)
Cloud computing
- Cloud Foundations Learning Plan (opens in a new tab)
- AWS General Immersion Day (opens in a new tab)
- AWS CloudFormation Workshop (opens in a new tab)
- AWS CloudFormation best practices (opens in a new tab)
- One Observability Workshop (opens in a new tab)
- AWS Control Tower Workshops (opens in a new tab)
- AWS management and governance tools workshop (opens in a new tab)
Software/Cloud architecture
- The Full-stack Software Design & Architecture Map (opens in a new tab)
- Software design pattern (opens in a new tab)
- SOLID principles
- Understanding the Single Responsibility Principle (opens in a new tab)
- Single Responsibility Principle Explained Practically in C# (opens in a new tab)
- Understanding the Open Closed Principle (opens in a new tab)
- Open Closed Principle Explained Practically in C# (opens in a new tab)
- Understanding the Liskov Substitution Principle (opens in a new tab)
- Liskov Substitution Principle Explained Practically in C# (opens in a new tab)
- Interface Segregation Principle Explained Practically in C# (opens in a new tab)
- Clean Code (opens in a new tab)
- Clean Architecture (opens in a new tab)
- Microservice Architecture (opens in a new tab)
- Cloud Design Patterns (opens in a new tab)
Software testing
DevOps & MLOps
- Courses
- Tutorials
- MLOps Basics (opens in a new tab)
- Deploying Python ML Models with Flask, Docker, and Kubernetes (opens in a new tab)
- Operationalizing the Machine Learning Pipeline (opens in a new tab)
- ECS Workshop (opens in a new tab)
- EKS workshop (opens in a new tab)
- AWS CI/CD Workshop (opens in a new tab)
- CI/CD workshop for Amazon ECS (opens in a new tab)
- CI/CD with AWS Fargate (opens in a new tab)
- CI/CD for serverless applications (opens in a new tab)
- Blue/green and Canary deployment for EKS and ECS (opens in a new tab)
- Building your first DevOps Blue/Green pipeline with Amazon ECS (opens in a new tab)
- DevSecOps on AWS (opens in a new tab)
- Articles/videos
- MLOps: Continuous delivery and automation pipelines in machine learning (opens in a new tab)
- Kubernetes Concepts (opens in a new tab)
- Kubernetes Interview Questions 1 (opens in a new tab)
- Kubernetes Interview Questions 2 (opens in a new tab)
- Kubernetes Best Practices for Interview (opens in a new tab)
Distributed system design
- System Design Tutorial (opens in a new tab)
- Getting Started with System Design (opens in a new tab)
- How to Crack System Design Round in Interviews? (opens in a new tab)
- How to start with distributed systems? (opens in a new tab)
- Design Caching System (opens in a new tab)
- Design TinyURL
- Design Dropbox
- Design Netflix
- Design Uber
- Design WhatsApp
- Design social networking app
Machine learning system
- Courses/books
- Articles
- Machine Learning System Design: A framework for the interview day (opens in a new tab)
- Grow your model to serve millions of users (opens in a new tab)
- Meet Michelangelo: Uber's Machine Learning Platform (opens in a new tab)
- Three Approaches to Scaling Machine Learning with Uber Seattle Engineering (opens in a new tab)
- Evolving Michelangelo Model Representation for Flexibility at Scale (opens in a new tab)
- Serve hundreds to thousands of ML models — architectures from industry (opens in a new tab)
Distributed computing
- Collective operation (opens in a new tab)
- Technologies behind Distributed Deep Learning: AllReduce (opens in a new tab)
- Visual intuition on ring-Allreduce for distributed Deep Learning (opens in a new tab)
- Distributed Training and HPO Deep Dive (opens in a new tab)
- Horovod: Distributed Deep Learning (opens in a new tab)
Others
Below are some other useful resources that you might need.
- Awesome Software Engineering Interview Github (opens in a new tab)
- Backend development best practices (opens in a new tab)
- System design
Ending
You now have an overview picture of what you might need to study in your journey. I know that the list here is very long but don't be scared. You can start slow, crawl, walk, then run. Learn at your own speed. Good luck.