Need some clarification on interrupts

The forums I've read (including this one) say that the code is interrupted, the ISR is performed, and control goes back to loop()

What I can't find anywhere is whether the chip starts loop() from the top, or whether it resumes from where it left off..

Can anyone shed some light?

Quick example:

void loop(){
Serial.print("A");
Serial.print("B");
Serial.print("C");
}

void ISR(){
do something
}

Now if ISR is called after the Arduino outputs "A", will it next print "B", or "A" again?

An interrupt resumes at the next machine instruction, not at the top of “loop()”.
Your example will print “B”.

Think of an interrupt as a condition that is tested after every single machine instruction.
If the condition is true, and interrupts are not disabled, then a call to the interrupt service routine is executed, so when the service routine has finished, the next instruction is executed.

Crystal clear, thanks!