I've learned a lot from this webdeveloper.com site. Try this:
1. Read the next question down the list.
2. Think about it for a while and try out whatever you think might work.
3. Compare your answer with whatever answers already exist.
4. If your answer is better, post it, otherwise, learn from what is posted.
5. Go back to step number 1.
You'll never find a book with this many questions and possible answers.