*Note: This article was originally published on Medium, but was ported to dev.to with medium-to-markdown.
*Note: Jump to the section labelled “A Better Plan” if you want to get to the point of the article without all of the history hub-bub.
Okay… This last part of the title might be a bit of a stretch, since my journey actually took me a little over a year. Perhaps one day, we might cure aging and one year will become a meager drop in the plentiful bucket of fruitful, healthy years. Worry not though, I firmly believe that you can get an internship and in a manageable amount of time.
This article will walk you through how I approached my first and final year of internship searching, where I messed up, and what steps led me to prevail over my goals. I made a lot of erroneous decisions and wasted a ton of time.
My goal here is to let you know what **didn’t **work for me, then to show you what did. Maybe I’ll help you save some of your precious time and stress. Maybe you’ll think my process is kind of “cheat-ey”, but it worked for me and I know that it works for plenty of others too. But hey, the system is broken for allowing this kind of system, so I prefer to call it optimized. Even if I only save 1 day during your internship search, if 10 people read this, that’s 10 whole days saved in the world. As the number of readers grows, the number of days saved does too — that’s O(n) growth.
I’m going to make the assumption that you have are at least at an… intermediate level of programming knowledge: that you have at least some general knowledge of the data structures and algorithms that you’ll be using and know which programming language you’re going to use for the tech interviews.
Use python for most things, it has so many w̶o̶n̶d̶e̶r̶f̶u̶l magical capabilities and you don’t have to write as much stuff if you’re white-boarding. Writing stuff? Yeah, I hate that too. Plus, all the other CS nerds tell me that it’s the best thing to use.
I trust the nerds this time around.
- Me, at this current moment
I went into my first interview season just after finishing up my third Computer Science course. I had never programmed, nor had I known anything about programming a year prior. For the intent of this article, I’ll call that an Extremely Short Amount of Time; that’s the stretch I mentioned earlier. However, if you’ve already gotten that ‘general knowledge’ I mentioned above then *congratulations, *you’ve already made it 80% of the way through this thing! Pat yourself on the back and go do some stretches: we’ve got some work to do.
My initial approach to getting my internship included *sending out 300 applications while nearly delirious from a lack of sleep, dabbling in and getting frustrated with random Leetcode problems a couple of nights a week, *and wondering if I belonged in this industry when I’d get rejection after rejection and not be able to solve any of the interview problems I was faced with.
To sum up the first part, I would shotgun out applications one after another late at night when I had no energy to do anything else. Pop onto YouTube, Netflix, or whatever streaming platform you use and try following this tutorial from FreeCodeCamp.
This was probably the best part of my first approach. There’s honestly not much that you can offer as an intern so it’s nearly up to the luck of the draw. Luckily, a lot of the bigger companies are willing to at least give you the chance to interview, especially if you can get some conversation going one on one.
The second part is where I really messed up. I’d hop onto Leetcode, a technical interview prep platform, randomly throughout my week and sort all the problems by acceptance rate. I kept telling myself, “I just need to keep going and get through most of the problems on the platform. Then I’ll be ready.” I was astonishingly delusional. With such a lofty goal, I might as well have said, “I’m going to run a marathon next week.” — I don’t run like that. I will be explaining a much healthier, more manageable approach to preparing for technical questions in a bit.
The third part reflects more on my own morale during that period of time. It really, really sucks to get ghosted, instantly rejected, and seemingly led on by companies. After all, you’re trying to get some experience so that you can make a difference in the world. It’s soul crushing to have your ambitions stifled. Crush your soul more than a few times and you’ve got a full blown crisis.
This is me letting you know that no matter how many times you get rejected, how many people, including your classmates and professors, make you feel like you don’t belong here, and how hard you have to grind to get something that some others just “get”, that you still belong here. You belong here just as much as every other intelligent individual who finds an interest in click-clacking on a keyboard to make cool things happen.
You belong here.
It was a rough couple of months. I didn’t, and still don’t enjoy doing Leetcode problems, for the most part. I felt like all hopes were down the drain until I heard an intriguing strategy from someone who had previous success at getting offers from Google and Facebook.
Forget dabbling in random Leetcode problems. That’s a fool’s game.
Forget sorting by acceptance rate. That’s just asking to waste time on the easy problems that aren’t getting asked in interviews.
May I present to you: A Targeted Study Plan!
Note: This technique will most not work for smaller companies, since they will be less likely to ask problems like these.
First of all, let’s say that you’ve got an interview coming up. Nice job so far! I’m going to use Microsoft as an example, since they’re a pretty nice company. 😊 This step gives you a couple of options going forward.
The first option involves purchasing Leetcode premium and using the company tags, sorted by frequency to find the most commonly asked questions for the upcoming interview. Alternatively, you can do what I did and simply search the Leetcode discussion boards for a helpful posts that contain the same collection of questions, usually sorted by frequency. The “buy Leetcode” option is a pretty self-explanatory process, so I’ll go over the second option here.
So, head onto Leetcode and click on the ‘discuss’ tab. Luckily enough, there is are some nice folks that have pinned an ever updating list of interview questions from some of the bigger companies. Since, in this example, I’m using Microsoft, go ahead and click on the link for their question list.
Now that you’re there, you now have access to all the questions that were recently asked by Microsoft. Chances are, they will pop up in your interviews too! Work through them one by one and learn them well. By well, I mean make it a goal to be able to at least solve 90% of the questions with sub-optimal solutions.
But wait, there’s more!
Instead of trying to work through the problems blindly, I recommend taking a bit of time to read through the problems, try to think up your own solution without any code, and then looking at the the real solution! (Or the discussion posts for each question, which may be a hit or miss experience)
After you’ve gone through each of the questions and made a good attempt to understand **why **each solution works, grab a friend for some mock interviews and follow this process:
Have your friend pick a random question from the list.
Have your friend comb through some of the solutions so that they can be familiar with them and can help guide you just like an interviewer would do in a real interview.
Do the mock interview on a live-video chat in a google doc or in person on a whiteboard/piece of paper. To conduct a good mock interview, check out this example to get a feel for how a good interview will go.
Repeat steps 1–3 a few times in the few weeks leading up to your interview.
I firmly believe that if you follow this process and continue to work on solving randomly picked problems independently, you’ll find that your interview is a piece of cake. Chances are, you will be asked one of the problems from the list, in which case, you can work on talking your interview through your solution. If you receive a problem you haven’t yet encountered, you might have seen a similar problem previously and may be able to work your way through it.
You have every tool to your disposal and know how to use them optimally. So set up your plan, go have a good stretch, and get ready. You’ve got a successful tech career ahead of you — all you have to do is crush your interviews this Fall.