I currently work at Google. Before that I worked at Amazon.
The typical way to get hired as a developer at these companies is as follows:
1 – Get an interview – If you’re already established in industry their recruiters are likely already pinging you if you’re on LinkedIn or other job site. Otherwise referrals are a good way to do this.
2 – Pass the interview – to do this you need the following:
a – Be a good coder in a widely used industry language. Java is a very good choice in that regard. Most interviews will let you choose the language as long as it’s one of the commonly used industry languages (Remember the interviewer does need to be able to assess you!).
b – (Probably most important). Be able to solve tough problems using data structures and algorithms. The bookinterview is a great resource for this.
c – (For more senior candidates) – be able to answer design questions. Also domain specific questions based on your experience / the job description – such as distributed systems or networking.
3 – Act like someone that other people want to work with. Communicate clearly. Show passion. Be confident AND respectful. I can’t tell you how many good coders fail at this.
Final note. If you’re strong enough to work for these companies, then programming languages selection is not that important. You will be using multiple languages in your day to day job and will be expected to pick up new ones as needed. If you’re still thinking about language selection than I would say you’re probably not ready. Focus on the problem solving and the language selection will become a detail.