Epicor Software Interview Question

What are the following... - Design Patterns - Dependency Injection - Abstract classes/methods - Sql joins and optimization