In general, it's a quite long and challenging process. The recruiter gave me feedback on the phone after each round which was useful and valuable.
The interviews had 3 rounds with ~1 week breaks between the rounds:
1) Short phone interview with the recruiter, general questions about experience, motivation, expectations
2) Technical interview on Hangouts that lasted for 1 hour: they asked me questions about Java, OOP, rest API, databases, design patterns etc. The questions were theoretical, university exam style. It was difficult, but it's possible to prepare for such questions in advance. After that, I had to solve a short and quite easy algorithmic programming exercise on an online platform while the interviewer was watching me writing the code.
3) A full day of interviews (9am-4pm), all remotely on Hangouts now, where I had 4 sessions with different people of the company:
a) Soft skills: As it was early in the morning at the beginning of the day, I don't exactly remember what they asked, but it was about my previous experiences, my current situation, my goals, etc. and some questions about my personality.
b) Pair programming: Solving one task (finding coordinates in a map) with 2 developers. One of them gave remote access to his computer and I had to finish and correct an unfinished program while thinking out loud. This was a stressful and challenging part of the interview because they were watching me and I had to understand the whole structure of the program on the fly. The task itself was not so difficult, but I wasn't able to solve everything without their guidance. I also had difficulties with the remote access and controlling the computer because it was mac OS although I asked for Windows when they asked me what I prefer.
c) Whiteboard: 3-4 logical, algorithmic tasks which I had to solve on a virtual whiteboard in front of 2 developers, and also write some Java implementation on the whiteboard (focusing rather on the solution, not the exact syntax). For me, it was the best part of the interview because it tested how I think and how I can solve random problems. These problems require logical and mathematical skills and I guess there is no way to prepare for them.
d) Behavioural: A conversation with a team leader who was pretty casual and made me feel comfortable. They wanted to assess my way of working and personality. They asked me those typical targeted questions about my previous experiences and I had to give examples from my past jobs. Usually, I don't like these questions, but here it was more like a real conversation so it was a good experience.
The process lasted for 5 weeks and in the end, they didn't hire me because of my insufficient level in Java and practical programming experience. But in general, the recruitment process was a positive experience.
After the whole process, I felt that I could have done better if they gave me some opportunities to prove myself in writing or do a programming assignment as well. Something I could solve by myself, show that I can learn fast and take my time to think about my answers to the behavioural questions as well. Instead, I only had phone and video interviews which in general aren't the biggest strength of programmers.