If you are currently a student, one of your main concerns is most likely going to be getting an internship.
Internships can be great boosts for your career, as they often make it significantly easier to get full-time jobs, and may even provide you with a full-time offer in the form of a return offer.
But even though you know you need an internship, you’re probably left wondering how you actually get one.
It can be very intimidating to start looking for internships because there are a lot of concerns you need to address along the way, such as finding companies, meeting their requirements, getting interviews, and passing the interviews.
In this article, I will give you my advice on getting a software engineering internship at a top tech company.
These methods helped me interview with, and get offers from, several top companies, even though I did not have any referrals and they did not recruit at my school.
Regardless of which school you go to, there is most likely some way that you can take advantage of your school’s career services.
These opportunities may not be well-advertised, so be sure to do your research and find out exactly what is offered by your school.
Target schools, such as MIT or CMU (any school with dedicated recruiting from top companies), will have the most resources to help you secure a top internship.
Primarily, this occurs through career fairs and networking events, in which representatives from top companies come to your school to recruit for their company.
This gives you the opportunity to avoid the black hole that is applying online, giving you a much higher chance of passing the resume screening phase of the application process.
You may also be able to directly network with employees at the companies that you want to intern with, which may lead to a referral.
If you do not go to a target school, there are still ways you can take advantage of your school’s services. Most schools offer resume review services and mock interviews.
Your school may not necessarily be synced up with the specifics of software engineering resumes but they can at least provide a second set of eyes to catch any mistakes you may have made.
Similarly, your school may not be able to provide interviews that ask algorithmic questions but they can at least help you practice answering questions in an interview setting.
This can help you get more comfortable during interviews and lessen the negative effect that anxiety can have on your interview performance.
2. Side Projects and Extracurriculars
When you apply to a top company, you are competing with thousands of other students.
These students most likely took the same (or very similar) courses as you did, so if you want to stand out, you need to find other ways to uniquely demonstrate your technical skills and interests.
There are two main ways to accomplish this: through side projects and through extracurricular activities.
Side projects are simply any projects you work on that are not class projects.
Typically, people do side projects in more modern technologies than those used by class projects, such as recent web development frameworks or cutting-edge machine learning libraries.
Your side project can really be about anything, as long as there is some technical challenge involved and it displays a technical skill or ability that you want employers to know that you have.
So, if you are interested in machine learning, for example, you can try to gear your projects towards this topic, so it is clear that you are interested in that topic and have the skills to work with it.
Extracurricular activities primarily refer to student organizations and research. Involvement in student organizations shows that you are passionate about the field and shows that you are capable of working with other people.
Depending on your role in the organization, it may also demonstrate technical ability, if you, for example, are responsible for maintaining a website or work on a group project.
Involvement in research similarly shows that you are passionate and capable of working with others.
It can also be used to demonstrate expert-level familiarity with a certain topic. This can be useful if you want to work in a field that is reluctant to hire undergraduates, such as machine learning.
If you are able to demonstrate graduate-level proficiency through research, many companies will let you bypass graduate degree requirements.
Networking refers to building relationships with people who already work at top companies. The easiest way to build these connections is by finding alumni from your school who work at companies you are interested in.
If you cannot find anyone from your school at your desired company, you can try connecting with people on LinkedIn whom you have something in common with, such as a common area of interest or shared hobby.
Networking can be an easy way to get a referral or learn more about a company you are interested in.
By building a connection with an actual employee, you can ask them for personalized advice tailored to their company. You can also get an insider perspective on the culture and work environment at that company.
However, even though you may want a referral, it is important not to just mass-message people asking for a referral. This approach is unlikely to result in anything and is considered rude by many people.
You should instead try to actually build a legitimate relationship. Take an interest in their work and the work being done by the company. If they feel like they have gotten to know you and your skills, they are much more likely to want to help you.
4. Personal Brand
Building a personal brand is a great way to showcase aspects of yourself that you do not have space to put on your resume.
For example, you may build your personal brand through a website, showcase, or a blog. On these websites, you can display side projects you have worked on, topics you have spent time learning outside of the classroom, and even your non-technical hobbies.
Through the things that make up your personal brand, you can choose to showcase aspects of your work and personality that you believe make you a more compelling applicant.
The recruitment cycle for summer internships starts very early. For a summer internship, you typically need to start applying in late summer of the previous year and early fall. This is almost one year in advance!
It is essential that you apply early enough. Regardless of how good of an applicant you are, if you apply once all the slots have been filled up, it is very unlikely you will be given an interview.
So, make sure that you do not postpone applying to companies so you can prepare for the interviews. You need to be preparing and applying at the same time.
There will be most likely be a gap between when you apply and when you are first contacted, so you will still have time to prepare prior to your actual interviews.
6. Finding Companies
If you are aiming for top companies, you probably already have the usual ones in mind — large tech companies such as Google, Facebook, and Airbnb.
These are large companies that hire hundreds or thousands of software engineering interns. They will have very large recruiting pipelines and highly standardized recruiting processes.
Beyond the typical candidates, there are several ways to find other companies:
- First, check your school’s career portal for companies with relationships with your school. For example, if a company is in Handshake, it has already decided that it wants to recruit from your school, so obtaining an interview should be easier.
- Next, you can check common job-searching sites such as Indeed and LinkedIn. These sites will have tools to automatically search and filter internship postings so that you can find ones that match your interests and requirements.
- Finally, you can look for open-source collections of companies and their application pages. These are a fairly recent trend and are often curated by other students going through the same internship search as you. They may either be actual stand-alone websites, such as Intern Supply, or may simply be GitHub repositories.
After securing an interview, you need to make sure that you actually pass it. In my opinion, passing the interview is often a much simpler process than getting the interview, as there are clear ways to prepare for interviews.
The main way to prepare for technical interviews is by practicing data structures and algorithms problems.
If you have taken a data structures or algorithms class at school, you most likely have enough background information to go straight into practicing the questions.
If not, you should familiarize yourself with basic data structures (stacks, queues, linked lists, hash tables, binary trees, graphs, etc.) and common types of algorithm implementations (greedy, recursive, dynamic programming, etc.).
The best source of technical interview questions is Leetcode, which has hundreds of questions that span all of the possible question categories.
If you are able to at least solve most of the easy and medium difficulty questions, you will be in very good shape.
You do not necessarily need to do all of the questions but be sure to do a comprehensive set of questions that covers each data structure and type of algorithm.
Your goal should be to build an understanding of the main categories of questions and common solution methods. This understanding should stem from understanding the problem’s inputs, invariants, and constraints.
For example, if you are given an array that is sorted, you should recognize that this allows you to use algorithms, such as binary search, on it, giving you a faster way to search for specific elements.
By recognizing these patterns, you will be able to quickly classify interview questions, which will hopefully allow you to find optimal solutions quickly and focus on being able to finish your implementation on time.
Behavioral interviews do not usually factor in very heavily but you should still make some effort to prepare for them.
Typically, behavioral interviews will ask you to speak about a specific experience of yours that demonstrates a characteristic or exemplifies a type of situation.
For example, they may ask you to recall a time where you had to solve a particularly difficult technical task.
For these interviews, you should try to loosely frame your answers in the STAR format (situation, task, action, result). This ensures that you mention all the relevant information and communicate as many positive characteristics as possible.
Written by: Devin Soni