First, a short phone call to introduce myself and my background.
Then, a technical interview on Zoom where I was asked to explain my experience and solve a practical coding task.
I was given a data structure representing users and their associated teams: users = { 1: { id: 1, name: 'user1', teams: [1, 2] }, 2: { id: 2, name: 'user2', teams: [1] }, ... }
Along with several black-box functions such as getUsers() - which returns an array of recipients (users and teams) that should receive a specific notification: [ { type: 'user', id: 1 }, { type: 'team', id: 2 }, ... ]
The task was to implement two functions: notifyUsers(userId, msg) - sends a message to a specific user. notification(msg) - which uses notifyUsers to send the message to all users and teams returned by getUsers().
Requirements: Optimize the implementation to handle millions of users and teams efficiently. Avoid redundant notifications (e.g., if a user belongs to multiple teams). Discuss time and space complexity, scalability, and potential batching strategies.
The following metrics were computed from 5 interview experiences for the Monday.com Software Engineer role in Tel Aviv-Yafo, Israel.
Monday.com's interview process for their Software Engineer roles in Tel Aviv-Yafo, Israel is on the easier side as most engineers get an offer after going through it.
Candidates reported having very good feelings for Monday.com's Software Engineer interview process in Tel Aviv-Yafo, Israel.