# Review matierial ## Data Structures & algorithms - Linked Lists - Trees and Graphs - Arrays and Strings - Sorting ## Concepts - Recursion - Concurrency - Object Oriented Programming ## Design Patterns - Inheritance and interfaces - Possible multiplicity - Dynamic binding - Builder - Singleton - Iterator - Observer - Decorator - Constructor Pattern - Module Pattern - Revealing Module Pattern - Mediator Pattern - Prototype Pattern - Command Pattern - Facade Pattern - Factory Pattern - Mixin Pattern - Flyweight ## Concept questions - INTERFACES AND ABSTRACT CLASSES - What is the difference between an interface and an abstract class in object-oriented programming? - VIRTUAL METHODS - What are virtual methods? Why are they useful? - MULITPLE INHERITENCE - Why do C# and Java disallow the multiple inheritance of classes? - RESOURCE MANAGEMENT - Suppose you have a function that needs to access a limited system resource. The code must call an API function openResource to obtain a handle to the resource, and must pass this handle to a function closeResource when it’s done. How can you ensure that closeResource will be called in all cases and the resource will never be leaked?