Preface xxv
Introduction xxix
Chapter 1: Before the Search 1
Chapter 2: The Job Application Process 9
Chapter 3: Approaches to Programming Problems 19
Chapter 4: Linked Lists 31
Chapter 5: Trees and Graphs 61
Chapter 6: Arrays and Strings 85
Chapter 7: Recursion 107
Chapter 8: Sorting 125
Chapter 9: Concurrency 145
Chapter 10: Object-Oriented Programming 159
Chapter 11: Design Patterns 167
Chapter 12: Databases 177
Chapter 13: Graphics and Bit Manipulation 191
Chapter 14: Counting, Measuring, and Ordering Puzzles 207
Chapter 15: Graphical and Spatial Puzzles 225
Chapter 16: Knowledge-Based Questions 239
Chapter 17: Nontechnical Questions 253
Appendix: Résumés 263
Conclusion 283
Index 285