Complete Guide — Getting a Software Engineering Internship at Google, Amazon, …
Internships are a great way to learn and to see if you would be a good for a company!
I was luckily able to get many offers, including offers from Google, Amazon, etc, and will give a somewhat anecdotal explanation of the recruitment process. Through this article, I hope everyone can get a better understanding of the process and be more confident about their next recruitment journey.
Background — I applied to more than 500 internship positions and heard back and got an interview for around 30 of those 500. The interview processes for most companies were very similar so I will talk about the overlapping interview process step by step. I did not get any referrals and did not reach out to any recruiter. I applied to 500 companies on their website.
The internship recruiting process is in two cycles.
- The first cycle is from late August to early December.
- The second cycle (less popular) is from January to April.
— I recommend applying on websites as much as possible in August and sending out emails to recruiters that you have contact with. This gives you a headstart in the interview process, and if you have expiring return offers from previous internships, you can act fast and interview fast with other companies before it expires. —
Ways to Apply
- Apply online — this is the fastest, quickest way to apply. You can have success with this if you have a decent resume.
- Reach out to a recruiter — this is a good way to get your resume directly into the resume’s hand. I suppose this is a form of networking, so however you get the resume to the recruiter, do it!
- Referrals — Referrals are generally a good way to get your resume to be read by the recruiter. They put you at a higher / different resume pile.
- Linkedin — Linkedin has a lot of internship application recommendations. I would look into this platform
- Jumpstart — not the best platform, but also another way you can apply to some companies
- Intern.supply — this has a long list of companies that are hiring for cs majors
- Handshake — Your school might have a platform where you can apply directly to companies
- Career Fairs — If your school is large, then this might not be a great way, but if you can get contact information from some recruiters you meet there, that is always great!
- Manual Application — If you have any companies in mind, go on their website and see when their application opens. This is usually the easiest/best way
- The first part of hearing back from a company was being sent a coding challenge either from Hackerrank or some other third party coding platform. I noticed that you usually move on to the next round by getting a perfect score on the coding challenge. However, there were times where I didn’t get a perfect score and I still moved on to the next round and there were also times where I got a perfect score and was not moved on to the next round.
- The next part was usually a ~1-hour phone interview consisting of a technical coding challenge. None of these interviews asked for my knowledge in complex algorithms like Bellman-Ford or Hopcroft Karp. They were purely testing my problem-solving ability and my ability to write code. Also, they sometimes asked for my knowledge in simple data structures that are taught in all undergraduate data structures classes. For example, they will ask what a HashMap looks like and how that is implemented, etc.
- Usually, when you do well on the phone interview, there are either more phone interviews or an onsite interview. 9 companies out of 10 do not have onsite interviews. They usually have 2–3 phone interviews and once you do well in those interviews you are accepted. The onsite interviews were much longer (~3 hours minimum). You were expected to be there at a certain time and go through multiple back to back interviews that consisted of technical and behavioral interviews.
Personal Preparation vs Recommended Preparation
My personal preparation was doing a Leetcode or two a day. I did around 50–100. I know this sounds low, but I rank top 200 in Leetcode contests so I wouldn’t take my personal preparation heavily.
The recommended preparation is to do around 200–300 leetcode problems. There are a lot of topics for you to know, and if you want to ensure you will land an internship, I wouldn't take chances on leaving holes in your knowledge. You can check out some of my leetcode preparation guides that will make you a strong algorithm programmer.
- Luck: I think there is a huge portion of luck involved with finding an internship. Everyone has strengths and weaknesses, and if you get a question that involves your weakness, that's very unlucky. I would not worry too much about rejection, as I also was rejected hundreds of times in the past.
- Game of numbers: There are thousands of opportunities out there so apply to all of them. Even if you don’t see yourself working there, the interview experience if valuable. Remember that most people only hear back from < 1% of applications.
- Preparation: Leetcode is a great platform, so set a goal and practice! Start from easy, build your way to medium, and go to Hard. There are some easy that should be medium, some mediums that should be easy, and etc. Don’t get discouraged from not being able to solve an easy/medium/hard. Set a daily goal for X days and try to reach it! Don’t burn yourself out so make the goal realistic and doable. Everyone starts out slow, even Usain Bolt!
- Have FUN have fun learning and solving questions! They’re all very fun and wonderful and the more you have fun the more you learn and get better!
- Keep your head up: everyone starts out small. I started out working at a 3 person startup. you will face hundreds of rejections. The most important thing is to not let it get to you, and push yourself and remind yourself that you are incredibly smart, capable, and driven.
You are incredibly smart and talented, and wherever you end up, and whatever your goal is, you will achieve it!
If you have a question about a specific company, leave a comment down below!
Good luck and stay safe~