Reported September 2026
Amazonsimulation

E-commerce Notification Router

Reported by candidates from Amazon's online assessment. Pattern, common pitfall, and the honest play if you blank under the timer.

Get StealthCoderRuns invisibly during the live Amazon OA. Under 2s to a working solution.
Founder's read

The Amazon E-commerce Notification Router showed up in reports from September 2026, and the detail that matters is the fixed channel order: EMAIL, SMS, PUSH. It's a simple per-element routing problem dressed up as a systems task. If you've got an OA invite, expect to spend more time reading than thinking. Normal notifications get one channel, urgent ones get all three in canonical order. That's the whole thing. The risk isn't difficulty, it's sloppy reading or a typo in a string constant. StealthCoder sits invisibly on your screen as a safety net if you blank on the live OA, but this one you can likely write cold.

The problem

Implement the routing decision for a batch of e-commerce notifications. For notification i, preferredChannels[i] is the user's preferred channel and priorities[i] is either NORMAL or URGENT.
A NORMAL notification routes only to the user's preferred channel.
An URGENT notification routes to all channels in the fixed order EMAIL, SMS, PUSH.
Return one channel array per notification. Implement only the routing decisions; delivery handlers and delivery success are outside this task.

Function
routeNotifications(preferredChannels: String[], priorities: String[]) → String[][]

Examples
Example 1
preferredChannels = ["EMAIL","SMS","PUSH"]
priorities = ["NORMAL","URGENT","NORMAL"]
return = [["EMAIL"],["EMAIL","SMS","PUSH"],["PUSH"]]
The normal notifications use their preferences, while the urgent notification is sent through all three routing channels.
Example 2
preferredChannels = ["PUSH"]
priorities = ["URGENT"]
return = [["EMAIL","SMS","PUSH"]]
Urgency overrides the preferred channel and selects every channel in canonical order.
Example 3
preferredChannels = ["SMS","EMAIL"]
priorities = ["NORMAL","NORMAL"]
return = [["SMS"],["EMAIL"]]
Each normal notification produces exactly one route.

Constraints
1 <= preferredChannels.length == priorities.length <= 10^5.
Every preferred channel is EMAIL, SMS, or PUSH.
Every priority is NORMAL or URGENT.

Reported by candidates. Source: FastPrep

Pattern and pitfall

The pattern is plain simulation over two parallel arrays. Loop through index i. If priorities[i] is URGENT, append a fresh list [EMAIL, SMS, PUSH]. Otherwise append a list containing only preferredChannels[i]. Time is O(n) and output size is bounded by 3n, which is fine at 10^5. The common pitfalls are small but real. Don't reuse one shared urgent list object across results, since mutation downstream can bite you in some languages. Don't sort or dedupe channels, the order is fixed by the spec. Don't build delivery handlers or simulate success, the statement explicitly excludes that. Check exact string casing. Example 2 is your sanity test: PUSH preferred but urgent still returns all three. If you freeze on syntax or the return type for a nested array, StealthCoder is the hedge during the live OA, but the logic fits in about six lines.

StealthCoder is the hedge for the one pattern you didn't drill. It runs invisibly during the screen share.

If this hits your live OA

You can drill E-commerce Notification Router cold, or you can hedge it. StealthCoder runs invisibly during screen share and surfaces a working solution in under 2 seconds. The proctor sees the IDE. They don't see what's behind it. If you're reading this with an OA window open, you're who this was built for.

Get StealthCoder

Related leaked OAs

⏵ The honest play

You've seen the question. Make sure you actually pass Amazon's OA.

Amazon reuses patterns across OAs. If you're reading this with an OA window open, you're who this was built for. Works on HackerRank, CodeSignal, CoderPad, and Karat.

E-commerce Notification Router FAQ

How hard is the Amazon Notification Router OA question really?+

Easy. It's a single pass with one branch per element. The difficulty is reading carefully, not algorithmic insight. If you can write a loop and build a nested array in your language, you can finish it in a few minutes and spend the rest on edge checks.

What's the trick to this problem?+

There isn't one. URGENT returns [EMAIL, SMS, PUSH] in that exact order. NORMAL returns a one-element list with the preferred channel. Resist overengineering with classes or handlers, because the statement says delivery is out of scope.

What's the time and space complexity?+

Time is O(n) since you visit each notification once. Space is O(n) for the output, with at most three strings per entry. At n up to 10^5 that's trivial. No sorting, hashing, or extra structures are needed.

What edge cases should I test before submitting?+

Test a single urgent item with a non-EMAIL preference, like Example 2. Test all-normal input, like Example 3. Test a mixed batch, like Example 1. Confirm each urgent result is its own list and the channel order never changes.

How do I prepare for this in 48 hours?+

Practice writing array-of-arrays output in your chosen language and doing quick conditional mapping over parallel arrays. Then solve a few simulation-style problems for reading speed. This one is mostly about careful spec parsing, so reread the statement once before you code.

Problem reported by candidates from a real Online Assessment. Sourced from a publicly-available candidate-aggregated repository. Not affiliated with Amazon.

OA at Amazon?
Invisible during screen share
Get it