Complex Java Interview Coding Problems