(1) Don't take jobs where the company isn't willing to
tell you what you'll be working on. That usually means
you're going to be allocated to the least desirable
projects.
I passed on a job at Google precisely because of this fear. I wonder if they've since changed that practice.
No, they have not. There are very many good reasons why they do things this way - I can elaborate if anybody cares.
However, you do get to talk to 4-5 hiring managers based on your skillset and their interests, and you get to rate them based on the group you want to join.
I've done that and it's worked out pretty good for me.
So Google doesn't let hiring managers interview their direct hires because of incentive mismatch.
(Btw, this is all in the public - Stephen Levy's In The Plex is a pretty good resource)
If you have a fairly impartial interviewer, he's most likely trying to hire competent people - he doesn't have any other sort of incentive except to not hire stupid people.
However, if you're a hiring manager, you're under pressure to produce software and fill open recs. So, if you have an open position, the natural thing to do would be to hire a mediocre person cause hey, he's better than nothing, and we got a hole we need to fill for our next project.
As for my personal experience, I'm a bit of an outlier. I'm older (mid thirties), know a couple dozen people who already work here (know which groups to avoid), and my friend who I've worked for before personally recommended me to his current team (I know I'm landing in a good position).
If you work at Google, keep your head down for 12-18 months. Don't pay attention to big-company politics and (unlike me) stay the fuck away from eng-misc. Work hard and (unless you're on a good project) figure out what transfer opportunities will be available, and which ones will be good. At the 18-month point, try for a promotion. It makes it easier to transfer. If you don't get the promo, you can still transfer; it's just somewhat harder. If your performance ratings are still at "Meets Expectations" you should have a good story as to why. In that case, you need to find that middle ground of (a) making it obvious that your manager's appraisal of you is boneheadedly wrong, (b) without throwing him under the bus.
The objective sign of a decent manager is whether his or her reports get promoted. Good managers (at Google) get their reports promoted and bad managers don't. It's that simple. Look into this when you're evaluating transfer opportunities. If you find that a group has a lot of really good people stuck at SWE 3, stay away from it, even if the work sounds interesting. The truth about Google is that no one will consider you qualified to do anything actually interesting (i.e. you won't be considered a Real Googler) until you climb that ladder a bit, so your first few years should be focused on making Staff SWE. (The Real Googler line is somewhere between Senior and Staff.)
I've worked for large companies that do it both ways. When I knew what group I was going to, it often ended up changing within the first year of my arrival anyway through restructuring, re-prioritization, etc. So I've decided it's generally irrelevant - nice to have, but not actually that important. It's more important to be ok with the larger company culture.
I did that the first two times Google contacted me. The third time, I took the plunge - and I must say, they were great at finding a fit for both my skills and my interests. YMMV, but I don't feel like I've been shuffled of to an undesirable project. I get to work on some pretty cool stuff.
In my (admittedly limited) experience, management at Google listens very carefully if you say to them "I don't think I'll be happy doing that" or "I'm not happy doing what I'm doing." The thing is that you have to be the one to say that. If you let them move you around like an interchangeable cog they will. If you help management find you a job/project you'll enjoy, you'll probably find one.