As for May 1st: It is always on the exact date, even if that happens to be a Sunday.
You can get an overview of public holidays by region on this site (in German):
http://www.feiertage.net/frei-tage.php
Just choose the region and year, then hit "Anzeigen".