various interview style problems and algorithms