I went through the 5 stages of interviews: a screen call with a recruiter, a coding interview, a tech discussion, a system design interview, and a team fit interview. I passed all stages but haven't received an offer or proper feedback. I literally received the statement, "We have concluded that another candidate was more closely aligned with the job requirements and to our team." This is really weird, considering I somehow managed to get to the final round, which is team fit. What was the point of all previous stages if you rejected me on what I consider to be a mere formality?
I am almost sure they didn't find another candidate because they hire all the time.
But this is all speculation because I didn't receive proper feedback, which is not cool, Revolut.
For anyone who really wants to waste their time, the only interview that is "hard" to pass is the coding challenge. It is "hard," but not in the way you think. They will give you one of two tasks: write a simple load balancer or a TinyURL implementation. These are pretty straightforward problems. The hard part is that the interviewer will nitpick every decision you make. For example, in a problem that stated only 10 instances were allowed and you needed to constrain it, a normal solution would be to have a capacity field passed in the constructor, with binding and validation logic happening outside of the load balancer constructor (in a factory or, if using a container, in a configuration class). I did this. But the interviewer said that this was really bad and that the problem stated you should limit it with a hardcoded static value of 10 and not any other way.
The other really weird complaint was that I used a Set for deduplication of instances instead of a List. The quote was: "Because we have a constraint of 10 max instances, the proper collection for this class is an ArrayList, not a HashSet, because checking 10 instances is constant time." I was so pissed off that I wanted to end the interview at that point. I mean, you expect me to write this kind of code for you as well?
All other rounds were okay, nothing challenging or weird. So, focus on the coding part and try to do everything as dumb and simple as possible so the interviewer wouldn't have a chance to nitpick any of your decisions.
But for anyone else, just don't waste your time, unless you really want to work there for some reason.
P.S. I got an offer from Google, so I guess I'm senior enough for them.
Implement a simple load balancer with a maximum of 10 instances and support for different load-balancing strategies (round robin and random).
Tech discussion, mostly about databases, indexes, etc.
Write a simple, thread-safe, and lock-free money transfer service. This is a classic problem; just order it.
System design: Design a system that integrates ordering, tracking, retry logic, and all the usual components with a third-party manufacturer for physical credit cards.
The following metrics were computed from 2 interview experiences for the Revolut Senior Software Engineer role in Kraków, Poland.
Revolut's interview process for their Senior Software Engineer roles in Kraków, Poland is extremely selective, failing the vast majority of engineers.
Candidates reported having mixed feelings for Revolut's Senior Software Engineer interview process in Kraków, Poland.