It will run till the job's Execute method finishes (or errors out :-D).
If the runtime is longer than the interval specified, SharePoint will skip that next interval, meaning it'll check for running instances when it's time to start the job again. If there's still a running instance, no new instance will be started.
A good example that shows this behavior are the Alerting timerjobs. These Web Application scoped (out of the box) jobs are scheduled to run every 5 minutes.
Seeing as they are web app scoped, if that webapp would contain a huge amount of sites, lists, users etc, there could potentially be an exponential amount of alerts (user X items added X lists X sites...). So if they were to run strictly by schedule every 5 minutes, you could get alerts maybe 2, 3 times. So the job is just not fired while an instance is still running.