if use "granularity: hour" , would timeseries fill empty interior time buckets with zeroes and how ?

If use “granularity: day”,timeseries queries normally fill empty interior time buckets with zeroes.

but if use “granularity: hour”, would timeseries fill empty interior time buckets with zeroes? and how ?

It should zero fill empty hour between the min and max hour for which data is present in query.
If you want to zero-fill data outside the data interval you will need to set skipEmptyBuckets to false in query context.

Related docs - http://druid.io/docs/latest/querying/timeseriesquery.html