
Build a Photo Sharing App for Up to 1 Billion Users: System Design Interview with a FAANG Engineer
Whiteboard ConfidentialShow Notes
REPLAY EPISODE: Curious how to approach large-scale design interviews? This is the level of depth, structure, and clarity that top companies like Stripe and Meta are actively looking for. In this mock system design interview, a senior engineer is asked to design a photo-sharing app (something like Instagram, but from scratch and at massive scale). What follows is a masterclass in thoughtful architecture: from exploring nuanced functional and nonfunctional requirements to tackling schema design, RESTful APIs, and infrastructure choices under realistic constraints. The candidate works through challenges like privacy controls, feed generation, follow request flows, and media storage for 1 billion daily active users—all while communicating clearly and methodically. You’ll see them navigate trade-offs around consistency vs. availability, break down how to serve images efficiently with CDNs, and set up queues for asynchronous photo processing. Sign up to book coaching or to watch more interviews in our showcase: https://www.interviewing.io See the interviewer’s feedback and transcript here: https://start.interviewing.io/showcase/B0pirlqbsofX Or view other FAANG interviews: https://interviewing.io/mocks?company=faang Disclaimer: All interviews are shared with explicit permission from the interviewer and the interviewee, and all interviews are anonymous. interviewing.io has the sole right to distribute this content. Timestamps: 00:00 Introduction 00:58 Interview Begins 02:00 Clarifying assumptions: privacy, authentication, feeds 06:45 Discussing follow requests and celebrity suggestions 09:00 Metadata and interaction features (likes, comments) 12:00 Non-functional requirements and scale (1B DAUs!) 15:00 Schema design begins: Users and Follows 20:00 Designing the Photo entity (metadata, location, blob storage) 27:00 Comment schema + verified users 31:00 Designing upload & metadata API endpoints 35:45 Designing follow request and response APIs 41:00 Designing the user’s feed + pagination 44:00 High-level architecture begins: services, DBs, queues 48:00 Document store vs. relational DB for photo storage 52:00 Serving photos via CDN + Follow service interaction 56:00 Final review and detailed feedback from interviewer 01:00:00 Encouragement on focusing more on requirements depth
More from Whiteboard Confidential
A candidate works through three algorithmic problems in Go during a mock interview with a senior FAANG engineer. This mock touched on correctness, complexity tradeoffs, implementation clarity, and communication — the core signals real interviewers evaluate.🧩 Problem 1 — Longest Consecutive Sequence (Unsorted Array)Design an O(n) solution using a hash set to identify sequence starts and expand. Covers duplicate handling, boundary detection, and correctness reasoning without sorting.🧩 Problem 2 — Binary Tree Level Order TraversalClassic BFS over tree nodes, using a queue and level-by-level batching. Discussion includes space complexity, queue growth, and common implementation pitfalls.🧩 Problem 3 — Cutting Trees on a Cliff (Grid Stability / Connectivity)After removing one tree, determine which remaining trees are still connected to the bottom row. Involves multi-source BFS/DFS from stable nodes, component tracking, and correctness guarantees for 4-directional connectivity. Key skills demonstrated• Translating verbal reasoning into clean Go implementations• Maintaining communication while coding (a major FAANG evaluation axis)• Applying BFS/DFS patterns across trees and grids• Identifying optimal vs. suboptimal approaches via time/space analysis• Handling interviewer hints and recalibrating solutions• Ensuring correctness through example-driven verification👉 Book coaching or watch more mock interviews: https://www.interviewing.io📝 Interview transcript & feedback: https://interviewing.io/mocks/faang-go-longest-consecutive-sequence🔗 Explore more FAANG interviews: https://www.interviewing.io/mocksDisclaimer: All interviews are shared with explicit permission from the interviewer and interviewee. All candidates remain anonymous.
REPLAY EPISODE: A candidate takes on two Meta-style interview problems—one array, one binary tree—and a Senior Meta engineer breaks down their performance step by step.In this Meta-style mock coding interview, a candidate is put through two challenging problems that test practical reasoning, optimal data structures, and clear communication — exactly what real Meta interviewers look for.🧩 Problem 1: Given a sorted array of positive integers and a target k, find the pair whose sum is closest to k.(A classic Meta-style twist on two-pointer optimization problems.)🧩 Problem 2: You’re given the root of a binary tree. If one person stands on the left side and another on the right side, return the nodes visible to both of them — left view (bottom → top) followed by right view (top → bottom).(A unique combination of tree view and traversal-order reasoning.)Watch how the candidate breaks down both problems like in a real Meta onsite:✅ Identifies the optimal O(n) two-pointer strategy✅ Handles tricky edge cases with clean logic✅ Designs a combined traversal strategy for dual tree views✅ Codes efficiently under pressure✅ Gets detailed feedback from a Senior Meta engineer💡 What you’ll learn:• Two-pointer patterns Meta loves to ask• How left/right tree views work and how to combine them• How to structure reasoning during a high-pressure interview• What great communication looks like in a real FAANG interview👉 Sign up to book coaching or watch more mock interviews: https://www.interviewing.io📝 Interviewer feedback & transcript: https://interviewing.io/mocks/facebook-python-closest-pair-sum🔗 Explore more Meta interviews: https://www.interviewing.io/mocks?company=metaDisclaimer: All interviews are shared with explicit permission from the interviewer and the interviewee. All candidates remain anonymous.
REPLAY EPISODE: In this Google machine learning system design interview mock, a candidate tackles a personalized newsfeed recommendation system — the kind of large-scale ML challenge that real Google engineers face.
REPLAY EPISODE: In this Google coding interview mock, a candidate tackles one of the trickiest binary tree problems that keeps showing up in real interviews.
SPOTLIGHT EPISODE: What happens when a senior engineer stops “faking it” and starts treating interviewers like partners? Eamonn sits down with James—now at OpenAI, with prior stops at Pinterest, Reddit, and Discord—to unpack how he managed imposter syndrome, learned to ask clarifying questions early, and used improv to become a clearer, more confident communicator on the job. Along the way, we pause to analyze James’s mock coding interview on interviewing.io, tracing the exact habits that set him apart: writing while thinking, checking in for buy-in, and iterating toward better solutions under pressure. If you’re preparing for coding interviews, you’ll see how James navigates anagrams with letter-count tuples, weighs time/space tradeoffs, and engages with hints without losing the thread. Watch James's Full Mock Here: https://start.interviewing.io/interview/Gw58xSkxBKqu/replayWatch Another of James's Full Mocks Here: https://www.youtube.com/watch?v=eHF6YxfOXy4 Watch replays & transcripts: https://start.interviewing.io/showcase Book a mock interview: https://interviewing.io