Applied online, got an e-mail after about 3 weeks inviting me to take part in the 1st round of interviews (expenses paid).
Got to London, first test was a half technical - half analytical problem which I had to give a possible solution (set of algorithms) to. No right or wrong answer, just had to explain what I understood, what possible solutions do I have in mind, and what pros/cons do I have for each. After this, I had 3 interviews with 2 people each regarding my CV, my study, my skills and ambitions in life. Nothing too technical, only questions such as 'describe an experience in which you did not agree with other members of your work group, and how did you solve this'. This whole round was 2-3 hours long.
Got another e-mail 2 days after the first round inviting me to the 2nd round, a week from the 1st. I had another 3 interviews, each with 2 interviewers from different divisions, asking more technical questions, directly related to their division's activity or interest. Had plenty of questions about C, C++, C#, Java, databases, and some questions about networks, mobile development, web frameworks, and graphs (all because I mentioned these skills in my CV/cover letter). Got a call 2 hours after this round asking me to come back to Goldman's offices, since some extra people want to talk to me. Had 2 more interviews, all pretty technical, with programming approaches to various problems those divisions have, and for each answer going on with another constraint, so they would understand my attitude against requirements change (all of them mentioned this as an important fact).
Got the offer after 1 week.