Programming Problems in Java: A Primer for the Technical Interview