Well, in addition to what was said, you should use HAVE (present perfect) when the action you're talking about happened in the past and still continues in the present, for example: She has worked in the hospital since last year... in other words, she began working last year and she still works in the present time!
While DID (or past simple) means that the action finished in the past!
example: she worked in the hotel. (she left her job)
So I think that it depends on whether he still knocks or not? I think he doesn't ;) !!!