Pergunta de entrevista da empresa Nubank

Multi level OOP style coding question in increasing difficulty