A recruiter contacted me through LinkedIn, I scheduled a phone screen with a manager.
Phone Screen (40 minutes): I had to solve an easy algorithm problem, I solved the problem in around 20 minutes, then, the manager asked me a lot of random questions about Java, Spring, HTTP, Servers, how the internet works, etc.
Onsite:
1. Interview with 2 engineers: some algorithm problems that I had to solved on the whiteboard, they also asked me a difficult system design problem.
2. Interview with 2 engineers: one algorithm problem about recursion on the whiteboard. I also had to solve a thread problem using an IDE on the computer, this part of the interview was awful for me because the engineers were chatting with each other on a laptop, that was very disrespectful. I had some bugs on my solution that I couldn't fix.
3. Lunch with a manager: nothing special here, we talked about my experience and talked about tech.
4. Interview with a manager: the manager explained to me what was the project about, after he finished, he asked me about my experience, when I started talking, his face and attitude changed, that was weird.
5. Interview with the hiring manager: questions about my previous experience, behavioral questions.
Got rejected after 3-4 days.