I got a home assignment by e-mail and after completing it, had a Skype interview with their talent specialist followed by a Skype interview with one of the programmers and then another on-site interview. The steps were separated by a week from each other.
The first programming interview consisted of a skill test in CSS, Javascript and Java (just like the home assignment). The on-site interview was long and had two parts: one with the same programmer from before (in CSS and Javascript) and another with two other programmers from the team (in Java). They asked me to write code on a whiteboard and then to answer questions about the specifics of Java.
The job description stated that knowledge and experience in either C# or Java is required. I have a stronger background in C# and stated it clearly from the beginning. They proceeded with the process even though it was clear that they were only using Java. I was able to answer all their Java questions correctly, but then was rejected due to insufficient Java skills. It was indeed a waste of time to drag it on for a whole month with several subsequent stages after I have made it clear from the beginning that I don't have much experience in Java but can pick it up quickly as I have demonstrated in the assignment and the interviews. They didn't hire me even though they admitted that all of my answers were correct.