Cracking the coding interview: selected answers to practical programming questions