5 Steps to Successfully Prepare for Software Engineering Interviews
If you prefer to follow along via my YouTube video, you can watch it here
I remember my first few software engineering internship interviews and they definitely did not go well. I received piles of rejections as I tried to first figure out how to study and then navigate the maze of resources I could find online. While I learned programming concepts in my courses, interviews were a completely different ball game.
They required immense practice and a study plan that ensured a solid understanding of many different concepts. Succeeding on software engineering interviews is not just about how much time you put into the interview prep, but also how you use that time. I’ve always been a proponent of sharing my stories with others to help them avoid making the same mistakes I did, so I’ll be sharing my 5 steps to prepare which will help you succeed on software engineering interviews.
If you’re wondering where to start with interview prep, looking for the next step, or just want to optimize your study plan, this article is for you!
Disclaimer: This is for people who are looking for internships or entry level roles. The link to Cracking the Coding Interview on Amazon is an affiliate link and I will receive a commission if you make a purchase using my link. All others are not affiliate links. Without further ado, let’s get to it!
1a. Choose & Learn a programming language
1b. Learn Programming Fundamentals in that language
You should take a course in that language to build basic programming skills. By the end of it, you should be able to understand concepts like data types
, object oriented programming
, etc. You need a solid foundation to build on before you get to more complex topics. Here are two courses (both are free) that will help you learn Java and build these fundamentals: Udacity
2. Learn Data Structures & Algorithms
Data structures and algorithms are the core of every software engineering interview, so you need a command understanding of this topic. There are a few key takeaways you should get from any prep guide on this topic. For data structures, you should understand their uses and time complexity of insert, lookup, and delete operations. For algorithms, understand the time and space complexity of each. You should also know how to write common algorithms (binary search, merge sort, quick sort, etc.) in the language of your choice. Don’t worry if you don’t know what that means, the courses should give you an overview of these concepts. Here are two courses that are again both free and great resources in building skills in data structures and algorithms: MIT OCW (highly recommended)
3. Get a copy of Cracking the Coding Interview
Cracking the Coding Interview
is a book that programmers will commonly refer to for interview prep. The book contains tips on the interview processes, concept review, and interview-style questions. It is a great way to refresh your knowledge that you drew from programming fundamentals and data structures and algorithms. I recommend you start by first reading the content in the book to review, then doing the questions they’ve provided to practice.
“Practice Makes Perfect”. This is the motto to live by when preparing for interviews. I recommend going to websites like Geeks For Geeks
. I especially recommend going on Leetcode because they have questions that have previously been asked by companies on interviews. They have a really nice interface which allows you to code your solution in one of many languages, run & test your code, and submit it to test against a plethora of test cases to ensure your code works efficiently. You should start with the easy problems and work your way to harder questions. For internship and entry level roles, most companies will not ask anything harder than a medium question. On rare occasion, you may encounter a hard question, but you should aim to be able to consistently solve medium difficulty problems. It is important to look for patterns in problems. The whole point of practicing is not to hopefully get the same problem on an interview (if you encounter this, you should let the interviewer know you have seen the question before), but to recognize patterns that help you solve other questions.
Grab a friend and practice whiteboarding with them! If you’re a college student, on campus interviews will require you to write code on a whiteboard. For everyone, companies that have you fly out for final round interviews will have you write code on a whiteboard. This is a very different environment. You do not get code completion features, you cannot run your code, and you cannot look up documentation. It is important to practice in this environment. If you ever encounter not remembering a library function, you can describe it to your interviewer and they might either tell you the name or you can create a name for it that you both agree on. If you do not have a whiteboard, I recommend using a very basic text editor. If you do not have a friend that you can whiteboard with, I recommend using Pramp
, a free service that sets up a video call between you and another person where you take turns being the interviewer and the interviewee. I personally used Pramp to prepare for interviews and I felt it was useful because I got feedback from someone and also got to see interviews from the side of an interviewer. Both of these helped me improve my interviewing skills!
I hope you found this post informative! I plan to cover each of these in more detail in future posts and videos. These are also both my first post and first video, so please leave any feedback you have for me. If you liked the post/video, feel free to subscribe to my YouTube account
for more content like this.
Subscribe to get your daily round-up of top tech stories!