## Data Structures and Algorithms
1. Core Concepts
- Time and Space Complexity (Big O Notation)
- Recursion and Iteration
2. Data Structures
- Arrays (Dynamic Arrays/Vectors)
- Strings
- Linked Lists (Single Linked List, Doubly Linked List, Circular Linked List)
- Hash Tables/Maps (Dictionaries)
- Stacks and Queues
- Trees (Binary Trees, Binary Search Trees, AVL Trees, Red-Black Trees, Tries)
- Graphs (Directed, Undirected, Weighted, Unweighted, Adjacency List, Adjacency Matrix)
- Heaps (Min-Heap, Max-Heap, Priority Queue)
3. Algorithms
- **Sorting Algorithms** (Bubble Sort, Selection Sort, Insertion Sort, Merge Sort, Quick Sort, Heap Sort, Radix Sort, Counting Sort)
- **Searching Algorithms** (Linear Search, Binary Search, Depth-First Search, Breadth-First Search)
- **Graph Algorithms** (Dijkstra's Algorithm, A* Search, Bellman-Ford Algorithm, Floyd-Warshall Algorithm, Kruskal's Algorithm, Prim's Algorithm, Topological Sort, BFS, DFS)
- **Dynamic Programming** Memoization, Tabulation (common patterns: Knapsack Problem, Longest Common Subsequence, Coin Change Problem, unique paths)
- **Greedy Algorithms** (Activity Selection Problem, Huffman Coding, Dijkstra's Algorithm, Coin Change Problem)
- **Backtracking** (N-Queens Problem, Sudoku Solver, Subset Sum Problem, Permutations and Combinations)
- **Divide and Conquer** (Merge Sort, Quick Sort, Binary Search, Closest Pair of Points)
- **Bit Manipulation** (Basic Operations, Common Tricks, Applications, useful for optimizing certain problems)
- **Two Pointers, Sliding Window, Fast and Slow Pointers**
## System Design
#### System Design for Backend Engineers
- **Core Concepts**
- Scalability (Vertical vs. Horizontal)
- Reliability, Availability, Fault Tolerance
- Consistency (CAP Theorem, ACID vs. BASE)
- Latency, Throughput, Bandwidth
- Load Balancing (DNS, L4, L7)
- Caching (Client-side, Server-side, CDN, Distributed Caching like Redis/Memcached)
- Database Design (SQL vs. NoSQL, Sharding, Replication, Indexing)
- Message Queues (Kafka, RabbitMQ, SQS)
- Microservices vs. Monoliths
- APIs (REST, GraphQL, gRPC)
- Security (Authentication, Authorization, HTTPS)
- Monitoring and Logging
- **Common Design Problems:**
- Design a URL Shortener
- Design a Chat System (WhatsApp/Slack)
- Design a News Feed (Facebook/Twitter)
- Design a Ride-Sharing Service (Uber/Lyft)
- Design an E-commerce Platform
- Design a Distributed Key-Value Store
- Design a Rate Limiter
- Design a Notification System
#### System Design for Frontend Engineers
- **Core Concepts:**
- Browser Rendering Process
- Performance Optimization (Lazy Loading, Code Splitting, Image Optimization, Critical CSS)
- State Management (Redux, Zustand, Context API)
- Component Design and Reusability
- API Integration (REST, GraphQL)
- Security (XSS, CSRF, CORS)
- Accessibility (ARIA, Semantic HTML)
- Build Tools (Webpack, Vite, Rollup)
- Testing Strategies (Unit, Integration, E2E)
- Progressive Web Apps (PWAs)
- Server-Side Rendering (SSR) vs. Client-Side Rendering (CSR) vs. Static Site Generation (SSG)
- WebSockets for real-time communication
- **Common Design Problems:**
- Design a Component Library
- Design a Real-time Dashboard
- Design an Infinite Scroll List
- Design a Rich Text Editor
- Design a Drag-and-Drop Interface
- Design a Single-Page Application (SPA) architecture
- Design a scalable data visualization component
#### System Design for DevOps Engineers
- **Core Concepts:**
- **Infrastructure as Code (IaC):** Terraform, CloudFormation, Ansible
- **CI/CD Pipelines:** Jenkins, GitLab CI, GitHub Actions, CircleCI
- **Containerization:** Docker, Kubernetes (Orchestration, Pods, Deployments, Services, Ingress)
- **Cloud Platforms:** AWS, Azure, GCP (Compute, Storage, Networking, Databases, Serverless)
- **Monitoring & Alerting:** Prometheus, Grafana, ELK Stack, Datadog
- **Logging:** Centralized logging (Splunk, ELK)
- **Networking:** VPC, Subnets, Load Balancers, DNS, Firewalls
- **Security:** IAM, Secrets Management (Vault), Network Security Groups
- **Scripting:** Bash, Python, Go
- **Configuration Management:** Ansible, Chef, Puppet
- **Disaster Recovery & Backup Strategies**
- **Site Reliability Engineering (SRE) Principles:** SLOs, SLIs, Error Budgets
- **Common Design Problems:**
- Design a CI/CD pipeline for a microservices application
- Design a highly available and scalable Kubernetes cluster
- Design a multi-region disaster recovery strategy
- Design a centralized logging and monitoring solution
- Automate infrastructure provisioning for a new service
- Design a secure secrets management system
#### Staff Engineer / Principal Engineer Roles
These roles focus less on individual coding problems and more on technical leadership, architecture, and impact.
- **Technical Leadership & Mentorship:**
- Guiding junior engineers, code reviews, setting technical standards.
- Driving technical initiatives and projects.
- **Architecture & Strategy:**
- Defining long-term technical vision and roadmap.
- Evaluating new technologies, making build vs. buy decisions.
- Designing complex, cross-team systems.
- Understanding business context and aligning technical solutions.
- **Cross-Functional Collaboration:**
- Working with product, design, and other engineering teams.
- Communicating complex technical concepts to non-technical stakeholders.
- **Problem Solving & Debugging:**
- Tackling ambiguous, high-impact technical challenges.
- Deep understanding of system internals and performance bottlenecks.
- **Influence & Impact:**
- Driving change and adoption of best practices across the organization.
- Measuring and demonstrating impact of technical work.
- **Interview Focus:** Behavioral questions, architectural discussions, incident response scenarios, technical deep dives into past projects, how you've influenced teams, resolved conflicts, or led major initiatives.
#### Engineering Manager (EM) / Engineering Leader Roles
These roles shift focus from individual contribution to people management, strategy, and execution.
- **People Management:**
- Hiring, onboarding, performance reviews, career development, coaching, mentoring.
- Conflict resolution, team building, fostering a positive culture.
- **Project & Program Management:**
- Planning, execution, and delivery of projects.
- Resource allocation, risk management, stakeholder communication.
- Agile methodologies (Scrum, Kanban).
- **Strategy & Vision:**
- Defining team goals, aligning with organizational objectives.
- Contributing to product strategy and technical roadmap.
- Budgeting and resource planning.
- **Communication & Collaboration:**
- Effective communication with direct reports, peers, leadership, and cross-functional teams.
- Representing the team's interests.
- **Technical Acumen (Contextual):**
- Understanding technical challenges, making informed decisions, providing guidance without micromanaging.
- Ability to jump into technical discussions and understand trade-offs.
- **Interview Focus:** Behavioral questions about leadership style, managing difficult situations, building high-performing teams, strategic thinking, handling failures, fostering innovation, and how you've grown engineers.
---
**General Tips for All Roles:**
- **Practice Coding:** Use platforms like LeetCode, HackerRank, AlgoExpert.
- **Practice System Design:** Read books (e.g., "Designing Data-Intensive Applications," "System Design Interview"), watch videos, and practice whiteboarding.
- **Behavioral Questions:** Prepare stories using the STAR method (Situation, Task, Action, Result) for common questions about teamwork, challenges, failures, successes, and leadership.
- **Understand the Company:** Research the company's products, technologies, and culture.
- **Ask Questions:** Always prepare thoughtful questions to ask your interviewers.
- **Mock Interviews:** Practice with peers or mentors.
- **Portfolio/Projects:** Have a strong portfolio of projects (GitHub, personal website) to showcase your skills, especially for frontend and backend roles.
---
# Behavioral Questions
- [[Tell me about a time you disagreed with someone]]
# System Design
# Algorithms
- [[Algorithms MOC]]
---
tags: #interview