Although I failed the 3rd interview (system design), this was one of the most professional places I had interviewed for.
Everything is explained very thoroughly, and feedback is given after every interview (to you, and by you).
There are 5 interviews.
The interviews are a simple coding challenge, end-to-end (no code), system design, group leader, and HR.
Knowing Monday.com's product really helps.
For each interview, I prepared by designing the components myself and considering the tradeoffs. This really helped.
1st Interview code challenge - You are tasked to implement a feature for sending notifications to users. Input: A string containing text, and tagged users and team such as "@user_a", "@team_foo". You are also given black boxes such as get_users which returns all the users and their teams, and send_notification which does the actual sending (no need to implement, only print).
Assume the string can be very large. Same for the output of get_users.
End to end interview: Implement the backend logic of item reorder.
So if you have a board with 5 items, and a user drags an item from position 3 to position 1 (or any other) - how will you handle it?
Assume many items, assume boards are always active, assume real time updates are expected (if client A makes a change, client B needs to see that change).
The main challenge this interviewer chose to focus on was how to organise the data in the DB.
How will you handle organising the data effectively without the overhead of reindexing the data on each reorder?
3rd interview - system design.
I failed this interview. Mostly because I did not fully understand the questions that were asked, and I expected the interviewer to ask the questions and lead me to what he wants to know.
He interpreted it as if I don't think about the things (such as failure points) on my own.
So find a good balance between not talking enough, and talking too much about things the interviewer doesn't want to know.
The question:
The board and board DB services exists (black boxes). Also, a team has created an automation service, with a DB, called automation config.
Questions:
How will they communicate (why choose q/msg bus over HTTP)?
What event will you send from backend to automation service?
How will the job get done (worker, pass tasks to msg, worker msgs back on success/fail)?
How will you implement a mechanism for automations with more than 1 action: do A,B,C if B fails, and you need to stop C from happening?
What tradeoffs does messaging have in general?
Specifically, I was asked if a msg is sent to consumer, and consumer fails to ACK, what will happen when they communicate again (dual processing, took me some time to answer as I didn’t really understand the question).
The following metrics were computed from 10 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 very selective, failing most engineers who go through it.
Candidates reported having very good feelings for Monday.com's Software Engineer interview process in Tel Aviv-Yafo, Israel.