Pros
The company really cares about its employees, great benefits, perks and great campus, work-life balance is really good too. You get to work in the products millions use, and if you love MS technologies... well, you are using/creating them.
Cons
If not a real fan of Microsoft technologies, consider yourself tied up, you won't work on anything else other than MS specific technologies/environments. Makes sense from the "protect your own brand" point of view, but I found it really annoying to be closed to great technologies you have access in all the other companies (let's say, to use Ruby/Python for a side team stats project, you will probably be looked at like a weird being). That for sure makes you fall behind other engineers in the market, limiting your scope of development. The so known calibration at the yearly performance review creates a working environment of "I won't help you because I don't want you to be above me", and I really felt that, I was even criticized for helping other teams in my organization because I should had give total priority on my team (it's not that I was not doing anything for my team, but I was the one that could help the other teams and that also benefited us).