Interviewing candidates is hard. I know because I've done it before. It's much easier to have a boilerplate CS 201 problem that you give to every candidate vs tailoring the interview to each candidate each time. However, I've hired some of the smartest people I know based on this tailored, specific to the business, approach. Most of the candidates I helped hire were still at the company when I left.
If you do boilerplate CS questions you'll get either students right out of CS programs that have these concepts fresh in their minds or people that have been unemployed for a while who have brushed up on their algorithm skills via Cracking the Coding Interview. Maybe these are the types of people you want because they might be cheaper? Most of the software work I've done in the past 7 years has been taking existing frameworks, libraries, systems and adding in some custom logic. Maybe that custom logic becomes a new library on its own and maybe not. You know what's more important to me than the ability to solve Fibonacci? Do you write clean, documented code? What is your ideal software development methodology and can you ship code in that environment? Do you test? Are you a dick or not? What does your gitHub account look like?
Software development employment isn't college. The hiring process shouldn't be a "hazing" as others have stated. I recently had an interview where I as the candidate partially spaced out a problem that was similar to Fibonacci (duh on my part). However, at the end of it the interviewer I think recognized the situation and said "We are all a team here and we help each other out. I'm OK if you are a little weak on generic algorithms in this situation because you know things I'm weak on." That was a good experience and hopefully I'll get a chance to be on that team.
Overall, I'm guessing most companies out there aren't trying to solve "Google" like problems. We should stop interviewing like we are.