← Intuit Interview Insights

Intuit·Software Engineer·Technical Phone Screen·Intermediate

Intermediate
Apr 2026

Summary

A 75-minute combined coding and system design round at Intuit. Pretty standard stuff but the follow-up on the coding problem caught me a bit flat-footed.

Questions Asked (2)

Q1

Given an array representing a number (e.g. [1, 2, 3]), return the array after adding 1 to the number it represents.

Algorithms & Data Structures
Author's notes

Classic plus-one problem, I knew it.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying the problem constraints (e.g., non-negative digits, no leading zeros except for zero itself) and then walk through a digit-by-digit addition from the least significant digit, handling carry propagation. If a carry remains after processing all digits, prepend a 1 to the array. Discuss time and space complexity, and consider edge cases like all 9s.

Pro tip: Demonstrate awareness of in-place modification versus creating a new array, and mention that in languages like Java, using an ArrayList for dynamic resizing can simplify the carry propagation. Also, proactively discuss how you would test the solution with edge cases.

1. Clarify requirements and constraints

Ask about the input format: are digits guaranteed to be 0-9? Can there be leading zeros? Is the array mutable? This ensures you handle edge cases correctly.

2. Outline the algorithm

Explain that you will traverse the array from right to left, adding 1 to the last digit and propagating any carry. If a carry remains after the leftmost digit, insert a new digit at the front.

3. Implement the solution

Write code that iterates from the end, updating each digit and breaking early if no carry. If the loop completes with a carry, create a new array with an extra leading 1.

4. Analyze complexity and edge cases

State that time complexity is O(n) and space complexity is O(1) if modifying in-place, or O(n) if creating a new array. Discuss edge cases: [9,9,9] -> [1,0,0,0], [0] -> [1], and empty array (if allowed).

5. Test and verify

Walk through a few test cases manually, including normal cases, carry propagation, and all 9s. Mention that you would write unit tests to cover these scenarios.

Key Points to Mention

  • Traverse from least significant digit (end of array) to most significant.
  • Carry propagation: if digit is 9, set to 0 and carry 1; else increment and stop.
  • Handling the case where all digits are 9, requiring an extra digit at the front.
  • Time complexity O(n) and space complexity O(1) if in-place, O(n) if new array.
  • Edge cases: single element, all 9s, leading zeros (if allowed), empty array.
  • Potential follow-up: how to handle negative numbers or very large numbers (beyond integer limits).

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

Follow-up: how would you handle this if the input array is extremely large, too large to fit in memory?

Algorithms & Data StructuresTechnical Trade-offs
Author's notes

This is where I stumbled a bit.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Acknowledge that the in-memory solution won't work and propose an external-memory or streaming approach. Discuss chunking the data, processing it in passes, and using disk-based storage or distributed computing if needed. Emphasize trade-offs between time, space, and complexity.

Pro tip: Mention that you would first clarify the exact constraints (e.g., available memory, disk space, time limits) because the optimal approach depends on them. This shows you think before coding and avoid over-engineering.

1. Clarify constraints and requirements

Ask about the size of the array, available memory, disk space, time limits, and whether the data can be processed in multiple passes. This determines the feasible approaches.

2. Choose an external memory strategy

Decide between chunking the array into blocks that fit in memory, using a streaming algorithm if possible, or employing a disk-based data structure like a B-tree or external sort.

3. Design the algorithm with I/O efficiency

Optimize for sequential disk access and minimize random I/O. For example, use merge sort with chunking, or hash-based partitioning for grouping operations.

4. Consider distributed processing

If the data is too large even for disk on one machine, discuss using MapReduce or a distributed framework like Spark to process the data across multiple nodes.

5. Analyze trade-offs and complexity

Compare time and space complexity, I/O cost, and implementation complexity. Discuss whether a simpler approximate solution (e.g., sampling) might suffice.

Key Points to Mention

  • External sorting (e.g., merge sort with chunking)
  • Streaming algorithms for single-pass operations (e.g., reservoir sampling, Boyer-Moore majority vote)
  • Hash-based partitioning for grouping or deduplication
  • Distributed computing frameworks (MapReduce, Spark)
  • Time-space trade-offs and I/O complexity
  • Memory-mapped files or disk-based data structures (B-trees, LSM trees)

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.