Questions meeting certain criteria are automatically deleted by a scheduled script.
Complete criteria are available at Enable automatic deletion of old, unanswered, zero-score questions after a year?, but the quick summary is that there is:
- a daily check for abandoned closed questions (>10 days old, no net
upvotes, no accepted answer, no recent activity)
- a weekly check for abandoned questions (>365 days old, no net upvotes, no accepted answer, low view rate)
- a weekly check for dead questions (>30 days old, no answers, negative score)
- a weekly check for migration stubs (question moved to another site)
- a weekly check for rejected migrations (question came from another site but was rejected)
If they're closed but don't fall into any of these categories, then as Mitch said, the best way to get rid of them is to Vote To Delete.