sde
Interview Date
22-08-2026
Result
Selected
Difficulty
Easy
Rounds
03
Drive Type
Off-Campus
Topics asked
Detailed experience
PART 1: ALGORITHMIC PROBLEM - EULERIAN PATHS & DE BRUIJN GRAPHS BASE PROBLEM You are analyzing network logs to trace the exact route of a packet that traversed a specific set of network links. Task: Given a list of directed edges representing flight tickets `(from, to)`, reconstruct the itinerary that uses every single ticket exactly once. You must start at a specific node (e.g., "JFK"). If there are multiple valid itineraries, return the lexicographically smallest one. Design an algorithm to find this path. Why does a standard backtracking Depth-First Search (DFS) risk exponential O(2^E) time complexity, and how does Hierholzer's Algorithm guarantee an Eulerian Path in strictly O(E log (V/E)) time using a post-order traversal stack? FOLLOW-UP 1 Before attempting to reconstruct the path, you need to validate that a valid itinerary even exists to avoid wasting compute cycles. For a massive directed graph, how do you mathematically prove that a valid Eulerian Path exists in O(V + E) time using an array to track in-degrees and out-degrees, and how do you use Disjoint Set Union (DSU) or Kosaraju's to ensure the edges aren't split across disconnected components? FOLLOW-UP 2 The problem scales to genome sequencing. You are given millions of DNA sequence fragments (k-mers). You map them into a massive De Bruijn graph with `V = 10^8` nodes to reconstruct the original DNA strand by finding the Eulerian Path. A recursive implementation of Hierholzer's Algorithm will immediately trigger a stack overflow on a path of length 10^8. Furthermore, allocating node pointers using `std::unordered_map` will cause catastrophic memory fragmentation and L1 cache misses. How do you implement a strictly iterative version of Hierholzer's using an explicit `std::vector` stack, and how do you design an allocation-free Compressed Sparse Row (CSR) / Forward Star adjacency list in C++ to guarantee contiguous memory access? ------------------------------------------------ PART 2: SYSTEM DESIGN - DISTRIBUTED MESSAGING & PRESENCE (DISCORD/WHATSAPP) BASE PROBLEM You are designing the backend for a real-time chat application with 100 million active users. Users connect via WebSockets to send and receive messages instantly. Design the high-level architecture, focusing on the WebSocket Connection Gateway, the session routing service (how Alice's server knows which server Bob is connected to), and the message delivery pipeline. FOLLOW-UP 1 You are tasked with building the "Presence Service" (the green dot indicating a user is online). Mobile clients frequently experience "connection flapping"—dropping and reconnecting 10 times a second as they drive through tunnels. If Alice has 500 friends, broadcasting her online/offline status on every flap will create a massive N^2 fan-out storm that brings down the network. How do you implement debouncing, heartbeat intervals, and a publish-subscribe batching mechanism to stabilize presence state updates? FOLLOW-UP 2 The system must support massive community servers (like Discord) where a single group chat has 500,000 members. If a user sends a single message to this group, a "Fan-Out on Write" approach (writing the message to 500,000 individual user inboxes) will cause a massive write-amplification bottleneck. How do you redesign the architecture to use a "Fan-Out on Read" (pull-based) model for large groups, and how do you synchronize the client-side message caches to fetch missing messages when users open the app? ------------------------------------------------ PART 3: AI / LLM DISCUSSION QUESTIONS In the context of deep learning optimization, what is the "Grokking" phenomenon (delayed generalization), and why does a model sometimes achieve perfect validation accuracy long after the training loss has already plateaued to near-zero? How does the ALiBi (Attention with Linear Biases) mechanism differ from standard sinusoidal or Rotary Positional Embeddings (RoPE), and how does its penalty mechanism allow models to extrapolate natively to sequence lengths they were never trained on? When converting a standard convolutional neural network (CNN) image pipeline to a Vision Transformer (ViT) architecture, how is the spatial translation invariance lost, and how do patch-embedding layers and positional tokens mechanically compensate for this? How do algorithmic prompting frameworks like DSPy programmatically optimize language model pipelines compared to manual prompt engineering, specifically regarding how DSPy utilizes teleprompters to automatically compile few-shot examples and bootstrap prompt weights?