Skip to content
Use code for 50% offSee plans
Used by thousands of developers who passed their interviews

Practice Event Emitter

Master the Event Emitter LeetCode problem with undetectable real-time assistance. Get instant solutions and explanations during your coding interviews.

PhantomCodeAI generates complete solutions and debugging hints that you can use while explaining your approach, so you stay calm and in control.

undetectable
real-time
works on major platforms
Medium#2694
LeetCode Problem

Event Emitter

Implement EventEmitter with subscribe(eventName, callback) and emit(eventName, args). Multiple distinct callbacks may subscribe to one event. subscribe returns an object whose unsubscribe() removes that callback and returns undefined. emit calls the event's current callbacks in subscription order with the optional args array spread as their arguments, and returns their results in the same order. Use an empty argument list when args is omitted. With no subscribers, return an empty array.

PhantomCodeAI will help you solve this problem in real-time during your interview

Get instant solutions, explanations, and code generation
Problem Breakdown

Understanding the Event Emitter Problem

Let's break down this LeetCode problem and understand what makes it challenging in interview settings.

Problem Statement

Implement EventEmitter with subscribe(eventName, callback) and emit(eventName, args). Multiple distinct callbacks may subscribe to one event. subscribe returns an object whose unsubscribe() removes that callback and returns undefined. emit calls the event's current callbacks in subscription order with the optional args array spread as their arguments, and returns their results in the same order. Use an empty argument list when args is omitted. With no subscribers, return an empty array.

Source: Event Emitter on LeetCode. Use the original task for its coding environment and submissions.

MediumProblem #2694
LeetCode

Event Emitter

Related Topics

How PhantomCodeAI Helps

Get real-time assistance for Event Emitter problems during coding interviews. PhantomCodeAI provides instant solutions and explanations.

Examples

# Example 1

Input
actions = ["EventEmitter", "emit", "subscribe", "subscribe", "emit"], values = [[], ["firstEvent"], ["firstEvent", "function cb1() { return 5; }"],  ["firstEvent", "function cb1() { return 6; }"], ["firstEvent"]]
Output
[[],["emitted",[]],["subscribed"],["subscribed"],["emitted",[5,6]]]

# Example 2

Input
actions = ["EventEmitter", "subscribe", "emit", "emit"], values = [[], ["firstEvent", "function cb1(...args) { return args.join(','); }"], ["firstEvent", [1,2,3]], ["firstEvent", [3,4,6]]]
Output
[[],["subscribed"],["emitted",["1,2,3"]],["emitted",["3,4,6"]]]

# Example 3

Input
actions = ["EventEmitter", "subscribe", "emit", "unsubscribe", "emit"], values = [[], ["firstEvent", "(...args) => args.join(',')"], ["firstEvent", [1,2,3]], [0], ["firstEvent", [4,5,6]]]
Output
[[],["subscribed"],["emitted",["1,2,3"]],["unsubscribed",0],["emitted",[]]]

# Example 4

Input
actions = ["EventEmitter", "subscribe", "subscribe", "unsubscribe", "emit"], values = [[], ["firstEvent", "x => x + 1"], ["firstEvent", "x => x + 2"], [0], ["firstEvent", [5]]]
Output
[[],["subscribed"],["subscribed"],["unsubscribed",0],["emitted",[7]]]

Constraints

1 <= actions.length <= 10
values.length === actions.length
All test cases are valid, e.g. you don't need to handle scenarios when unsubscribing from a non-existing subscription.
There are only 4 different actions: EventEmitter, emit, subscribe, and unsubscribe.
The EventEmitter action doesn't take any arguments.
The emit action takes between either 1 or 2 arguments. The first argument is the name of the event we want to emit, and the 2nd argument is passed to the callback functions.
The subscribe action takes 2 arguments, where the first one is the event name and the second is the callback function.
The unsubscribe action takes one argument, which is the 0-indexed order of the subscription made before.

How PhantomCodeAI Helps with LeetCode Problems

Reinforce undetectability, platform compatibility, and real-time assistance to remove any doubt.

1000+
developers use PhantomCodeAI
and growing every day
95%
success rate
of users pass their interviews
100%
undetectable
native desktop architecture
Real-time
assistance
instant solutions during interviews

PhantomCodeAI Interface Illustration

Example conversation in the desktop app. The controls below are illustrative.

PhantomCodeAI
Start Interview
⌘I
Online Round
⌘O
Interview
Listening
Think

Help me review my approach and explain its trade-offs.

Start with your inputs and expected result. Compare your approach against the examples, then discuss edge cases and its time and space costs.

Start Over ⌘G
Think & Crack ⌘↵

Undetectability Checklist

Run compatibility test before interviews
Use recommended Zoom version settings
Enable advanced screen capture options
Verify native desktop architecture
Test with screen recording software

Platform Compatibility

Zoom
Supported
Google Meet
Supported
HackerRank
Supported
CodeSignal
Supported
CoderPad
Supported
Teams
Supported

User results and traction

Thousands of developers use PhantomCodeAI. Social proof signals that this approach helps real candidates land offers across a range of companies.

Undetectability and technical details

Our native desktop architecture avoids common detection vectors used by browser extensions. We provide a clear checklist so you can run basic checks and confirm the app will be invisible.

Platform compatibility and limitations

We work with Zoom, HackerRank, CodeSignal, CoderPad and other web-based platforms. Check the compatibility note and request a browser link if a specific desktop app is unsupported.

Frequently Asked Questions

Common questions about solving Event Emitter and using PhantomCodeAI during coding interviews.

How does PhantomCodeAI help with LeetCode problems during a coding interview?
PhantomCodeAI reads the problem from a screenshot or listens to it via audio, then generates a complete solution with a step-by-step approach and time/space complexity, so you can focus on explaining your reasoning rather than getting stuck on implementation.
Which programming languages does PhantomCodeAI support?
11 languages including Python, Java, C++, JavaScript, TypeScript, Go, Rust, Ruby, Swift, Kotlin, and C#. Set a preferred language to get idiomatic solutions.
Does PhantomCodeAI work with HackerRank, CodeSignal, and CoderPad?
Yes — it works alongside LeetCode, HackerRank, CodeSignal, CoderPad, and HackerEarth, plus any browser-based coding environment.
Can PhantomCodeAI handle follow-up questions and modifications?
Yes. Capture the modified problem by screenshot or audio and get an updated solution within seconds, including new edge cases and optimizations.
Is PhantomCodeAI detectable during live interviews?
PhantomCodeAI runs as a native desktop overlay that does not appear in screen shares, recordings, or proctoring software, and works with Zoom, Google Meet, Microsoft Teams, and major coding platforms.
Should I still practice these problems on my own first?
Yes. The most durable preparation is solving problems unaided first, then using AI afterward to review your approach, complexity, and missed edge cases — use it to debrief and learn, not to skip the reps.
PhantomCodeAI

20+ Stealth Features. Zero Detection Cases.

The only AI interview tool with an undetectable desktop overlay, real-time audio listening, and personalized AI responses.