Mastering The System Design Interview: Advanced Topics
Published 12/2024
MP4 | Video: h264, 1920x1080 | Audio: AAC, 44.1 KHz
Language: English | Size: 5.26 GB | Duration: 22h 30m
Master modern Android app architecture, privacy and security in mobile system design interviews at FAANG companies
What you'll learn
Solve advanced mobile system design problems
Have a toolbox of advanced clarifying questions to ask during the interview
Be able to discuss a wide variety of privacy and security-related topics including cryptography, authentication & authorization, local & network data protection
Design apps with modern Android app architecture in mind
Decide between different architectural styles, patterns and modularization strategies
Requirements
Some prior experience in mobile app development (preferably Android) is expected.
Not strictly required, taking the foundational course "Mastering the Android System Design Interview" is a plus
Description
Take your mobile system design interview skills to the next level with this advanced course, building on the foundations laid in "Mastering the Android System Design Interview". If you've already mastered the basics, this course is your gateway to make you stand out in challenging and advanced system design topics - privacy, security, and modern Android app architecture - to ace your interviews at FAANG companies like Google, Apple, and beyond.Led by Stefan, a seasoned Tech Lead from a Google Developer Agency, this course is built with over a decade of hands-on experience designing and developing Android, iOS, and multiplatform apps. Having successfully navigated system design interviews himself, Stefan understands the challenges and will share his expertise, practical tips, and interview-tested strategies to set you apart.Mobile system design interviews are notoriously tough, with privacy and security being some of the least understood yet often critical areas. Additionally, modern Android app architecture requires a deep understanding of patterns, different architectural styles, and best practices to build scalable, maintainable apps. This course is specifically designed to address these gaps, giving you a competitive edge in your interviews. Despite the course being especially targeted at Android, many concepts are also applicable to iOS.Over 20 hours of on-demand video content will cover what you need to know for your mobile system design interview:Clean Code Principles: Apply DRY and SOLID principles to create codebases that are maintainable and easy to scale.Architecture Patterns: Master MVC, MVP, and MVVM, and learn how to choose the best approach for your app's complexity and development team.Clean vs. Layered Architecture: Learn how Clean Architecture focuses on the independence of business logic from frameworks, while Layered Architecture emphasizes logical separation into data, domain, and UI layers.Android Architecture Components: Streamline your system design with ViewModel, LiveData, Flow, Room, DataStore, WorkManager, and other essential libraries.Seamless Navigation: Simplify complex app flows using the Android navigation component.Dependency Injection (DI): Leverage frameworks like Dagger, Hilt, Kodein, or Koin to make your code cleaner, more modular, and easier to test.Mastering Modularization: Break down complex codebases into feature-based and/or layer-based modules for better scalability based on the principles of component cohesion and component coupling.Android Privacy Fundamentals: Explore essential topics like permissions, location handling, data, transparency & control, app hibernation, and the Privacy Sandbox.Cryptography: Understand symmetric cryptography, asymmetric cryptography, and hashing. Learn when to use each technique effectively.Local Data Protection: Learn how to safeguard sensitive data stored on devices using encryption and secure storage solutions.Network Data Protection: Explore strategies for securing data in transit, including SSL/TLS, certificate pinning, certificate transparency, and Android's network security configuration.Authentication & Authorization: Implement secure user authentication based on standards like OAuth 2.0 and OpenID Connect, and session management.Practical tips & tricks: Get additional tips & tricks, and a toolbox of clarifying questions to ask to tackle system design questions related to app architecture, privacy, and security.Hands-On Learning: Practice solving architectural, and privacy & security challenges through 2 extensive mock interviews from requirements definition to high-level and detailed designs.
Overview
Section 1: Introduction
Lecture 1 Introduction
Lecture 2 Course Overview: Modern Android App Architecture
Lecture 3 Course Overview: Privacy & Security
Lecture 4 Download your slides
Lecture 5 Course demo code on github
Section 2: Clean Code: System Design Principles
Lecture 6 Clean Code
Lecture 7 Clean Code: Overview
Lecture 8 Clean Code: Goals
Lecture 9 KISS
Lecture 10 YAGNI
Lecture 11 DRY
Lecture 12 SOLID
Lecture 13 SOLID: Single Responsibility Principle
Lecture 14 SOLID: Open/Closed Principle
Lecture 15 SOLID: Liskov Substitution Principle
Lecture 16 SOLID: Interface Segregation Principle
Lecture 17 SOLID: Dependency Inversion Principle
Lecture 18 Clean Code: Demo Code
Lecture 19 DRY: Demo
Lecture 20 Single Responsibility Principle: Demo
Lecture 21 Open/Closed Principle: Demo
Lecture 22 Liskov Substitution Principle: Demo
Lecture 23 Interface Segregation Principle: Demo
Lecture 24 Dependency Inversion Principle: Demo
Section 3: Architectural Patterns
Lecture 25 Architectural Patterns
Lecture 26 Architectural Patterns: Overview
Lecture 27 MVC: Model-View-Controller
Lecture 28 MVC: Demo Code
Lecture 29 MVC: Demo
Lecture 30 MVP: Model-View-Presenter
Lecture 31 MVP: Demo Code
Lecture 32 MVP: Demo
Lecture 33 MVVM: Model-View-ViewModel
Lecture 34 MVVM: Demo Code
Lecture 35 MVVM: Demo
Lecture 36 Comparison: MVC vs. MVP vs. MVVP
Section 4: Clean Architecture
Lecture 37 Clean Architecture
Lecture 38 Clean Architecture: Overview
Lecture 39 Clean Architecture: Goals
Lecture 40 Clean Architecture: Strategies
Lecture 41 Clean Architecture: Components
Lecture 42 Clean Architecture: Demo Code
Lecture 43 Clean Architecture: Demo
Section 5: Layered Architecture
Lecture 44 Layered Architecture
Lecture 45 Layered Architecture: Overview
Lecture 46 Architectural Principles & Best Practices
Lecture 47 Recommended App Architecture
Lecture 48 Unidirectional Data Flow
Lecture 49 Layered Architecture: UI Layer
Lecture 50 UI State Production Pipeline
Lecture 51 Exposing UI State
Lecture 52 Consuming UI State
Lecture 53 Layered Architecture: Data Layer
Lecture 54 Repositories: Advanced Topics
Lecture 55 Build Offline First
Lecture 56 Layered Architecture: Domain Layer
Lecture 57 Layered Architecture vs. Clean Architecture
Lecture 58 Layered Architecture: Demo Code
Lecture 59 Demo: Intro
Lecture 60 Demo: Layered Architecture Outline
Lecture 61 Demo: Layered Architecture Structure
Lecture 62 Demo: UI & Domain Layer
Lecture 63 Demo: Data Layer
Lecture 64 Demo: Sum Up
Section 6: Android Architecture Components
Lecture 65 Android Architecture Components
Lecture 66 Android Architecture Components: Overview
Lecture 67 View Binding
Lecture 68 Data Binding
Lecture 69 Data Binding: Advanced Topics
Lecture 70 Lifecycle-Aware Components: Lifecycle API
Lecture 71 Lifecycle API: Demo Code
Lecture 72 Demo: Lifecycle API
Lecture 73 UI Layer Libraries: ViewModel
Lecture 74 ViewModel: SavedStateHandle
Lecture 75 Saving UI State
Lecture 76 ViewModel: Best Practices
Lecture 77 Demo: ViewModel
Lecture 78 UI Layer Libraries: LiveData
Lecture 79 LiveData vs. Kotlin Flows
Lecture 80 UI Layer Libraries: Coroutines
Lecture 81 Demo: Coroutines
Lecture 82 Data Layer Libraries: SharedPreferences & Jetpack DataStore
Lecture 83 Data Layer Libraries: Room
Lecture 84 Data Layer Libraries: WorkManager
Lecture 85 WorkManager: Advanced Topics
Lecture 86 Demo: WorkManager
Lecture 87 Multi-Layer Libraries: Paging Library
Lecture 88 Paging Library: Demo Code
Lecture 89 Demo: Paging Library
Section 7: App Navigation
Lecture 90 App Navigation
Lecture 91 App Navigation: Overview
Lecture 92 Principles of Navigation
Lecture 93 Navigation Component
Lecture 94 Navigation Controller
Lecture 95 Destination Types
Lecture 96 Back Stack
Lecture 97 Navigation Graph: Overview
Lecture 98 Navigation Graph: Nested Graphs
Lecture 99 Navigation Graph: Deep Links
Lecture 100 Navigation Graph: Type-Safe Navigation
Lecture 101 Navigation Component: Integrations
Lecture 102 Navigation: Demo Code
Lecture 103 Demo: Navigation Component
Section 8: Dependency Injection
Lecture 104 Dependency Injection
Lecture 105 Dependency Injection: Overview
Lecture 106 Dependency Injection: Intro
Lecture 107 Service Locator
Lecture 108 Comparison of Frameworks
Lecture 109 Comparison of Frameworks: Dagger
Lecture 110 Comparison of Frameworks: Hilt
Lecture 111 Comparison of Frameworks: Koin
Lecture 112 Comparison of Frameworks: Kodein
Lecture 113 Comparison of Frameworks: Sum Up
Lecture 114 Dependency Injection: Demo Code
Lecture 115 Demo: Hilt & Kodein
Section 9: Modularization
Lecture 116 Modularization
Lecture 117 Modularization: Overview
Lecture 118 Principles of Component Cohesion
Lecture 119 Principles of Component Coupling
Lecture 120 Multimodule Projects
Lecture 121 Types of Modules
Lecture 122 Modularization Strategies
Lecture 123 Architecture by Layer: Demo Code
Lecture 124 Modularization Demo: App Module
Lecture 125 Demo: Architecture by Layer
Lecture 126 Architecture by Feature: Demo Code
Lecture 127 Demo: Architecture by Feature
Section 10: Mid Course Wrap Up
Lecture 128 Recap & Outlook
Lecture 129 Privacy & Security: Overview
Section 11: Permissions
Lecture 130 Permissions
Lecture 131 Permissions: Overview
Lecture 132 Permissions Intro
Lecture 133 Workflow
Lecture 134 Demo: Permissions
Lecture 135 Special Permissions
Lecture 136 Permissions Best Practices
Lecture 137 Request Minimization
Lecture 138 Demo: Request Minimization
Lecture 139 Prominent Disclosure & Consent
Section 12: Location
Lecture 140 Location
Lecture 141 Location: Overview
Lecture 142 Location Intro
Lecture 143 Background Location
Lecture 144 Location Permission Best Practices
Lecture 145 Location Usage Minimization
Lecture 146 Demo: Location
Section 13: Data Privacy
Lecture 147 Data
Lecture 148 Data: Overview
Lecture 149 Package Visibility
Lecture 150 Package Visibility Use Cases
Lecture 151 Scoped Storage
Lecture 152 Unique Identifiers
Lecture 153 Unique Identifiers Use Cases
Section 14: Transparency & Control
Lecture 154 Transparency & Control
Lecture 155 Transparency & Control: Overview
Lecture 156 Data Access Auditing
Lecture 157 Demo: Data Access Auditing
Lecture 158 Data Safety
Lecture 159 Demo: Data Safety
Lecture 160 Privacy UI Elements
Lecture 161 Demo: Privacy UI Elements
Section 15: App Hibernation
Lecture 162 App Hibernation
Section 16: Privacy Sandbox
Lecture 163 Privacy Sandbox
Lecture 164 Privacy Sandbox: Overview
Lecture 165 SDK Runtime
Lecture 166 Privacy-Preserving APIs
Section 17: Android Security Concepts
Lecture 167 Android Security Concepts
Lecture 168 Android Security Concepts: Overview
Lecture 169 Android Security Intro
Lecture 170 Kernel Security: Linux Kernel
Lecture 171 Kernel Security: App Sandbox
Lecture 172 Kernel Security: SELinux
Lecture 173 Kernel Security: Verified Boot
Lecture 174 Kernel Security: Rooting
Lecture 175 Kernel Security: User Security
Lecture 176 Kernel Security: Additional Concepts
Lecture 177 App Security: Permissions
Lecture 178 App Security: IPC
Lecture 179 App Security: Signing
Lecture 180 App Security: Additional Concepts
Section 18: Secure Storage
Lecture 181 Secure Storage
Lecture 182 Secure Storage: Overview
Lecture 183 Trusty TEE
Lecture 184 Secure Element
Lecture 185 KeyStore
Lecture 186 Secure Storage: Authentication
Lecture 187 Secure Storage Applications
Section 19: Symmetric Cryptography
Lecture 188 Symmetric Cryptography
Lecture 189 Symmetric Cryptography: Overview
Lecture 190 Cryptography: Intro
Lecture 191 Symmetric Cryptography
Lecture 192 Modes of Operation
Lecture 193 Modes of Operation: ECB
Lecture 194 Modes of Operation: CBC
Lecture 195 Modes of Operation: CFB
Lecture 196 Modes of Operation: OFB
Lecture 197 Modes of Operation: CTR
Lecture 198 Data Encryption Standard (DES)
Lecture 199 Data Encryption Standard: Walkthrough
Lecture 200 Demo: Data Encryption Standard
Lecture 201 Cracking Data Encryption Standard
Lecture 202 Triple DES (3DES)
Lecture 203 Demo: Triple DES
Lecture 204 Advanced Encryption Standard (AES)
Lecture 205 AES: Walkthrough
Lecture 206 Demo: Advanced Encryption Standard
Lecture 207 Cracking Advanced Encryption Standard
Section 20: Asymmetric Cryptography
Lecture 208 Asymmetric Cryptography
Lecture 209 Asymmetric Cryptography: Overview
Lecture 210 Asymmetric Cryptography Intro
Lecture 211 Diffie-Hellman Key Exchange
Lecture 212 Example: Diffie-Hellman Key Exchange
Lecture 213 Demo: Diffie-Hellman Key Exchange
Lecture 214 Cracking Diffie-Hellman Key Exchange
Lecture 215 RSA
Lecture 216 Example: RSA
Lecture 217 Demo: RSA
Lecture 218 Cracking RSA
Lecture 219 Elliptic Curve Cryptography
Lecture 220 Elliptic Curve Cryptography: Diffie-Hellman Algorithm
Lecture 221 Elliptic Curve Cryptography: Digital Signature Algorithm
Lecture 222 Demo: Elliptic Curve Cryptography
Lecture 223 ECC vs. RSA
Lecture 224 Cracking Elliptic Curve Cryptography
Lecture 225 Android KeyStore System
Lecture 226 Demo: Android KeyStore System
Section 21: Hashing
Lecture 227 Hashing
Lecture 228 Hashing: Overview
Lecture 229 Hashing: Intro
Lecture 230 MD5
Lecture 231 SHA-1
Lecture 232 SHA-1 vs. SHA-2 vs. SHA-3
Lecture 233 SHA-2 Adoptions
Lecture 234 SHA-3
Lecture 235 Demo: Hashing
Lecture 236 HMAC
Lecture 237 Demo: HMAC
Section 22: Local Data Protection
Lecture 238 Local Data Protection
Lecture 239 Local Data Protection: Overview
Lecture 240 Storage Types: File System Storage
Lecture 241 Media Permissions: Android 13 & 14
Lecture 242 Demo: Media Permissions
Lecture 243 Storage Types: SharedPreferences & DataStore
Lecture 244 Storage Types: SQL & NoSQL Databases
Lecture 245 Jetpack Security: Intro
Lecture 246 Jetpack Security: MasterKey
Lecture 247 Modes of Operation: Galois Counter Mode
Lecture 248 Demo: MasterKey
Lecture 249 Jetpack Security: EncryptedFile
Lecture 250 Demo: EncryptedFile
Lecture 251 Jetpack Security: EncryptedSharedPreferences
Lecture 252 AES256-SIV-CMAC
Lecture 253 Demo: EncryptedSharedPreferences
Lecture 254 Securing DataStore
Lecture 255 SQL Databases: Passcode-based Encryption
Lecture 256 NoSQL Databases: Security Considerations
Section 23: Network Data Protection
Lecture 257 Network Data Protection
Lecture 258 Network Data Protection: Overview
Lecture 259 Public Key Infrastructure
Lecture 260 Transport Layer Security (TLS)
Lecture 261 Certificate Pinning
Lecture 262 Certificate Transparency
Lecture 263 Demo: Certificate Transparency
Lecture 264 Certificate Revocation
Lecture 265 Network Security Config
Lecture 266 Demo: Network Security Config
Section 24: Authentication & Authorization
Lecture 267 Authentication & Authorization
Lecture 268 Authentication & Authorization: Overview
Lecture 269 Authentication vs. Authorization
Lecture 270 Biometric Authentication
Lecture 271 Demo: Biometric Authentication
Lecture 272 User Authentication: Authentication Methods
Lecture 273 Credential Manager
Lecture 274 WebAuthn
Lecture 275 Demo: Credential Manager
Lecture 276 OAuth 2.0
Lecture 277 OAuth 2.0: Google OAuth 2.0 for Mobile
Lecture 278 Demo: OAuth 2.0
Lecture 279 Refresh Token
Lecture 280 OpenID Connect
Lecture 281 JSON Web Token (JWT)
Lecture 282 ID Token
Lecture 283 OpenID Connect: Google Identity Services
Lecture 284 Single Sign-on (SSO)
Lecture 285 APIs: Basic Authentication
Lecture 286 APIs: API Keys
Lecture 287 APIs: OAuth 2.0
Lecture 288 APIs: JWT
Section 25: Interview Strategies
Lecture 289 Interview Strategies: Intro
Lecture 290 Interview Process & Timing
Lecture 291 Getting to Know, Question & Define Task
Lecture 292 Ask Clarifying Questions: Context
Lecture 293 Ask Clarifying Questions: Architectural Patterns
Lecture 294 Ask Clarifying Questions: Clean Architecture
Lecture 295 Ask Clarifying Questions: Layered Architecture
Lecture 296 Ask Clarifying Questions: Android Architecture Components
Lecture 297 Ask Clarifying Questions: Navigation
Lecture 298 Ask Clarifying Questions: Modularization
Lecture 299 Ask Clarifying Questions: Permissions
Lecture 300 Ask Clarifying Questions: Location
Lecture 301 Ask Clarifying Questions: Data
Lecture 302 Ask Clarifying Questions: Transparency & Control
Lecture 303 Ask Clarifying Questions: Privacy - Additional Topics
Lecture 304 Ask Clarifying Questions: Android Security Concepts
Lecture 305 Ask Clarifying Questions: Secure Storage
Lecture 306 Ask Clarifying Questions: Cryptography
Lecture 307 Ask Clarifying Questions: Local Data Protection
Lecture 308 Ask Clarifying Questions: Network Data Protection
Lecture 309 Ask Clarifying Questions: Authentication & Authorization
Section 26: Mock Interviews
Lecture 310 Mock Interviews: Intro
Lecture 311 Social Media App: Q&A
Lecture 312 Social Media App: Requirements
Lecture 313 Social Media App: Try it Yourself
Lecture 314 Social Media App: High Level Design
Lecture 315 Social Media App: News Feed Module
Lecture 316 Social Media App: Android Architecture Components
Lecture 317 Social Media App: Recap
Lecture 318 Banking App: Q&A
Lecture 319 Banking App: Requirements
Lecture 320 Banking App: Try it Yourself
Lecture 321 Banking App: High Level Design
Lecture 322 Banking App: Network Data Protection
Lecture 323 Banking App: Authentication & Authorization
Lecture 324 Banking App: Recap
Section 27: Google I/O 2023: Additions
Lecture 325 Google I/O 2023: Privacy & Security Updates
Section 28: Google I/O 2024 Additions
Lecture 326 Google I/O 2024
Lecture 327 Google I/O 2024 Additions: Overview
Lecture 328 Google I/O 2024: Privacy Sandbox
Lecture 329 Checks
Lecture 330 What's new in Android Security?
Lecture 331 What's new in Credential Manager?
Section 29: Recap
Lecture 332 Course Recap
Android or iOS app developers preparing for interviews at top tech companies,Developers that want to learn about mobile privacy and security concepts, and modern Android app architecture
AusFile
RapidGator
TurboBit