## 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