How to share menus and blocks across domains, but not users and content data? I'm trying to create multiple sites(maybe over 20 sites) using the same menu and some blocks, but not others.

I found these modules that have very similar features/functions:
- Domain Access.
- Domain Menu Access.
- Domain Blocks.

However, I don't want to share the users, content and other data.

Also, for each of the domain, I would like to have their own Drupal backend.

What is the easiest and effective solution?
There really is not "Easy" way but you are on the right track. From your description it sounds like you need to be using Domain Access. In order to share content all sites need to be using the same shared database. As for content/users, you will have to configure your data and users to not be shared across all domains. These are all permission settings that can be set from Domain Access. Set each user to only have access to a specific domain. And set each content type to be visible for the domain it was created under.

With domain access you can have a different theme set up for each domain, so that will help you have a different "backend" experience for your authenticated users. So to answer your question, Domain access is the most effective apporach for this type of scenario. Its all just a matter of configurations and permission settings.