Software Engineering: Preparing for a Coding Interview

So, you want to land a job as a software engineer? The number one reason that applicants do not get a software engineering position (regardless of their academic background) is that they do not prepare enough for their coding interviews. While there are many ways  to prepare, here are some helpful resources:

Coding

  • LeetCode: You can opt to pay for a premium membership and hone your skills through weekly competitions.
  • Cracking the Coding Interview by Gayle Laakmann Mcdowell: This is a great introduction to coding interviews. Be intentional with this practice book by doing the first 4-5 problems in every chapter, picking and choosing additional problems from there. Additional medium to hard problems can be found in the back.
  • The Algorithm Design Manual by Steven S. Skiena: Read Section I (Chapters 1 – 13) and use this as a guide and reference throughout your preparation. Use Section II as a reference when you encounter problems while practicing.
  • Introduction to Algorithms (AKA CLRS) by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein: Use this as a reference when you encounter problems, such as how Dijkstra, Bellman -Ford, and Floyd Warshall algorithms are written.
  • Elements of Programming Interviews in <Language of Choice> i.e. Python is Elements of Programming Interviews in Python: the Insider’s Guide by Adnan Aziz, Tsung-Hsien Lee, and Amit Prakash. Pick and choose problems as needed to supplement your other preparation (e.g. 0-1 Knapsack and variants). Be sure to use the downloadable solutions checker.
  • Grokking concurrency (online, paid, e.g. Python Concurrency for Senior Engineering Interviews)

System Design

  • Grokking the System Design Interview (online, paid)
  • Grokking the Advanced Design Interview (online, paid)
  • System Design Interview by Alex Xu: You may not have time to get into all of the details that could be given in an interview, but depending on where your interviewer wants you to focus, you will have the breadth needed to succeed.
  • Designing Data-Intensive Applications by Martin Kleppmann: This is more tailored toward senior engineers, but a great reference for junior engineers.

If you want to be a software engineer, dedicated preparation for the coding interview will help you to be successful in your interviews. Don’t forget that public forums such as TeamBlind can help with further understanding the interview process, specifically within FANG (Facebook, Apple, Netflix, Google).

By Neena Fink
Neena Fink Senior Assistant Director, Undergraduate Career Development, Pulsifer Career Center