PracHub
QuestionsLearningGuidesInterview Prep

Quick Overview

This question evaluates graph algorithm skills (topological ordering and cycle detection) and software design competencies related to command interfaces, undo semantics, and shared-state management.

  • medium
  • Netflix
  • Coding & Algorithms
  • Software Engineer

Implement ordering and undo executor

Company: Netflix

Role: Software Engineer

Category: Coding & Algorithms

Difficulty: medium

Interview Round: Onsite

The interview included two coding tasks: 1. **Dependency ordering**: Given a set of tasks and their dependency relationships, return a valid execution order so that every task appears after all of its prerequisites. If no valid order exists because of a cycle, report that the schedule is impossible. 2. **Command executor with undo**: Design and implement a simple command executor that supports: - `execute(command)`: runs a command and records enough information to undo it later. - `undo()`: reverts the most recently executed command that has not yet been undone. Assume commands may modify shared application state. Discuss the interface you would use for commands, what data structure you would use to support undo, and how you would handle edge cases such as calling `undo()` when no command has been executed.

Quick Answer: This question evaluates graph algorithm skills (topological ordering and cycle detection) and software design competencies related to command interfaces, undo semantics, and shared-state management.

Part 1: Lexicographically Smallest Topological Ordering

You are given `n` tasks labeled from `0` to `n - 1` and a list of dependency pairs `edges`, where each pair `[u, v]` means task `u` must be completed before task `v`. Return a valid ordering of all tasks. If multiple valid orderings exist, return the lexicographically smallest one. If it is impossible to complete all tasks because the dependency graph contains a cycle, return an empty list.

Constraints

  • 0 <= n <= 100000
  • 0 <= len(edges) <= 200000
  • Each task label is an integer in the range [0, n - 1]
  • All dependency pairs are distinct

Examples

Input: (4, [[0, 1], [0, 2], [1, 3], [2, 3]])

Expected Output: [0, 1, 2, 3]

Explanation: Task 0 must come first. Then both 1 and 2 are available, so choose 1 before 2 for lexicographically smallest order.

Input: (5, [[0, 2], [1, 2], [3, 4]])

Expected Output: [0, 1, 2, 3, 4]

Explanation: This graph has two disconnected components. Choosing the smallest available task each time gives the required lexicographically smallest order.

Hints

  1. Kahn's algorithm uses indegree counts to repeatedly choose nodes that currently have no unmet prerequisites.
  2. To guarantee the lexicographically smallest valid order, use a min-heap instead of a normal queue.

Part 2: Text Command Executor With Undo

Implement a simple command executor for text editing. The editor starts with an empty string and processes operations in order. Supported operations are: - `('append', s)`: append string `s` to the end - `('delete', k)`: delete the last `k` characters; if `k` is larger than the current length, delete everything - `('undo',)`: undo the most recent `append` or `delete` operation that has not already been undone; if there is nothing to undo, do nothing Return the final text after processing all operations.

Constraints

  • 0 <= len(operations) <= 100000
  • The total number of characters across all appended strings is at most 200000
  • 0 <= k <= 200000 for delete operations
  • Only the three supported command types will appear

Examples

Input: [('append', 'abc'), ('append', 'de'), ('delete', 3)]

Expected Output: 'ab'

Input: [('append', 'hello'), ('delete', 2), ('append', 'y'), ('undo',), ('undo',)]

Expected Output: 'hello'

Hints

  1. Undo should reverse the most recent still-active command, so a stack is a natural fit.
  2. For each executed command, store just enough information to reverse it later instead of storing the whole text every time.
Last updated: Apr 19, 2026

Loading coding console...

PracHub

Master your tech interviews with 8,500+ real questions from top companies.

Product

  • Questions
  • Learning Tracks
  • Interview Guides
  • Resources
  • Premium
  • For Universities

Browse

  • By Company
  • By Role
  • By Category
  • Topic Hubs
  • SQL Questions
  • AI Coding Questions
  • Compare Platforms
  • Discord Community

Support

  • support@prachub.com
  • (916) 541-4762

Legal

  • Privacy Policy
  • Terms of Service
  • About Us

© 2026 PracHub. All rights reserved.

Related Coding Questions

  • Simulate a TTL Cache with LRU Eviction - Netflix (medium)
  • Compute Minimum Task Completion Time - Netflix (medium)
  • Solve String Arrays and Row Deduplication - Netflix (medium)
  • Implement Cache, Undo, and DFS - Netflix (medium)
  • Implement Streaming Word Counter - Netflix (medium)