I was referred by another engineer.
I had a very brief phone screen and immediately scheduled an onsite interview after selecting the position to apply for.
My first day consisted of three 45-minute interviews:
Two involved writing code for text/string problems (no specific details because of an NDA). They weren't especially challenging but increased in difficulty and constraints over several iterations of problem revision. No super complicated data structures were necessary, from my impression; just writing very tight, clean code correctly and reasonably rapidly, around 20-30 lines. There was also a very short discussion of runtime and space.
I wrote in C, but I have a feeling C++ or Java was preferred. I explained how such convenience APIs (Java Queue, C++ map, etc.) worked under the hood and basically reinvented them in C. I feel a better approach would have been to just use them and mention in passing how they work.
My third interview was troubleshooting a site deployment problem. I isolated components and talked specifically about how I would pinpoint and solve problems related to networking, load, etc. We went through different hypothetical scenarios and how they affect users.
I then had a second round of interviews consisting of three more interviews and a lunch on a separate day.
Nothing specific because of NDA.
The following metrics were computed from 32 interview experiences for the Google Software Engineer role in Pittsburgh, Pennsylvania.
Google's interview process for their Software Engineer roles in Pittsburgh, Pennsylvania is very selective, failing most engineers who go through it.
Candidates reported having very good feelings for Google's Software Engineer interview process in Pittsburgh, Pennsylvania.