Addepar Interview Question

A more OOD like problem, I think it would be much easier if I used python. But I used java, I was panic when I found I can't finish it in java in time.