Cognizant Interview Question

Explain the difference between an abstract class and an interface in C# and when you would use each one.