# 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?