But understanding algorithms and data structures is fundamental to the job, even if you spend most of your time not thinking about it at all. This is important, and failing to realize it is a prime source of hard-to-analyze, hard-to-extend, hard-to-test, and hard-to-maintain code.
An application developer (I'm leaving aside the can of worms opened by "web-app") absolutely should understand at least roughly how a red-black tree works. They shouldn't have to be able to implement one properly for you on a white board, and they shouldn't remember all the details or even the definition off the top of the head. However, given a description and a implementation (perhaps partial) they should be able to work out and describe how it works, why i works, and say something sensible about the issues in properly implementing and testing one, sure. Bonus points for knowing a couple of places they come up in practical use. Obviosly, some exception for the most junior positions.
Even if they get things wrong in the details it can be fine. But not being able to speak sensibly about such a data structure is a significant red flag. Done right, questions like this can reveal a lot about a candidates ability to do the job, even if they never directly do this. (the caveat there being on "done right". This sort of question isn't pass/fail, it's the discussion that is useful)
On the other hand, understanding the details of a TLB really doesn't to me seem to have the same sort of halo effect -- getting into details on this in a software position (with certain exceptions) seems to be more a waste of the time.