data structures and algorithms interview programs