I applied through a staffing agency. The process took 3 weeks.
The interview process for the contractor role was a live coding session and then a system design round. The coding was really easy, and I finished the full test in 15 minutes. The interviewer said I was the quickest so far. This round was a really easy one, and the interviewer was also really good.
Then I moved on to the final system design stage, where I had to design a system to display the real-time top 5 songs based on events received in real time from different music devices. I had the worst experience here. I suggested multiple options to the interviewer and then told him I would probably go with ksqlDB, which is a streaming SQL engine for Apache Kafka. The interviewer was surprised about this option and had not heard of ksqlDB or Kafka Streams. He was very adamant that it can't be used for millions of events, and I told him repeatedly that it is being used by companies like Netflix. Then I told him about the internals, that these get stored in RocksDB, which backs all of your stateful operations. He kept on arguing, saying RocksDB is a time-series DB, but I told him no, it is a key-value store, and I googled and showed him the proof.
At this time, I told him, "Never mind, if you are not happy with me using ksqlDB, I can go with a custom solution." But he kept on insisting again to go with the original option of ksqlDB as he wanted to know more. He kept on asking me internal questions about how it stores the state, which I explained to him, and how it writes a changelog back to Kafka so that it will be replayed again in case of partition imbalances. I know he didn't understand anything I was explaining and was also not allowing me to explain the custom, non-optimal solution he was looking for.
I was in a very difficult position. Not knowing something is fine, as we are all learning every day, and there is always space for improvement. However, you have to be open to listening to new and better ways, not think that what you have is the best solution, and always have an open mind. Otherwise, you won't develop yourself in the long run. At the end, I had decided that I was not going to accept even if they offered. The interviewer asked me if I had any questions regarding the role or the company, and I just said no, I don't have any questions.
One note to the HR: it would be good to run internal training and probably prepare the interviewers to have an open mind for solutions to eliminate any kind of bias. After the interview, I did ask ChatGPT for the solution, and it did give me a solution almost similar to mine using Kafka Streams and ksqlDB. In short, it was the worst experience for me, and I would never apply again as I don't want to be a part of this kind of closed culture.
Find out the top k hitters in an event-driven system.
The following metrics were computed from 1 interview experience for the Monzo Senior Software Engineer Contractor role.
Monzo's interview process for their Senior Software Engineer Contractor roles is extremely selective, failing the vast majority of engineers.
Candidates reported having very negative feelings for Monzo's Senior Software Engineer Contractor interview process.