Programming Problems: A Primer for The Technical Interview