data structures and algorithms for interview preparation