A recruiter contacted me on Linked In and I decided to give it a try. The application process consists of a phone interview round, then a video call and finally an onsite interview. Intervals between interview rounds were unreasonably long.
The phone interview actually involves some simple coding questions on Hacker Rank and some C++ questions. The video call round was lead by two guys from London, who also asked me to write some code on Hacker Rank (but this time we did not even compile the code), questions about design patterns, and some questions about my previous projects.
These round went pretty smoothly and I was invited to the on-site interview. It actually consisted of three rounds: one with two team members (again, a coding problem, which caused no problems +questions about my design decisions, possible trade-offs in terms of algorithmic complexity), then a round with HR (non-technical questions, also I was given a chance to ask questions) and another round with a manager (mostly questions about my previous projects). It turned out that the lead of the team to which I applied was ill, so we had to schedule another video call with him.
During this (fourth) part the team lead asked me some tricky systems design questions and I got an impression that I did not do very well. Then I had a talk with a member of another team and finally they told me that I'll need another round with guys from New York office (this round never happened). After two weeks I received a refuse, but the recruiter told me that I really impressed the team, so they will recommend me to another team. I did not receive any more replies from them, except a feedback form.
Conclusion. Pros:
* reasonable and relevant technical questions
* travel expenses are covered
Cons:
* tons of non-technical questions (useless, IMHO)
* took a very long time (unreasonably long)
* communication problems (e.g., a suddenly cancelled round with NY office, no reply about the other team)