Hiring Process Interviews
First Round
- Hiring Process
- IT team structure
Second Round
- IT team structure
- Job description
- Have to talk to management?
- Have to gather requirements?
- Code only?
- Nature of the system?
- Web
- Large System
- Distributed
- Code what?
- Infrastrucure?
- System Architect?
Design Patterns
Creational Patterns
Builder
class Pizza:
def init(self):
def str(self):
class PizzaBuilder
def init(self):
def set_size(self, size):
def add_cheese(self):
def add_pepperoni(self):
def add_bacon(self):
def build(self):
pizza = builder.set_size("Large").add_cheese().add_pepperoni().build()
Factory
class DataProcessor
def process(self)
class DatabaseExtractor(DataProcessor)
def process(self):
class APIExtractor(DataProcessor)
def process(self)
class FileExtractor(DataProcessor)
def process(self)
class DataProcessorFactory:
def create_data_processor(source)
Structural Patterns
Adapter
class MediaPlayer:
def play(self, audio_type, filename):
class MediaAdapter(MediaPlayer):
def init(self, audio_type):
def play(self, audio_type, filename):
class AudioPlayer:
def play(self, audio_type, filename):
FlyWeight
Car Objeto Carro + Objeto Dono
class Car:
def display_details(self, owner):
class CarFlyweight:
def init(self, shared_state):
def display_details(self, owner, extra_object):
class CarFactory:
def init(self):
def get_flyweight(self, shared_state):
** Client code **
if name == "main":
car_factory = CarFactory()
shared_car = Car("Toyota", "Camry", "Blue")
flyweight2 = car_factory.get_flyweight(shared_car)
extra_object1 = "Object A"
flyweight1.display_details(owner1, extra_object1)
Behavioral Patterns
Command
class Command(ABC):
def execute(self):
class Light:
def turn_on(self):
def turn_off(self):
class TurnOnCommand(Command):
def init(self, light):
def execute(self):
class TurnOffCommand(Command):
def init(self, light):
def execute(self):
class RemoteControl:
def init(self):
def set_command(self, command):
def press_button(self):
Decorator
def log_decorator(func):
def wrapper(*args, **kwargs):
class Calculator:
def add(self, a, b):
def subtract(self, a, b):