Do I need to create tablespace and also add all datafiles before importing a schema using datapump? Or does impdp add all data files itself first and then unloads data into it?
impdp is able to create the tablespaces. You can even change the location of the datafiles if needed. Check the documentation for more information since there are many parameters with this tool (REMAP_DATAFILES and REUSE_DATAFILES for example).
You need to do the following:
User is created (create user blah identified by blah:)
Create the tablespace (create tablespace blah...)
Put dmp file in dmp directly (usually installation home directly/admin/dpdump) unless you create your own then you'll need to go into sqlplus and create the directory object and use that object as a parameter in impdp (DIRECTORY=myDirObject)
Then run impdpd. It will not create the tablespaces for you in my experience.