My own sister was an Android Engineer at Facebook. They don't necessarily hire you for your Android skills. What they do is they have multiple rounds of programming and design (software architecture design, to be precise) interviews. You can get good at the former by practicing on TopCoder, SPOJ, UVA etc. Software design architecture expertise can only be gained by experience but do check out the various design questions on the internet, you can begin with this one on Hashnode.
TLDR; If you want to get into the companies you mentioned, you need to be kickass at algorithms, you don't need to be good at Android to be an Android engineer at Facebook.