Junior Cloud Engineer Interview Preparation Guide (FAANG-Standard)
This guide is based on general FAANG interview practices and may not reflect specific company procedures.
FAANG companies typically conduct 5-7 interview rounds for Junior Cloud Engineer positions, spanning technical depth, practical problem-solving, architecture thinking, and behavioral fit. The process is designed to assess cloud platform expertise, infrastructure design thinking, hands-on technical skills, DevOps fundamentals, and cultural alignment. Expect a mix of technical screens, practical scenarios, and behavioral assessments over 4-6 weeks of preparation.
Interview Rounds
Recruiter Screening
What to Expect
Initial conversation with a recruiter to assess basic fit, motivation, and experience level. This is a softer round designed to evaluate communication skills, understanding of the role, and career trajectory. The recruiter will discuss your background, why you're interested in cloud engineering, your experience with cloud platforms, and what you're looking for in your next role. This round is largely a conversation to ensure you meet baseline qualifications for a Junior role (relevant coursework, internships, or 1-2 years of hands-on experience).
Tips & Advice
Be conversational and genuine. Research the company thoroughly and articulate specifically why you want to work there beyond generic statements. Mention any cloud certifications (AWS Solutions Architect Associate, Azure Fundamentals) or relevant projects. Show enthusiasm for learning and growth. Be honest about your current skill level - recruiters respect candidates who are realistic about their experience. Ask thoughtful questions about the role, team structure, and learning opportunities. This is your chance to make a strong first impression and understand if this opportunity aligns with your career goals.
Focus Topics
Questions for the Recruiter
Prepare 3-4 intelligent questions about the team, the role's learning opportunities, the types of projects you'd work on, and the company's cloud strategy or technology stack. Avoid questions easily answered by the company website.
Practice Interview
Study Questions
Communication and Professionalism
Practice clear, concise communication. Speak naturally without over-using jargon. Listen actively to questions before answering. Show enthusiasm without being over-the-top. Prepare to discuss challenges you've overcome and what you learned.
Practice Interview
Study Questions
Self-Introduction and Background
Craft a concise 2-3 minute introduction covering your educational background, relevant internships or work experience, primary cloud platform experience, and what excites you about cloud engineering. Include a specific project or challenge that sparked your interest in infrastructure/cloud.
Practice Interview
Study Questions
Cloud Experience and Platform Proficiency
Discuss your hands-on experience with cloud platforms (AWS, Azure, GCP). Be specific: which services have you used (EC2, S3, RDS, Lambda, etc.)? What projects have you worked on? What's your comfort level with Infrastructure as Code? Mention any cloud certifications or training.
Practice Interview
Study Questions
Motivation and Career Goals
Be prepared to articulate why you want to become a cloud engineer, why you're interested in the specific company, and where you see your career in 2-3 years. Connect your past experiences to this transition. Show understanding of what cloud engineers do in practice.
Practice Interview
Study Questions
Technical Screen 1 - Cloud Fundamentals & Core Concepts
What to Expect
Technical phone or video interview with an engineer to assess foundational cloud knowledge. This round tests your understanding of cloud deployment models, service models, core concepts across AWS/Azure/GCP, and basic networking/security principles. Expect a mix of theoretical questions (definitions, concepts) and practical scenario-based questions (e.g., 'How would you choose between a managed database and self-hosted?'). The interviewer will probe your reasoning and dive deeper into areas where you show uncertainty. This round establishes whether you have solid conceptual foundations.
Tips & Advice
Think out loud and explain your reasoning. When asked a question you're unsure about, acknowledge it honestly, then reason through what you do know. Ask clarifying questions if the scenario is ambiguous. Use the STAR method if discussing past projects. Draw diagrams or pseudo-code on the provided whiteboard/document to illustrate concepts. Focus on understanding the 'why' behind architectural decisions, not just memorizing definitions. If you don't know an answer, admit it confidently and discuss how you'd learn it. Interviewers respect honest assessment of knowledge gaps more than making things up.
Focus Topics
Cloud Deployment Models
Distinguish between Public Cloud (multi-tenant, managed by provider), Private Cloud (dedicated infrastructure), and Hybrid Cloud (combination). Understand use cases for each: public for cost efficiency and scalability, private for security/compliance, hybrid for flexibility. Know the trade-offs in security, cost, and control. Understand your organization's likely model and constraints.
Practice Interview
Study Questions
Cloud Security and IAM Basics
Understand Identity and Access Management (IAM) - controlling who can do what. Know about users, roles, and policies (least privilege principle). Understand encryption - data at rest and in transit. Know about key management. Grasp basic compliance concepts (data residency, encryption requirements). Understand the shared responsibility model - cloud provider secures the infrastructure; you secure your configuration and applications. Be able to explain why default security group configurations are dangerous.
Practice Interview
Study Questions
Compute Services Fundamentals
Understand core compute offerings: Virtual Machines (EC2 on AWS, VMs on Azure/GCP) - IaaS, fully managed compute where you manage OS and above. Containers (Docker) and orchestration (Kubernetes basics). Serverless/Functions (Lambda, Azure Functions, Cloud Functions) - event-driven, pay-per-execution. Know the characteristics, use cases, and trade-offs. Understand when to use each: VMs for complex, long-running workloads; containers for microservices; serverless for event-driven, intermittent workloads.
Practice Interview
Study Questions
Cloud Service Models (IaaS, PaaS, SaaS)
Understand the three primary cloud service models: Infrastructure as a Service (IaaS) - where you manage applications, middleware, runtime; Platform as a Service (PaaS) - managed development/deployment environment; and Software as a Service (SaaS) - fully managed applications. Know the responsibilities matrix for each. Provide examples of each (EC2/Azure VMs for IaaS, App Engine/Azure App Service for PaaS, Salesforce/Office 365 for SaaS). Understand when to recommend each model based on requirements.
Practice Interview
Study Questions
Storage Services and Data Management
Know primary storage options: Object Storage (S3, Azure Blob, GCS) - for unstructured data at scale, highly available, cost-effective. Block Storage (EBS, Azure Managed Disks) - for VM storage, IOPS/throughput optimized. Databases - Relational (RDS, Azure SQL, Cloud SQL) for structured data with relationships; NoSQL (DynamoDB, Cosmos DB, Firestore) for flexible schemas and scale. Understand access patterns, durability, and consistency models. Know when to use each storage type based on data characteristics and access patterns.
Practice Interview
Study Questions
Networking Fundamentals
Understand Virtual Private Clouds (VPCs/Virtual Networks) - isolated network environments within the cloud. Know about subnets, IP addressing (CIDR notation), routing, and gateways. Understand Security Groups (AWS) / Network Security Groups (Azure) as stateful firewalls controlling inbound/outbound traffic. Know about load balancing - distributing traffic across instances. Understand DNS, CDNs at a high level. Grasp the concepts of public vs. private subnets, NAT gateways, and bastion hosts for secure access.
Practice Interview
Study Questions
Technical Screen 2 - Cloud Platforms Deep Dive & Practical Scenarios
What to Expect
Hands-on technical interview focusing on one or more major cloud platforms (AWS, Azure, or GCP). This round presents realistic scenarios and asks you to design solutions, diagnose problems, or explain trade-offs. Expect questions like: 'Walk me through deploying a web application with a database and configuring it for high availability.' or 'You have a performance problem - how would you diagnose and fix it?' This tests practical knowledge, hands-on familiarity, and problem-solving approach. You may be asked to write infrastructure code (Terraform/CloudFormation syntax), configure services in a console, or diagram an architecture. The interviewer evaluates your depth of platform knowledge, ability to apply concepts to real scenarios, and reasoning about trade-offs.
Tips & Advice
Have hands-on experience with at least one platform before this interview - read documentation, build test projects, take guided labs on the cloud provider's learning platform. Be comfortable navigating the console and explaining what you're doing. If asked about specific services, explain what problems they solve before diving into technical details. Draw architecture diagrams clearly - label components, data flow, and key decisions. Discuss trade-offs explicitly: cost vs. performance, complexity vs. maintainability. If you're uncertain about a specific feature, acknowledge it and reason through how you'd find the answer. Show your learning process - how you'd investigate a problem you haven't encountered. Practice explaining architectural decisions to someone who doesn't use that platform.
Focus Topics
Containerization & Container Orchestration Basics
Understand Docker fundamentals - images, containers, and registries. Know how to read/write basic Dockerfiles. Understand Kubernetes at a conceptual level - pods, deployments, services, ConfigMaps. Familiar with managed Kubernetes services (EKS, AKS, GKE). Know when containerization makes sense vs. VMs. Understand the container lifecycle and deployment strategies. While deep Kubernetes expertise isn't expected at Junior level, understand the basics and when to use managed services vs. self-managed clusters.
Practice Interview
Study Questions
Cloud Monitoring, Logging, and Troubleshooting
Understand cloud monitoring services - CloudWatch (AWS), Azure Monitor, Cloud Monitoring (GCP). Know how to set up basic metrics and alarms. Understand logs and log analysis. Know how to investigate common cloud issues: performance degradation, connectivity problems, resource exhaustion. Be comfortable diagnosing root causes using monitoring and logs. Understand the difference between metrics (quantitative) and logs (detailed events). Know how to set up basic health checks and auto-recovery. Discuss how you'd investigate a production issue step-by-step.
Practice Interview
Study Questions
Managed Databases & Data Services
Understand when to use managed relational databases (RDS, Azure SQL, Cloud SQL) vs. NoSQL (DynamoDB, Cosmos DB, Firestore, Datastore). Know about backup, restore, replication, and multi-region strategies. Understand read replicas for scaling read-heavy workloads. Know about different consistency models and their trade-offs. Understand provisioned vs. serverless database models. Be able to recommend a database solution based on workload characteristics (read/write patterns, data size, latency requirements).
Practice Interview
Study Questions
Azure Virtual Machines & Networking (if Azure focus)
Deep understanding of Azure VMs - sizing, SKUs, image selection. Know about Availability Zones and Availability Sets for redundancy. Understand Virtual Networks (VNets), subnets, and Network Security Groups (NSGs). Know about Azure Load Balancer and Application Gateway. Comfortable with Azure Resource Manager (ARM) templates for infrastructure as code. Understand managed disks, storage accounts, and storage configurations. Be able to design a resilient multi-tier application on Azure.
Practice Interview
Study Questions
GCP Compute & Networking (if GCP focus)
Solid knowledge of Compute Engine (GCP's VMs), instance sizing, and custom machine types. Understand Cloud Storage, Persistent Disks, and storage classes. Know about VPC networking, subnets, and Cloud NAT. Understand Cloud Load Balancing options and when to use each. Comfortable with gcloud CLI and Deployment Manager or Terraform for infrastructure as code. Understand Google Cloud's managed services ecosystem and when to use them. Be able to design applications on GCP.
Practice Interview
Study Questions
AWS Compute & Networking (if AWS focus)
Deep familiarity with EC2 - instance types, sizing, pricing models (on-demand, reserved, spot). Understand AMIs (Amazon Machine Images) and launch templates. Know about security groups, network interfaces, and VPC integration. Comfortable configuring auto-scaling groups for high availability. Understand Elastic Load Balancers (ALB, NLB) and when to use each. Know about VPC architecture - public/private subnets, NAT gateways, route tables. Be able to design a multi-tier application architecture on AWS.
Practice Interview
Study Questions
Technical Screen 3 - Infrastructure as Code & Automation
What to Expect
Focused interview on Infrastructure as Code (IaC) and automation practices. This round assesses your ability to define, version, and automate cloud infrastructure. Expect to write Terraform configurations or CloudFormation templates to solve infrastructure problems. Questions might include: 'Write a Terraform module to create a VPC with public and private subnets.' or 'How would you version control and collaborate on infrastructure code?' You may discuss CI/CD pipelines, configuration management, and deployment automation. This round tests your understanding that infrastructure should be treated like application code - reproducible, testable, and maintainable. The interviewer evaluates your IaC syntax proficiency, software engineering practices applied to infrastructure, and automation thinking.
Tips & Advice
Before this interview, practice writing Terraform configurations - create sample projects on your own cloud account, understand state management, variables, outputs, and modules. Study CloudFormation or Bicep if those are your focus. Understand version control - how you'd store infrastructure code, collaborate, and manage changes. Be comfortable discussing Infrastructure as Code philosophy and why it matters. When writing code during the interview, start with simple solutions then refactor. Use meaningful variable names and add comments. Discuss state management and how to handle sensitive data (not in code). Explain your approach before coding. If you get stuck on syntax, reason through the structure - interviewers care more about understanding than perfect syntax. Discuss testing and validation of infrastructure code.
Focus Topics
Configuration Management Basics
Understand the philosophy of configuration management - ensuring systems are consistently configured, idempotent, and auditable. Familiarity with tools like Ansible, Chef, or Puppet at a conceptual level. Know the differences between imperative (step-by-step) and declarative (desired state) approaches. Understand how configuration management fits with infrastructure provisioning - often Terraform provisions infrastructure while Ansible configures the OS/applications. Recognize when configuration management solves a problem vs. over-engineering.
Practice Interview
Study Questions
CI/CD Pipelines and Deployment Automation
Understand continuous integration/continuous deployment - automated testing, building, and deployment of infrastructure and applications. Know about pipeline stages - build, test, deploy. Familiar with tools like Jenkins, GitLab CI, GitHub Actions, or cloud-native services (AWS CodePipeline, Azure DevOps). Understand infrastructure validation and testing before deployment. Know how to separate development, staging, and production environments. Discuss safe deployment practices - canary deployments, rolling updates, automated rollbacks. At Junior level, focus on understanding pipelines rather than complex implementations.
Practice Interview
Study Questions
AWS CloudFormation or Azure Resource Manager Templates
Understanding of native IaC tools for your platform. For AWS: CloudFormation templates (JSON/YAML), intrinsic functions, outputs, parameters, and stacks. For Azure: ARM templates or Bicep, understanding resource dependencies and deployments. For GCP: Deployment Manager. Understand how these tools work with your platform, but recognize Terraform is often preferred for multi-cloud. Practice writing templates for common infrastructure patterns.
Practice Interview
Study Questions
Version Control for Infrastructure Code
Understand Git fundamentals applied to infrastructure - branching strategies, pull requests, code reviews for infrastructure changes. Know how infrastructure code differs from application code. Discuss infrastructure change management - how you'd safely deploy changes, rollback if needed. Understand the risks of infrastructure changes and how to mitigate them. Know about infrastructure documentation alongside code - README files, architecture diagrams, variable explanations. Practice discussing a git workflow for collaborative infrastructure development.
Practice Interview
Study Questions
Secrets and Sensitive Data Management
Understand the risks of hardcoding secrets (API keys, passwords, credentials) in infrastructure code. Know about secret management services (AWS Secrets Manager, Azure Key Vault, Google Secret Manager). Discuss never committing secrets to git. Understand how to reference secrets in infrastructure code securely. Know about service accounts and IAM roles as alternatives to credentials. Discuss rotation of secrets and access controls. This is critical for security - interviewers probe your understanding of secret handling.
Practice Interview
Study Questions
Terraform Fundamentals
Strong proficiency with HashiCorp Terraform - the leading IaC tool across cloud platforms. Understand HCL syntax, providers, resources, variables, outputs, and data sources. Know how to organize code (files, directories, modules). Understand state files and state management - local vs. remote (S3, Azure Storage, GCS). Comfortable writing modules for reusable infrastructure components. Understand interpolation, locals, conditionals, and loops. Know how to manage secrets and sensitive data in Terraform. Practice writing Terraform for multi-tier applications, networking infrastructure, and databases.
Practice Interview
Study Questions
Architecture & System Design - Cloud Infrastructure
What to Expect
This round evaluates your ability to design cloud infrastructure solutions for realistic scenarios. You'll be presented with a business requirement or application architecture problem and asked to design the cloud infrastructure to support it. This isn't a complex distributed systems design like you'd see for Senior roles; instead, it focuses on applying cloud platform knowledge to practical infrastructure problems. Example scenarios: 'Design infrastructure for a web application with 1M daily users and a growing data warehouse.' or 'Migrate a on-premises data center to the cloud.' You're evaluated on your ability to ask clarifying questions, consider multiple approaches, make reasonable trade-offs, and justify decisions. The emphasis is on practical thinking and platform knowledge applied to real constraints (cost, performance, security).
Tips & Advice
Start by asking clarifying questions to understand requirements: scale (users, requests), performance requirements (latency, throughput), data characteristics, compliance/security needs, cost constraints, and geographic distribution. Sketch a high-level architecture diagram - VPCs, compute, storage, databases, load balancers, CDNs. Discuss trade-offs explicitly: managed services (simpler, higher cost) vs. self-managed (complex, lower cost); single region (cheaper, less resilient) vs. multi-region (expensive, highly available); relational vs. NoSQL databases. Explain your choices for each component - why this compute option, why this database, why this networking architecture. Discuss monitoring, logging, and disaster recovery. For Junior level, focus on solid fundamentals and reasonable choices rather than hyper-optimized solutions. Be willing to say 'I'd need to learn more about X to decide' - honesty is valued. Draw diagrams clearly and reference them often.
Focus Topics
Cloud Migration Strategy
If presented a migration scenario, understand the cloud adoption framework - assess current state, plan migration, build in phases. Know the common migration strategies: 'lift and shift' (move VMs as-is, fastest but may not optimize for cloud), 'rehost with optimization' (minor modifications), 'refactor/re-architect' (redesign for cloud, slower but better long-term), 'repurchase' (move to SaaS), 'retire' (decommission unused systems). Discuss the business case - cost savings, time to migrate, risk. Know about migration waves - typically non-critical systems first, critical systems last. Discuss cutover strategies and rollback plans.
Practice Interview
Study Questions
Scalability Patterns and Auto-Scaling
Understand vertical scaling (bigger machines) vs. horizontal scaling (more machines). Know that cloud prefers horizontal scaling for cost efficiency and reliability. Understand auto-scaling groups - scaling based on metrics like CPU, memory, request count. Know about different scaling metrics and how to choose them appropriately. Understand the difference between fast-scaling stateless services (web servers) and slow-scaling stateful systems (databases). Discuss caching strategies (Redis, Memcached) for scaling database access. Design infrastructure that scales automatically as load increases.
Practice Interview
Study Questions
High Availability and Disaster Recovery
Understand availability concepts: SLA (Service Level Agreement - percentage of time the system should be available), RTO (Recovery Time Objective - how quickly to recover after an outage), and RPO (Recovery Point Objective - how much data loss is acceptable). Design infrastructure with redundancy - multiple instances, data replication across regions. Know about database backup and restore strategies. Understand different disaster recovery strategies on a spectrum: backup/restore (cheapest, slowest), pilot light (standby replicas), warm standby, and hot standby (expensive, fastest). Discuss how you'd choose a strategy based on RTO/RPO requirements.
Practice Interview
Study Questions
Data and Database Architecture in the Cloud
Design data architectures appropriate to cloud - understand when to use managed relational databases, NoSQL, data warehouses, and data lakes. Know about replication strategies for high availability - read replicas for scaling reads, cross-region replication for disaster recovery. Understand consistency models and trade-offs. Discuss backup and restore for data protection. Know about data residency requirements (storing data in specific regions for compliance). Understand lifecycle policies - moving old data to cheaper storage (Glacier, Archive). Design data solutions that balance performance, cost, and compliance.
Practice Interview
Study Questions
Multi-Tier Application Architecture
Understand the standard pattern: presentation tier (web servers/CDNs), application tier (app servers/APIs), and data tier (databases). Know why this separation matters - scalability, security, maintenance. Understand load balancing across tiers and how traffic flows. Know about caching strategies between tiers. Be able to design this architecture on your chosen cloud platform using managed and unmanaged services. Discuss security considerations - network segmentation, encryption, access controls.
Practice Interview
Study Questions
High-Level Architecture Design Principles
Understand core architecture principles: high availability (system remains operational despite component failures), scalability (system handles increasing load), reliability (system functions correctly), and cost efficiency. Know about the trade-offs between these - high availability increases cost, scalability adds complexity. Learn to discuss architecture decisions in terms of these principles. Understand fault domains and redundancy - why you replicate critical components across availability zones/regions. Recognize that perfect architecture doesn't exist; every solution involves trade-offs based on requirements.
Practice Interview
Study Questions
Behavioral & Cultural Fit
What to Expect
Final interview with a hiring manager, senior engineer, or cross-functional team member to assess soft skills, cultural alignment, and collaboration abilities. This round focuses on how you work with others, handle ambiguity and challenges, learn continuously, and align with company values. Expect behavioral questions like 'Tell me about a time you made a mistake and how you handled it,' 'Describe a situation where you disagreed with a colleague,' or 'How do you stay current with cloud technologies?' For Junior roles, emphasis is on learning ability, collaboration, communication, and adaptability. You'll likely discuss your experience as a junior team member - how you've worked with mentors, contributed to team projects, and handled feedback. This round determines if you'll be a good fit for the team and company culture.
Tips & Advice
Use the STAR method (Situation, Task, Action, Result) to structure behavioral answers - this ensures you're concise and specific. Focus on your individual contributions as a junior engineer, not just 'our team did X.' Provide concrete examples from internships, personal projects, or coursework - not hypothetical answers. Be authentic and honest - interviewers value genuine responses over polished ones. Prepare stories demonstrating: (1) Learning from mistakes/feedback, (2) Collaboration and communication, (3) Problem-solving and initiative, (4) Handling ambiguity/uncertainty, (5) Your growth mindset. Research the company's values and culture beforehand; weave these into your answers when relevant. Ask thoughtful questions about the team, growth opportunities, and company culture. Show genuine curiosity and enthusiasm for learning. Be humble about what you don't know - this is appropriate for Junior level.
Focus Topics
Communication Skills
Demonstrate your ability to explain technical concepts clearly. In this interview, be precise and clear in your communication. Avoid unnecessary jargon. When describing technical situations, ensure the hiring manager (who may or may not be deep in that area) understands. Discuss how you've communicated with both technical and non-technical stakeholders. Show that you can document your work and share knowledge. For Junior engineers, strong communication compensates for experience gaps.
Practice Interview
Study Questions
Problem-Solving and Initiative
Describe a situation where you identified a problem (infrastructure inefficiency, process improvement opportunity, security gap) and took initiative to address it. Show critical thinking and follow-through. Discuss how you approach unfamiliar problems - do you research, ask for help, experiment? Show curiosity and willingness to dig deep. For Junior roles, this demonstrates that you don't just follow instructions but think about doing things better.
Practice Interview
Study Questions
Continuous Learning and Curiosity
Discuss how you stay current with cloud technologies - what blogs do you read, certifications have you pursued, side projects have you built? Show genuine interest in learning beyond job requirements. Discuss technologies outside your primary expertise that interest you. Share how you've learned from failures or challenges. Demonstrate that you're intellectually curious and invested in your growth. This is especially important for Junior roles - your learning velocity will outpace your current skills.
Practice Interview
Study Questions
Handling Ambiguity and Uncertainty
Discuss a situation where requirements were unclear, technology choices weren't obvious, or directions changed mid-project. How did you handle it? Show that you ask clarifying questions, make reasonable assumptions, gather information, and move forward despite uncertainty. Show comfort with changing directions and learning new things. Cloud environments are constantly changing - adaptability is crucial.
Practice Interview
Study Questions
Learning from Mistakes and Feedback
Prepare a specific example where you made a mistake (infrastructure outage, misconfiguration, incorrect design decision) and describe: what happened, what you learned, and how you prevent similar mistakes. Demonstrate self-awareness and growth mindset. Show how you've applied feedback to improve. Discuss how you'd approach learning a new cloud technology you've never used. Interviewers want to see that Junior engineers are humble, eager to learn, and resilient after setbacks.
Practice Interview
Study Questions
Collaboration and Teamwork
Describe a situation where you worked effectively with teammates - perhaps debugging an issue together, learning from a mentor, or collaborating on a project. Show that you communicate clearly, ask good questions, and don't hesitate to reach out for help when needed. Discuss how you handle different personalities and communication styles. Show respect for others' expertise and willingness to learn. At Junior level, being a good teammate and learner is just as important as technical skill.
Practice Interview
Study Questions
Frequently Asked Cloud Engineer Interview Questions
Your work depends on another team delivering something you need, like an API or a data feed, before you can finish yours. What do you put in place up front so that dependency doesn't quietly become a blocker?
Sample Answer
Direct answer
Before your work depends on it, put a written interface contract in place (the shape of the data or API, error cases, and versioning), a single named owner on each side, and an SLA (service level agreement: the vendor's contractual uptime/response commitment) for questions and changes with a defined escalation path. Then build against a mock or stub (a fake stand-in for the real API that returns data matching the agreed contract, so your team can build and test without waiting on the real thing) that matches that contract, so a late dependency delays true integration, but doesn't block your team's progress.
Framework
Before you start building. Agree the contract explicitly (schema, error handling, versioning), name one owner per side rather than 'the team', and set an SLA for response time and change turnaround, with an escalation path if it slips.
While you wait. Build and test against a mock or stub that matches the agreed contract, so your team keeps moving. Pair it with automated contract tests, so if the mock and the real dependency drift apart, you find out at build time instead of at release.
Internal-team dependency vs external vendor dependency. The mechanics differ once the other side is a vendor rather than a team you can walk over to.
| Aspect | Internal team dependency | External vendor dependency |
|---|---|---|
| Contract | API or data schema agreed directly, renegotiable quickly | Formal SLA in a vendor agreement, slower to change |
| Availability guarantee | Informal or team-level expectation | Contractual uptime percentage with penalties or credits |
| Mitigation | Mocks, shared roadmap, escalate to a shared manager | Caching and fallback paths, plus a compensation or credit clause |
| Escalation | Peer-to-peer or shared manager | Vendor account manager, procurement, or legal |
Worked example
Situation: a product depends on a vendor-managed API (for example a payments or identity provider). The vendor's contract commits to 99.5% availability, but the product's own reliability target requires 99.95%.
Quantifying the gap: a year has 8,760 hours. At 99.5% availability, permitted downtime is 0.5% of 8,760 = 43.8 hours per year. At 99.95%, permitted downtime is 0.05% of 8,760 = 4.38 hours per year. The vendor's contract therefore permits about 43.8 minus 4.38 = 39.42 hours per year more downtime than the product can actually tolerate.
Action: negotiated for a higher committed SLA where possible; where the vendor would not move the number, negotiated a compensation or credit clause tied to a downtime threshold, documented in writing. Regardless of the contract terms, added caching on the read path so a short vendor blip doesn't cascade immediately, and a fallback path that degrades the feature gracefully instead of erroring during an outage window.
Result: the contract negotiation raises the ceiling on paper, but the caching and fallback layer is what actually protects users during the gap between what the vendor promises and what the product needs, since a credit clause compensates you after an outage, it doesn't prevent one.
Trade-offs and pitfalls
- Mocks and stubs only help if kept in sync with the real contract. A stale mock creates a different kind of surprise at integration time.
- Vendor SLA credits are usually a small fraction of the real cost of downtime (lost trust, lost usage). Treat them as compensation, not as risk mitigation on their own, and pair them with technical fallbacks.
- Applying heavy contract-and-SLA process to a short, low-risk internal dependency slows down partners who need speed more than ceremony. Calibrate the rigor to the risk and duration of the dependency, not the same weight for every one.
Explain how to perform capacity planning and autoscaling for a stateful web application that uses sticky sessions or an external session store. Provide formulas or metrics to estimate instance counts, headroom, and autoscaling thresholds, and outline a testing approach to validate your plan.
Sample Answer
Approach summary
Describe traffic, session model (sticky vs external), instance capacity (RPS, concurrent sessions, memory), target SLAs, and choose autoscaling signals (CPU, RPS per instance, queue length, custom metrics like active_sessions).
Capacity estimation formulas
- Estimate required instances by throughput:
instances_by_rps = ceil( peak_rps / instance_max_rps )
(instance_max_rps = measured median RPS an instance serves at target latency)
- Estimate by concurrent sessions (stateful / sticky):
instances_by_sessions = ceil( peak_concurrent_sessions / sessions_per_instance )
(sessions_per_instance = memory_limit_for_sessions / avg_session_size)
- Add headroom:
target_instances = ceil( max(instances_by_rps, instances_by_sessions) * (1 + headroom_fraction) )
(recommended headroom_fraction = 0.2–0.5 depending on burstiness)
Autoscaling thresholds & policies
- For external session store (stateless app servers): scale on RPS or request latency:
- Scale out when RPS_per_instance > 0.7 * instance_max_rps or p95_latency > SLA
- Scale in when RPS_per_instance < 0.4 * instance_max_rps for cooldown
- For sticky sessions (stateful): prefer scaling on queue length, new session rate, or manual/controlled scale to avoid rebalancing cost. Use a gentle scale rate and session draining.
- Example threshold formulas:
scale_out_when: (total_rps / current_instances) > 0.7 * instance_max_rps
scale_in_when: (total_rps / current_instances) < 0.4 * instance_max_rps AND current_instances > min_instances
Operational considerations
- Cooldown windows: 3–10 minutes; longer for sticky sessions.
- Draining: Evict new traffic, wait for session timeout or migrate sessions gracefully.
- Use health checks and circuit breakers; monitor session store latency (for external store).
Testing & validation
- Baseline profiling: measure instance_max_rps, avg_session_size, memory use, p50/p95 latency.
- Load tests: ramp to peak and 2x peak with realistic session patterns; validate scaling decision times, error rates, and session stickiness.
- Chaos/rolling tests: force instance termination to verify session draining and sticky behavior.
- Soak tests: sustained load for hours to capture memory leaks.
- Metrics to observe: p95 latency, error rate, CPU, memory, RPS_per_instance, session_store_latency, time_to_scale, dropped_sessions.
Trade-offs
- Sticky sessions simplify design but reduce flexibility and require careful drain logic; external session stores add complexity but enable faster autoscaling and better utilization. Choose based on SLA and operational readiness.
Compare managed Kubernetes services (EKS/GKE/AKS) to serverless container platforms (Fargate, Cloud Run). For each option list operational responsibilities, typical use cases, cost implications, scaling behavior, and how vendor lock-in and portability are affected. Recommend choices for bursty API services vs long-running stateful workloads.
Sample Answer
Overview
Below compares managed K8s (EKS/GKE/AKS) vs serverless containers (Fargate, Cloud Run) across responsibilities, use cases, cost, scaling, portability, and recommendations.
Operational responsibilities
- Managed K8s (EKS/GKE/AKS)
- Cluster control plane managed; you manage node pools, CNI, ingress, RBAC, Helm, upgrades, autoscaling, monitoring, backup.
- Responsible for pod scheduling, storage classes, CSI drivers, network policies.
- Serverless containers (Fargate / Cloud Run)
- Provider manages infra, OS, scaling, patching. You supply container image and config (concurrency, memory, env).
- Limited platform ops (observability, IAM, CI/CD).
Typical use cases
- Managed K8s: complex microservices, stateful apps (Databases, Kafka), custom networking, multi-workload clusters, infra requiring CRDs/operators.
- Serverless containers: stateless HTTP APIs, event-driven jobs, ephemeral workers, webhooks, simple background tasks.
Cost implications
- Managed K8s: pay for control plane (sometimes), and provisioned nodes (VMs) — may be inefficient at low utilization but good for high steady load via reserved/spot VMs.
- Serverless containers: pay-per-use (CPU/memory-per-second). Often cheaper for bursty/low-utilization workloads; can be expensive for constant high CPU/memory.
Scaling behavior
- Managed K8s: fine-grained control (HPA, VPA, Cluster Autoscaler). Can scale horizontally but node provisioning can add latency; can use node pools with mixed instance types and scale-to-zero is not native without addons.
- Serverless containers: rapid autoscale including scale-to-zero (Cloud Run) and near-instant concurrency scaling (Cloud Run supports multiple requests per instance). Fargate scales fast but often has higher cold-starts and per-task latency.
Vendor lock-in & portability
- Managed K8s: high portability (K8s API standard). Workload portability across clouds is strong; cluster configs, operators may reduce portability. More surface area but easier to move.
- Serverless containers: higher lock-in to platform behaviors (request timeouts, IAM, logging, scaling semantics). Container image portability exists, but operational model often ties you to provider.
Recommendations
- Bursty API services: prefer serverless containers (Cloud Run / Fargate) for rapid scale-to-zero, pay-per-use, simpler ops. Use Cloud Run for HTTP-heavy with concurrency needs; Fargate when deeper AWS integration or VPC-required.
- Long-running stateful workloads: prefer managed K8s to run statefulsets, operators, persistent volumes, and custom networking. Optimize cost with reserved instances/spot and node autoscaling.
Notes / Trade-offs
- Hybrid: run control-plane on K8s and front APIs on serverless for best of both worlds.
- Consider observability, security posture, and compliance when choosing.
Describe how you would deploy a managed relational database for a production web application. Cover service selection (RDS/Aurora/Cloud SQL/Managed MySQL), sizing (instance class, storage type), backup and retention policy, high availability and automated failover, read scaling, encryption, maintenance windows, and routine maintenance practices.
Sample Answer
Service selection
For AWS choose Amazon Aurora (MySQL/Postgres compatible) for high performance and serverless options; use RDS (Managed MySQL/Postgres) if cost/compatibility matters. On GCP use Cloud SQL; on Azure use Azure Database for MySQL/Postgres. Choose the provider that matches existing stack, SLA and read/write patterns.
Sizing
- Pick instance class based on CPU/memory needs from load testing (e.g., db.m6i.large → scale up).
- Start with balanced vCPU/memory; prefer vertical scale-friendly families.
- Storage: use gp3 (AWS) or SSD provisioned IOPS for predictable IO; size with growth buffer and autoscaling if supported.
Backups & retention
- Enable automated daily snapshots; retention 7–35 days per compliance.
- Configure point-in-time recovery with binary/log shipping; test restores regularly (quarterly).
High availability & automated failover
- Use Multi-AZ / regional primary-replica configuration. For Aurora, use cluster endpoints and automatic failover <30s. Enable synchronous replication where possible.
Read scaling
- Add read replicas (Aurora readers or RDS read-replicas). Use load balancer or application-aware routing to distribute reads. Monitor replica lag and promote if needed.
Encryption
- Enable at-rest encryption using cloud KMS customer-managed keys. Enforce TLS for in-transit. Rotate keys per policy and restrict KMS IAM roles.
Maintenance windows & routine practices
- Set weekly maintenance window during low traffic. Apply minor patches regularly, major upgrades in planned maintenance with blue/green or snapshot rollback plan.
- Routine: monitor metrics (CPU, IOPS, connections, replica lag), run failure drills, automate backups validation, review slow query logs and index optimization, cost review and right-sizing monthly.
This approach balances reliability, performance, security and operational readiness for production workloads.
You have about 48 hours before you have to deliver something real using a technology you have never touched. Walk me through how you would spend that time, what you would deliberately decide not to learn, and how you would protect yourself and the work from the parts you skipped.
Sample Answer
Direct answer
In forty-eight hours I am not trying to understand the technology, I am trying to deliver one narrow, correctly-working slice of it and be honest about everything I did not verify. I spend the first couple of hours scoping exactly what "real" has to mean for the deliverable, deliberately decide what to fake, stub, or hard-code outside that slice, and I protect the work by verifying the riskiest part by hand rather than trusting untested intuition, then naming the residual risk explicitly to whoever receives the work.
Structured elaboration
- Scope ruthlessly from the actual deliverable backward: what is the smallest real thing that satisfies the ask, and what can be stubbed, mocked, hard-coded, or simply omitted for now.
- Name out loud what is being skipped and why: edge cases, error handling for paths not exercised, configuration options, anything the tool offers that this specific window does not need.
- For the part that has to be real, verify by hand what you cannot yet trust your own understanding to catch: manually walk a request through, check a response against documentation line by line, rather than relying on "it looked right" for the piece that matters most.
- Where existing knowledge partly maps from something familiar, be explicit with yourself about which parts of that intuition are actually being verified and which are just being trusted, since a partial map is exactly where false confidence creeps in.
- Flag residual risk explicitly to whoever receives the work: what was not verified, what could break outside the narrow case tested, and what should be checked next if this needs to become durable.
Worked example
With about forty-eight hours' notice, I was asked to integrate a third-party payment provider's webhook into a live service for a stakeholder demo the next day, having never touched that provider's interface before. I scoped the real slice tightly: handle exactly one webhook event type correctly, with real signature verification, since faking that would be dangerous even in a demo, and hard-coded a canned response for every other event type in the provider's catalog rather than trying to handle all of them. I verified the signature-verification code by hand against the provider's documented example payload and hash, byte by byte, rather than trusting that it compiled and ran without error, since that was exactly the part I could not yet trust my own instincts on. I left retry and duplicate-delivery handling explicitly out of scope, wrote that down in the change description, and told the person receiving the work directly that a duplicate webhook delivery would currently be processed twice, so it was not safe to treat as production-ready before that gap closed.
Trade-offs and pitfalls
- The biggest failure mode under this kind of compression is quietly treating "it ran once without an error" as proof of correctness; hand-verifying the riskiest slice is exactly what prevents that.
- Skipping too aggressively can produce a demo that looks complete and creates false confidence that the hard part is done, when the hard part was actually the part left out; naming what was skipped, out loud, is what prevents that.
- Leaning on knowledge that only partly maps from a familiar tool is efficient but dangerous if the transferable parts are not separated from the parts that merely look similar.
You have mixed hardware in the cluster: GPU nodes for machine learning, on-demand nodes for critical services, and spot instances for low-priority batch jobs. Explain how you'd use node labels, taints, tolerations, node selectors or affinity, and PodTopologySpread to ensure correct scheduling and protect critical workloads from being placed on spot instances.
Sample Answer
Direct answer
Node labels, taints/tolerations, affinity, and topology spread each answer a different scheduling question, and this scenario needs all of them combined rather than one chosen over the others. Taints on the volatile pool (spot) provide the exclusion guarantee that keeps critical workloads off it by default. Affinity provides the positive pull that sends the right workload to the right pool, and for GPU (graphics processing unit) nodes that pull has to be paired with the device-plugin's extended resource accounting, not just a label. Topology spread (or pod anti-affinity) spreads critical replicas so a single node or zone loss never removes more than one replica.
Structured elaboration
| Mechanism | Question it answers | Example in this scenario |
|---|---|---|
| Node labels | What kind of node is this | hardware=gpu / ondemand / spot |
| Taints + tolerations | Which pods are allowed here at all (an exclusion gate) | spot=true:NoSchedule, only batch pods tolerate it |
| Node affinity / nodeSelector | Where does this specific pod want to go (a positive pull) | requiredDuringSchedulingIgnoredDuringExecution on hardware=gpu |
| Extended resources (device plugin) | How many units of a scarce, non-CPU resource this pod needs | resources.limits: {nvidia.com/gpu: 1} |
| topologySpreadConstraints | How replicas of one workload are spread | maxSkew: 1 across topology.kubernetes.io/zone |
| PriorityClass + preemption | Who survives when capacity is scarce | Critical pods get a higher priorityClassName than batch |
GPU nodes need more than a label
Labeling a node hardware=gpu is necessary but not sufficient. The scheduler only knows a node has usable GPU capacity once the NVIDIA device plugin (or a vendor equivalent) DaemonSet advertises it as an extended resource in the node's allocatable, for example nvidia.com/gpu: 4. A pod requests it like any other resource:
resources:
limits:
nvidia.com/gpu: 1
Without the resource request, a pod with only nodeSelector: {hardware: gpu} can land on a GPU node without ever actually reserving a device, or worse, several pods could expect the same already-claimed device. Pair the label or affinity rule (which steers the pod to the right node family) with the extended-resource request (which makes the scheduler actually reserve a device).
Excluding spot from critical workloads
kubectl taint nodes -l node-lifecycle=spot spot=true:NoSchedule
Only pods that explicitly tolerate it can land there:
tolerations:
- key: "spot"
operator: "Equal"
value: "true"
effect: "NoSchedule"
Critical services carry no such toleration, so the scheduler treats spot nodes as invisible to them by default, with no risk of a nodeSelector typo accidentally placing one there.
Spreading critical replicas
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app: critical-service
whenUnsatisfiable: DoNotSchedule makes this a hard constraint; ScheduleAnyway makes it best-effort. For a service that must survive a zone loss, DoNotSchedule is the right choice even though it can leave a pod Pending if the under-represented zone runs out of capacity, which is a signal to add capacity, not to loosen the constraint.
Priority for the pool that can vanish without warning
Spot capacity can disappear with only seconds of notice. Give critical workloads a higher priorityClassName so, if critical and batch pods ever land in the same resource pool during a capacity burst, the scheduler preempts lower-priority batch pods rather than the reverse.
Worked example
A cluster has 2 GPU nodes (4 GPUs each, 8 total), 3 on-demand nodes for critical services, and 4 spot nodes for batch. A training job requests 2 GPUs; with the device plugin installed, allocatable nvidia.com/gpu across the 2 GPU nodes totals 8, and the scheduler places the pod on whichever GPU node currently has 2 or more free, refusing to schedule (Pending, correctly) if all 8 are already claimed elsewhere. A critical service asks for 3 replicas with topologySpreadConstraints maxSkew: 1 across the 3 on-demand zones: with exactly 3 zones and 3 replicas the constraint is satisfiable exactly, one per zone, so losing any single zone loses exactly 1 of 3 replicas, never more.
Trade-offs and pitfalls
- A taint on the spot pool only stops pods without the toleration; it does not, by itself, stop a batch pod from landing on an on-demand node. If batch must also be kept off on-demand capacity, that pool needs its own taint plus a matching toleration on batch pods, not just a one-directional rule.
- Required affinity and required topology spread can leave pods unschedulable when capacity is tight. Monitor scheduling events (
PendingplusFailedScheduling) rather than reflexively loosening a hard rule to preferred, which quietly reintroduces the correlated-failure risk the rule existed to prevent. - GPU device counts are not overcommittable the way CPU or memory can be with limits set above requests. Plan capacity on whole-device granularity.
Design a network topology to support a critical API serving 10,000+ transactions per second globally. Beyond the obvious compute/LB choices, what AWS soft limits would you watch for (ENIs, ALB target-group limits, Route 53 quotas), and how do you architect around them?
Sample Answer
Direct answer. Serve the API from multiple regions behind Route 53 latency based or geoproximity routing, terminate each region behind a Network Load Balancer (NLB, for raw Layer 4 throughput and client IP preservation) or Application Load Balancer (ALB, for Layer 7 routing and AWS Web Application Firewall integration), and fan out to an autoscaled fleet in private subnets across at least three Availability Zones (AZs). At 10,000+ transactions per second the design itself is the easy part; the soft quotas on Elastic Network Interfaces (ENIs, the virtual network cards attached to instances, containers, and load balancer nodes), ALB target registration, and Route 53 API and record counts are what actually break first, and each has a known architectural workaround rather than just a support ticket.
Reference topology
flowchart TB
DNS[Route 53\nlatency-based routing] --> R1[Region A entry]
DNS --> R2[Region B entry]
subgraph R1[Region A]
NLB1[NLB / ALB] --> ASG1[Autoscaling group\nAZ-a, AZ-b, AZ-c]
ASG1 --> VPCE1[VPC endpoints\nS3, DynamoDB, Secrets Manager]
ASG1 --> NAT1[NAT gateway per AZ]
end
subgraph R2[Region B]
NLB2[NLB / ALB] --> ASG2[Autoscaling group\nAZ-a, AZ-b, AZ-c]
end
CF[CloudFront edge cache] --> DNS
Shield[AWS Shield + WAF] --> CF
Where the soft quotas actually bite
| Constraint | What breaks | Verified default | Architectural workaround |
|---|---|---|---|
| ENIs per instance / per AZ | Container platforms (ECS with awsvpc networking, EKS pods) each consume an ENI or a secondary IP slot; dense bin packing exhausts the interface budget on smaller instance types | Varies per instance type (documented per type in the EC2 User Guide), not a single fixed number | Use larger instance types for ENI-dense workloads, or the VPC (Virtual Private Cloud, your isolated network) CNI (Container Network Interface, the plugin that assigns pod IPs) with prefix delegation on EKS to hand out IP blocks instead of one ENI per pod |
| Targets per Application Load Balancer | A single ALB fronting the whole fleet runs into a hard ceiling as instances or Fargate tasks scale out | 1,000 targets per ALB, adjustable; separately, 100 target groups per ALB, not adjustable | Shard by hostname or path across multiple ALBs, or put an NLB in front of multiple ALBs (hybrid pattern below) so no single ALB needs to hold every target |
| Target groups / targets per Region | Shared pool across all load balancers in the account | 3,000 target groups per Region shared between ALB and NLB (adjustable); 1,000 targets per target group per Region (adjustable) | Request the increase ahead of the launch, and track consumption per team if multiple services share the account |
| Route 53 records per hosted zone | Latency, geoproximity, or weighted record sprawl (one record set per AZ, per environment, per feature flag) fills the zone | 10,000 records per hosted zone (adjustable, incurs additional charge above the default) | Prefer alias records to ALB/NLB/CloudFront over many manually managed A records, and consolidate environments into fewer, coarser record sets instead of one per instance |
| Route 53 API request rate | Automation that calls ChangeResourceRecordSets per deploy or per health event can throttle the control plane itself, which is separate from the data plane query volume your 10,000+ transactions per second (TPS) actually uses | 5 requests per second per account against the Route 53 API (hard ceiling, mitigate with backoff, not a quota increase) | Batch record changes, do not call the API per instance boot; use health checks and Auto Scaling instead of API-driven DNS churn |
NLB vs ALB at this scale
| NLB | ALB | |
|---|---|---|
| Layer | 4 (TCP/UDP/TLS) | 7 (HTTP/HTTPS) |
| Client IP | Preserved to the target by default | Lost unless read from X-Forwarded-For |
| TLS | Can pass through untouched, or terminate with an AWS Certificate Manager (ACM) certificate on a TLS listener | Terminates HTTPS with ACM, required for host or path based routing and native WAF attachment |
| Routing | Single target group per listener, no path/host rules | Path, host, header based rules; needed for API versioning or multi service fan-out behind one domain |
| Throughput profile | Scales to very high connection and packet rates with fewer moving parts | Adds L7 processing overhead per request, more capacity units consumed per request than NLB |
| When it wins here | Client mTLS pass through requirements, or when raw throughput at fixed per-target cost matters more than L7 features | WAF is a hard requirement, or routing rules must vary by path/host across one API surface |
A common hybrid for this scale is an NLB in front of one or more ALBs: the NLB absorbs connection volume and gives a stable set of IPs for Route 53 or on-premises peers, while the ALBs behind it do the L7 routing and WAF enforcement, so no single ALB has to hold every target.
Design targets if this had to scale toward 1,000,000 requests per second
The same soft-quota discipline extends past 10,000 TPS. At the 1,000,000 requests per second design point, three additional bottleneck classes move from "watch" to "must design around":
- Connection handling. At that volume the number of concurrent TCP connections, not just requests, becomes the binding constraint: enable NLB cross zone load balancing and keep-alive reuse on the client side to avoid a connection-per-request pattern, and size target group connection draining and idle timeouts so scale-in events do not cause a thundering herd of reconnects.
- Caching. Push everything cacheable to the edge before it reaches the load balancer at all. CloudFront in front of Route 53's origin, plus ElastiCache for computed responses that are expensive to regenerate, is what turns a 1,000,000 requests per second edge number into a much smaller number of requests that actually reach the autoscaling group, which is the only way the ENI and target quotas above stay survivable.
- DDoS (Distributed Denial of Service) protection. Volumetric floods are a distinct failure mode from organic growth. AWS Shield Advanced plus WAF rate based rules in front of CloudFront absorb the attack traffic at the edge so it never consumes ALB capacity units, NAT (Network Address Translation) gateway bandwidth, or backend autoscaling capacity that legitimate traffic needs.
Trade-offs and pitfalls
- NAT gateway placement. One NAT gateway per AZ (not one shared NAT for the Region) is required for AZ independence; a single shared NAT recreates a cross AZ single point of failure and adds cross AZ data transfer cost on every outbound call.
- VPC endpoints reduce NAT load, but only for AWS services. Gateway endpoints exist only for S3 and DynamoDB; every other AWS service (Secrets Manager, ECR, Systems Manager) needs an Interface endpoint (a PrivateLink ENI in each subnet) to get off NAT gateway bandwidth, which itself consumes ENIs and adds to the same soft quota this design is trying to protect.
- Requesting increases late. ENI, target, and record quota increases are not instant; requesting them the week of a launch instead of during capacity planning is the single most common way this design fails in production despite being architecturally correct on paper.
- Treating TLS termination point as a style choice. Where TLS terminates changes who can see plaintext, what WAF can inspect, and how much CPU the load balancer layer spends versus the backend; it is a security and cost decision, not just a configuration toggle.
Design a scalable GitOps pipeline for managing infrastructure across multiple cloud accounts and clusters supporting dev/staging/prod. Requirements:
- Declarative manifests live in Git
- Automated reconciliation with drift detection
- Role-based access controls per environment
- Approval gates for production
- Secure handling of secrets
Describe repository layout, automation components (controllers, CI), workflows for PRs and merges, and rollback procedures for failed reconciliations.
Sample Answer
Direct answer
A scalable, multi-account, multi-cluster GitOps pipeline needs its ROLLBACK PROCEDURE for a FAILED reconciliation to be a first-class design element, not an afterthought, because at this scale a partial reconciliation failure (some manifests applied, others rejected mid-sync) is a routine operational event, not an edge case. The design combines a repo layout mirroring the account/cluster/environment hierarchy, a controller instance per cluster (never one controller reaching across account boundaries, which would undermine the RBAC isolation the requirements explicitly call for), and an explicit, tested procedure for what happens when a sync fails PARTWAY, distinct from ordinary drift-correction rollback.
Structured elaboration
Repository layout. A structure mirroring the real topology: clusters/<cloud-account>/<cluster-name>/<environment>/, with shared platform manifests factored into a common base that each cluster-environment combination overlays. This makes "which cluster does this manifest actually apply to" answerable by directory path alone, essential once the fleet spans enough accounts and clusters that tribal knowledge stops scaling.
Automated reconciliation with drift detection. One controller instance PER CLUSTER (not one central instance spanning every account), each watching only its own directory in the shared repo, so a compromise or misconfiguration in one cluster's controller cannot reach across the account boundary to another.
Role-based access controls per environment. Each environment's controller service account holds Kubernetes RBAC scoped to exactly that cluster; human access to trigger manual syncs or view status is scoped via the GitOps tool's own project/tenancy construct, matching the SAME account/cluster/environment boundaries the repo layout encodes, so the repo structure, the RBAC structure, and the controller topology all reflect the SAME hierarchy rather than three independently-maintained mappings that can drift out of sync with each other.
Approval gates for production. A required-review gate on any PR touching a prod environment directory, structurally enforced via CODEOWNERS and branch protection, distinct from and in addition to non-production environments' lighter review bar.
Secure handling of secrets. Per-cluster External Secrets Operator instances, each scoped to that cluster's own path prefix in the secrets backend, so a promotion between environments never requires touching a secret VALUE directly, only the reference structure.
Rollback procedures for failed reconciliations, the part this question specifically emphasizes. Distinguish two failure shapes: (1) a sync REJECTED entirely before applying anything (a validation or policy-as-code failure catches it up front), which needs no rollback at all, nothing was ever applied; and (2) a sync that applied SOME resources before failing partway (a dependency ordering issue, a transient API error on one specific resource), which leaves the cluster in a genuinely INCONSISTENT intermediate state, some resources reflecting the new desired state, others still on the old one. For case 2, the controller's own automatic retry (most GitOps controllers retry a failed sync automatically on the next reconciliation cycle) is usually sufficient IF the underlying cause was transient; if it is not transient (a genuine configuration error), the safe procedure is reverting the OFFENDING commit specifically (not the whole recent history) and letting reconciliation catch the cluster back up to the last known-good state, the same Git-revert-and-reconcile pattern used for ordinary rollback, but explicitly TESTED against a partial-failure scenario before relying on it in production, since a partial failure's exact intermediate state is harder to reason about than a clean, fully-applied-then-reverted change.
Worked example
A concrete PR/merge workflow tying the pieces together: a change merges into clusters/account-b/cluster-3/prod/, requiring @org/platform-team approval (CODEOWNERS) before merge is even possible; on merge, cluster-3's dedicated controller instance (holding RBAC scoped only to that cluster) picks up the change and begins syncing; if the sync fails after applying 6 of 9 manifests (a dependency ordering problem causes the 7th to fail), the controller's automatic retry attempts the remaining 3 on the next cycle; if the underlying issue is NOT transient (a genuine error in the 7th manifest), an operator reverts specifically that commit, and reconciliation, on its next cycle, reconciles the cluster back to matching the reverted (last known-good) declared state, resolving the partial-application inconsistency without requiring a manual, resource-by-resource cleanup.
Trade-offs and pitfalls
- Common mistake: designing rollback procedures only around "a bad change reached prod and needs reverting" and never explicitly testing the PARTIAL-failure case, a sync that applies 6 of 9 manifests before failing leaves a genuinely different, harder-to-reason-about intermediate state than a clean, fully-applied bad change; if this specific case has never been deliberately exercised (a game-day exercise, or a staging-environment fault injection), the team's confidence in "we can just revert and reconcile" may not survive contact with a real partial failure.
- One controller instance per cluster, rather than one centralized instance across accounts, is the right default here specifically because the requirements name per-tenant RBAC and account isolation explicitly; a centralized controller would need its OWN cross-account credentials to reach every cluster, which is exactly the concentration-of-risk a single shared credential creates for isolation-sensitive requirements.
- The repo-layout, RBAC-structure, and controller-topology hierarchies all mirroring the SAME account/cluster/environment structure is a deliberate design choice, not a coincidence, letting any one of the three drift out of alignment with the others (a repo reorganization that doesn't get reflected in RBAC scoping, for instance) reintroduces exactly the kind of tribal-knowledge dependency this design exists to eliminate at scale.
- Automatic retry on transient failures is genuinely helpful but can mask a persistent problem if not paired with alerting on REPEATED failures for the same resource, a sync that keeps failing and retrying silently, cycle after cycle, without ever escalating to a human, is a worse outcome than a sync that fails once, loudly, and gets a deliberate revert.
You must migrate a transactional on-premises database to the cloud with near-zero downtime. Outline a cutover and rollback plan covering pre-migration validation, CDC or replication setup, synchronization verification, final cutover sequence, testing/verification after cutover, and explicit rollback triggers and steps. Mention tools or services you might use.
Sample Answer
Direct answer: Structure the cutover as: pre-migration validation, then continuous change-data-capture (CDC) replication to build and maintain a synchronized target, then a short cutover window (stop writes, drain lag, verify, repoint), with explicit, pre-agreed rollback triggers rather than an ad hoc judgment call during the window.
Structured elaboration. Pre-migration validation: confirm the target database is provisioned and tuned correctly (indexes, connection limits, parameter groups matching or exceeding source), run a full initial data load and a first-pass checksum/row-count comparison BEFORE relying on it for anything, and validate the CDC pipeline itself on non-critical tables first. CDC or replication setup: enable log-based replication from source to target, let it run long enough to validate it keeps up under real production write volume (not just during a quiet testing window), monitor replication lag continuously. Synchronization verification: periodic (e.g., hourly) row-count and checksum comparisons on a sample of tables throughout the replication period, not just once at the end, so a silently-diverging replication stream is caught early rather than discovered at cutover. Final cutover sequence: (1) announce the maintenance window to stakeholders, (2) put the application into a brief write-pause or read-only mode, (3) wait for replication lag to reach zero, (4) run a final full parity check (row counts and checksums across all migrated tables, not a sample), (5) repoint the application's connection string to the target, (6) remove the write-pause. Testing/verification after cutover: run the application's smoke tests against the new database, monitor error rates and query latency for an elevated period post-cutover, and keep the source database available (read-only) for a defined bake period in case rollback is needed. Explicit rollback triggers: define BEFORE the cutover window, not during it: e.g., "if the final parity check finds any discrepancy," "if replication lag doesn't reach zero within 15 minutes of write-pause," or "if post-cutover error rate exceeds 2x baseline within the first 30 minutes" all trigger an immediate rollback to the source, no live debate required in the moment.
Worked example. For a database expected to have a 10-minute maintenance window: minutes 0-5 write-pause and lag-drain (the phase does not advance until lag reaches zero; if lag has NOT reached zero by minute 5, that is itself the rollback trigger, and the plan aborts here rather than proceeding into parity checking against a target that never finished catching up), minutes 5-8 final parity check across all tables (only entered once lag-drain succeeded within its 5-minute budget), minutes 8-9 repoint application and run smoke tests, minutes 9-10 remove write-pause and begin elevated post-cutover monitoring. If the rollback trigger fires at minute 5, the in-progress parity-check phase never starts: writes resume against the still-authoritative source immediately, and the target is discarded rather than repaired, since nothing has been repointed to it yet. Tools: a managed CDC/migration service for replication, a lightweight parity-check script (checksums per table, compared source vs. target) run both periodically during replication and as the final gate.
Trade-offs & pitfalls. Defining rollback triggers DURING the cutover window under time pressure, rather than agreeing them beforehand, is the most common way a fixable problem turns into an extended, improvised outage: a pre-agreed "if X, then rollback, no discussion" rule removes the temptation to push through a warning sign because the team is already committed to the window.
Design storage tiering for time-series metrics across four tiers: hot (1 day), warm (30 days), cold (1 year), and archive (7 years). For each tier, recommend a storage format or backend, a compaction cadence, an indexing strategy, and how queries would be routed and rehydrated across tiers, along with the availability and latency SLA you'd target for each.
Sample Answer
Direct Answer
Route queries by data age: hot is optimized for write and point-lookup latency at full resolution, warm keeps full resolution but trades write-path speed for better compression, and cold and archive downsample aggressively and lean on cheap object storage, accepting slower, block-oriented reads. The tiering only pays off if you also downsample, keeping full resolution for 7 years costs an order of magnitude more than the numbers below show.
Structured Elaboration
| Tier | Window | Backend / format | Compaction cadence | Indexing | Query routing / rehydration | Target availability | Target latency (p99) |
|---|---|---|---|---|---|---|---|
| Hot | 1 day | In-memory + local NVMe, native TSDB blocks (e.g. Prometheus TSDB-style, full resolution) | Continuous micro-compaction (seconds to minutes) | Full inverted label index in memory | Served directly, no rehydration | 99.95% | < 100 ms |
| Warm | 30 days | Columnar compressed blocks (e.g. Thanos/Cortex-style object-store blocks), full resolution | Hourly to daily compaction into larger blocks | Bloom filter per block + label index in a fast KV store | Coordinator fans out to blocks by time range | 99.9% | < 1 s |
| Cold | 1 year | Downsampled columnar blocks on cheap object storage | Weekly to monthly consolidation | Coarse time-partitioned manifest + Bloom filters for pruning | Async streaming read, no random I/O | 99% | < 5 s |
| Archive | Years 2 to 7 (6 years) | Heavily compressed, further downsampled blobs on deep-archive storage | Monthly to yearly batching | Minimal manifest with pointers, searchable catalog | Explicit restore API, on-demand rehydration | Best-effort | Restore initiated within 1 hour |
Rehydration is bounded by making every tier block-addressable by time range and label hash: a query for a specific series over a specific window only pulls the blocks that could contain it, using the manifest's Bloom filters (compact per-block structures that can say "this block definitely doesn't contain that series" without opening it) to skip the rest, rather than scanning a tier wholesale.
Tier flow
flowchart LR
Q["Query Router"] --> HOT[("Hot: 1 day")]
Q --> WARM[("Warm: 30 days")]
Q --> COLD[("Cold: 1 year, downsampled")]
Q --> ARC[("Archive: 7 years, downsampled")]
HOT -->|"compaction"| WARM
WARM -->|"downsample to 5min"| COLD
COLD -->|"downsample to 1hr"| ARC
ARC -.->|"on-demand rehydrate"| Q
Worked Example
Assume 1,000,000 active series, each scraped every 15 seconds (a stated design input). Raw points per series per day:
15 s86,400 s=5,760 points/series/dayTotal raw points/day across the fleet: 1,000,000×5,760=5.76×109.
Hot (1 day). Assume time-series-optimized compression achieves roughly 2 bytes/point (a stated assumption for delta-of-delta timestamp and XOR value encoding, not a cited benchmark), plus 30% index overhead:
hot=5.76×109×2 B×1.3≈15.0 GB for the 1-day windowWarm (30 days). Larger compaction blocks improve the ratio slightly to 1.5 bytes/point, still at full resolution:
warm=5.76×109×30×1.5 B≈259.2 GB for the 30-day windowCold (1 year). Downsample to 5-minute resolution, a 300s/15s = 20x reduction in point count, at 2 bytes/point:
cold points/day=205.76×109=2.88×108,cold=2.88×108×365×2 B≈210.2 GB for the 1-year windowHad the cold tier kept raw resolution instead, the year would cost 5.76×109×365×2 B≈4,204.8 GB, about 20x more, which is the whole reason the downsample step exists.
Archive (years 2 to 7, 6 years). Downsample further to 1-hour resolution (24 samples/day), at 1.5 bytes/point since bulk cold storage compresses better:
archive=1,000,000×24×(6×365)×1.5 B≈78.8 GB for the 6-year windowTotal 7-year footprint (before replication): 15.0+259.2+210.2+78.8≈563.2 GB. Kept at raw resolution for all 7 years instead, the footprint would be roughly 4,204.8×7≈29,434 GB≈29.4 TB, about 52x larger. That gap is the entire economic argument for tiering with downsampling rather than tiering on storage class alone.
Trade-offs and Pitfalls
Downsampling is lossy by design: once a cold-tier block collapses 20 raw points into one 5-minute aggregate, you cannot recover the original spikes inside that window. Decide per metric type whether that is acceptable (aggregate SLI counters, usually fine) or not (a metric feeding an anomaly-detection model that needs the raw shape, usually not, and should either stay hot longer or get its own retention policy).
Cross-tier query stitching is a common failure point: a dashboard spanning "last 45 days" crosses the hot/warm boundary and the warm/cold boundary is close by too, and the query planner has to merge full-resolution warm data with 5-minute cold data without a visible discontinuity in the chart. Test this seam explicitly, it is where tiering bugs show up in production, not inside a single tier.
Archive rehydration cost is easy to underestimate: a 1-hour restore-initiation SLA sounds fast until a customer asks for a 3-year lookback across 1,000 series and that pulls thousands of archive blocks, each carrying its own restore latency and egress cost. Expose rehydration as an explicit, rate-limited, customer-visible operation rather than pretending archive queries behave like cold-tier queries.
Recommended Additional Resources
- AWS Well-Architected Framework (official AWS documentation)
- Azure Architecture Center (official Azure documentation)
- Google Cloud Solution Architecture (official GCP documentation)
- Terraform Official Documentation and Registry
- A Cloud Guru - Cloud Engineer Learning Paths (all platforms)
- Linux Academy / A Cloud Guru DevOps Fundamentals
- Kubernetes Official Documentation (start with basics)
- System Design Primer (GitHub - Alexander Xu)
- Cloud Security Basics (NIST Cloud Computing Security Reference Architecture)
- AWS Solutions Architect Associate Certification Study Guide
- Azure Fundamentals and Administrator Certification Study Guides
- Google Cloud Associate Cloud Engineer Exam Guide
- Docker Official Documentation and Interactive Labs
- Terraform Associate Certification Study Resources
- LeetCode System Design Problems (for architecture thinking practice)
- 'Release It!' by Michael Nygard (Pragmatic Bookshelf) - Operability and resilience
- 'The Phoenix Project' by Gene Kim - Understanding DevOps and operational thinking
- Cloud provider hands-on labs and free tier accounts (AWS, Azure, GCP)
- Infrastructure as Code workshops on cloud provider platforms
- Disaster Recovery and High Availability whitepapers from cloud providers
Search Results
Top Cloud Computing Interview Questions for 2024
Cloud Computing Interview Questions to help you prepare for your cloud computing interview with topics on AWS, Azure, cloud security and more.
30+ Software Engineer Interview Questions: What to Expect & How ...
Prepare for your software engineering interview with 30+ common questions, tips, and strategies to answer confidently and land the job.
Meta Software Engineer Interview (questions, process, prep)
You should expect typical behavioral and resume questions like, "Tell me about yourself", "Why Meta", or "Tell me about your current day-to-day as a developer. ...
100+ AWS Interview Questions and Answers (2026) - Simplilearn.com
Basic AWS Interview Questions · 1. Define and explain the three basic types of cloud services and the AWS products that are built based on them? · 2. What is the ...
50+ DevSecOps Interview Questions and Answers for 2025
The guide covers key DevSecOps topics like integrating security into CI/CD pipelines, threat modeling, incident response, vulnerability scanning, and ...
DevOps Interview Secrets: What They ACTUALLY Ask (Junior to ...
20 IAM Interview Questions and Answers | Security Solution Architect (2025 Guide) ... Ultimate Cloud Engineer & DevOps Mock Interview (Real Questions!) Tech with ...
50 Most Popular Salesforce Interview Questions & Answers ...
General Salesforce Interview Questions. This first section is designed to test you on the fundamental concepts of Salesforce and cloud computing systems. If ...
Azure Interview Questions and Answers - GeeksforGeeks
1. Explain Benfits of Azure? ... Azure is a cloud computing platform that facilitates with providing a broad range of services such as computing, analytics, ...
This interview preparation guide was generated using AI-powered research from the sources listed above. While we strive for accuracy, we recommend verifying critical information from official company sources.
Want to create your own tailored preparation guide using our deep research?
Get Started for FreeInterview-Ready Courses
Visual-first, interactive, structured learning paths