One of my friends referred my name to the hiring manager. However, the whole process has to go through HR. The initial interview was a phone screen, which was quite easy. Questions about my current job, my career path, why Citigroup, etc.
After that it took them about 10 days to get back to me for the second round of interviews on site. The technical interview was somewhat deep (C++/Java) and I met with 5 different people (roughly 30 to 40 min each). A week later, I went for drug testing. About 10 days after that, I got the offer.