It's surprisingly easy to google for solutions once you know what you're looking for instead of searching descriptively :)
Technically, a homeless person could dig in at a terminal in the library and teach themselves anything they needed to learn about computers. However, first they'd need to know what to look for and by God that was difficult before I spent 4 years talking to people who worked with computers all day. I think my time on Reddit actually enriched me there a bit, too.
I propose a new interview question: How would you code your way out of a paper bag? You will be given several constants, such as the strength of the paper bag, difficulty of tearing, etc, and will be expected to write your own Tear() function and call it properly.
The best part is that when the recruiters/headhunters ask why you rejected a candidate, you can honestly say "he couldn't code his way out of a wet paper bag."
Now, once you can code your way out of a paper bag, then the question is do you have the CSCI fundamentals to apply the best known solutions to difficult problems. Facebook has their pick of the litter, so it makes sense that they might spend more time validating CSCI knowledge, but for most companies that are hiring this would be a very poor metric to go by.