Most stack interview questions reduce to three patterns: matching pairs (parentheses, path segments), expression parsing (calculators, decode string), and the monotonic stack (next greater or smaller element). If you can recognize which of the three a problem belongs to in the first minute, you have already done the hardest part. The rest is a standard push-pop loop. This guide covers when each pattern applies, the mistakes we watch candidates make in mock interviews, and specific problems to drill.
Stacks rarely show up as "implement a stack." In many technical interviews, stacks and queues are rarely asked about directly. Instead, they are often used as intermediary tools to manage data in a way that aligns with the problem's requirements. The skill being tested is recognition, not memorization.
The mental model: LIFO vs FIFO
Start with the distinction, because interviewers do ask you to justify your choice out loud. Stacks use a Last-In-First-Out (LIFO) approach, meaning the last item added is the first to be removed. They are great for tasks like undo operations, depth-first search, and expression evaluation. Queues follow a First-In-First-Out (FIFO) principle, making them ideal for task scheduling, breadth-first search, and managing sequential processes.
The practical trigger: reach for a stack whenever the most recently seen item is the one you need to resolve first. Unmatched brackets, pending operators, and "the last number bigger than me" all have that shape. If instead you need to process items in arrival order (level-order traversal, sliding windows), you want a queue or a deque.
One more implementation note that comes up with Java candidates. Java's java.util.Stack class is a legacy collection framework component that extends Vector, providing thread-safe operations but at the cost of performance overhead in single-threaded scenarios. In interviews, prefer ArrayDeque in Java or a plain list in Python. Mentioning this unprompted is a cheap credibility signal.
Pattern 1: Matching pairs and canonicalization
This is the entry-level stack pattern, and it is where most junior loops begin. You scan left to right, push when you open something, and pop when you close it. The stack holds "things still waiting to be closed."
The canonical version is valid parentheses, but the more interesting interview variants apply the same idea to structured strings. Simplify Path (mid_senior) is a great example: given a Unix-style absolute path, you split on slashes and push each real directory name, treat .. as a pop, and ignore . and empty segments. The stack, joined back with slashes, is your canonical path. It looks like string parsing but it is a stack problem in disguise, which is exactly the recognition test interviewers want.
The mechanics for bracket matching are worth stating precisely because candidates fumble the empty-stack case. When the character is an open bracket, we push it onto the stack. When the character is a closed bracket, we attempt to pop the last character from the stack. "Attempt" is the key word: if the stack is empty when you hit a closing bracket, the string is invalid. Always check if the stack is empty before peeking or popping to avoid runtime errors. That single check is the most common source of failed test cases in this pattern.
If matching pairs feel adjacent to substring work, our string manipulation patterns guide pairs well here, since problems like Decode String sit right on the boundary between the two.
Pattern 2: Expression parsing
Once matching pairs feels automatic, the step up is evaluating what is inside those pairs. This is where the harder stack questions live.
Basic Calculator (staff) is the flagship. You evaluate a string like "(1+(4+5+2)-3)+(6+8)" without any built-in eval. The clean approach uses a stack to remember the running result and sign each time you hit an open parenthesis, then restores them on the closing one. The reason it is rated staff is not the algorithm, it is the number of cases you have to get right: multi-digit numbers, unary minus, nested parentheses, and stray spaces. We see strong candidates lose this one by coding before enumerating those cases on the whiteboard.
The related family (postfix evaluation, decode string) all share one shape. Push numbers onto the stack, and when encountering an operator, pop two operands, perform the operation, and push the result back. If you can articulate that sentence, you can derive most parsing problems on the spot rather than recalling a template.
A tactical tip that transfers across this whole category: when a problem needs distances or positions, store indices on the stack rather than values, and read the value from the original array when you need it.
Pattern 3: The monotonic stack
This is the pattern that separates candidates who have practiced from those who have not, and it is worth the most study time. A monotonic stack is the interview pattern for nearest-greater, nearest-smaller, and range-boundary problems that would otherwise keep rescanning left or right. It replaces repeated local searches with one disciplined push-pop invariant.
The core idea: keep the stack sorted as you go by popping anything that violates the order before you push. Unlike brute-force approaches that might require O(n squared) time complexity, monotonic stacks often solve these problems in just O(n) time. The linear bound comes from a simple accounting argument you should say out loud: each element is pushed once and popped at most once, so the total work stays linear.
Which direction?
The single most common bug is choosing the wrong monotonicity. Memorize this table and you will not guess in the room:
| You want | Use | Scan direction |
|---|---|---|
| Next greater element | Decreasing stack | Left to right |
| Next smaller element | Increasing stack | Left to right |
| Previous greater/smaller | Same, mirrored | Right to left |
Next greater: use a decreasing stack. Next smaller: use an increasing stack. And the reason the popping is not wasted effort: it tells you that the new element has resolved something for the popped element.
The problems to drill
The DevInterview bank has a clean difficulty ramp for this pattern:
- Next Greater Element I (junior): the textbook introduction. Build a next-greater map with one pass over one array, then answer queries. If you cannot write this from memory, start here.
- Next Greater Node In Linked List (mid_senior): the same logic, but you cannot index backward, so you either convert to an array first or track positions as you traverse. Interviewers use it to see if you can adapt a known pattern to a new container.
- Max Chunks To Make Sorted II (staff): the disguised version. Nothing in the prompt says "next greater," but the monotonic-stack solution (a stack of chunk maxima) is elegant and fast. This is the recognition test at its hardest.
Shortest Subarray to be Removed to Make Array Sorted (mid_senior) is worth calling out because it looks monotonic but is better solved with two pointers over the sorted prefix and suffix. Knowing when not to use the stack is part of the skill; our two pointers guide covers that adjacent pattern.
Recognition heuristic: keywords in the problem such as next greater, next smaller, previous greater, previous smaller, nearest warmer day, span, boundary, or rectangle width are strong signals. So is this structural cue: each position waits for the first future or past value that breaks a comparison rule, and the answer for one index can be finalized permanently once a stronger boundary appears.
How to practice this efficiently
We run mock interviews all day, and the recurring failure with stack problems is not the algorithm, it is the explanation. Candidates code a correct monotonic stack but cannot say why it is linear or which index is waiting on what. Fix that directly. Strong candidates explain what unresolved indices are waiting for, what condition triggers a pop, and why each index is pushed and popped at most once.
A concrete drill: for each problem, state the invariant and complexity in about 60 seconds before writing code, and lead with pattern recognition ("this is a next greater element shape, so a decreasing monotonic stack of indices fits"). Do that on Next Greater Element I, then Simplify Path, then Basic Calculator, then Max Chunks To Make Sorted II, and you will have touched all three patterns across four difficulty tiers. That coverage beats grinding twenty near-identical LeetCode variants. If you want to see how frequently stack problems appear by employer, our per-company breakdowns show which shops lean on them.
FAQ
Are stacks or queues asked more often in interviews?
Stacks come up more often as an explicit tool, largely because of the matching-pairs and monotonic patterns. Queues appear mostly inside BFS and sliding-window problems rather than as the star of a question. That said, "implement a queue using stacks" (and its reverse) is a classic warm-up, so know both.
What is the most common mistake on monotonic stack problems?
Choosing the wrong direction. Using an increasing stack when you need a decreasing one quietly produces wrong answers that pass small tests. The second most common mistake is storing values when the problem needs distances; store indices instead so you can compute both position and value.
Do I need to implement a stack from scratch?
Usually no, but be ready to. You may not be allowed to use the built-in Stack or Queue implementation during a coding interview, so know how to back one with an array or linked list and expose push, pop, peek, and isEmpty. In real solutions, prefer the language's built-in deque for speed and clarity.
How do I recognize a monotonic stack problem quickly?
Look for language about the next or previous greater or smaller element, spans, warmer days, or rectangle widths. These patterns won't always shout "monotonic stack," but if you are comparing current values to earlier or later ones, it is probably time to bring out the stack. If a naive solution is a nested scan and the answer for one element gets fixed the moment a bigger or smaller element appears, that is your cue.
Sources
- Introduction to Monotonic Stack (Design Gurus)
- Monotonic Stack/Deque Intro (Algo.Monster)
- Monotonic Stack Pattern in Java (ScaleMind)
- Monotonic Stack (CodingInterviewHQ)
- Leetcode Pattern: Monotonic Stack (Medium)
- Stack vs Queue in Coding Interviews (LockedIn AI)
- Mastering Stack and Queue Problems in Coding Interviews (Launch School)
- Common Java Stack and Queue Interview Questions (Medium)
- Top 20 Stack and Queue Interview Questions (Javarevisited)