Phase 1: Online coding test. Have to finish in 3 hours, time is not flexible, they asked when I can start exactly. The test is a coding problem related to dynamic programming. Submitted the solution, didn't hear from the recruiter for two weeks, sent her an email asking about the result, she replied 'yeah, you got selected, lets set up a technical interview'.
Phase 2: Technical interview. Asked a lot of questions about the internal implementation of the Java collection framework and multi-threading.
Phase 3: Another coding test in their office. Asked to sit in a room of 1.5m^2. Yet another problem related to dynamic programming. My solution didn't work, but I was in the right track for sure.
Phase 4: Another technical/managerial interview. Maybe they took the phase 3 as elimination round, didn't asked anything real. I had a feeling.
They supposed to get back to me. Never heard from them. Spent hours on this process, what you could expect is 'a reply'.