Internships are crucial for budding software engineers—but how exactly do you land one?
To bring you the best advice, we’ve connected with several industry insiders:
With their insights, we’re here to guide you on your journey from student to intern.
🎓 Degree(s)
🏫 School
🅰️ Grades
🔨 Skills & qualities
🧠 Knowledge
2. Types of companies you can apply for
🌟 Career fairs
🤝 Networking
🎨 Projects
🔍 Resumes
📄 Cover letters
🕴️Interviews
💡 Other tips
4. How to secure a return offer
5. For more info
Generally, it's a good idea to have a Computer Science (CS) degree, because it'll give you a solid foundation and open up more career options. But it is totally possible to break into the field without one!
No, you do not need a CS degree to work in my role. I know when I worked at Citi, they recruited people who went through boot camps.
I did interview two non-CS majors during the technical interview. Unfortunately, they did not possess strong data structures and algorithm skills which is why I did not move them on. However, they did get the interview which shows that you do not need a CS degree to secure an interview.
– Former senior software engineer @ Citibank
Yes you can for sure get an engineering job without a CS degree. I have a few friends who entered field through bootcamps and are now fairly successful in their careers.
A common path is to do a coding bootcamp and go into front-end engineering. For those new to the field, front-end development can be more accessible and rewarding, since you build the websites and mobile apps that we use every day and you can immediately see the results of your work.
On the other hand, back-end engineering is where you'd work on things like server-side logic and algorithms. It's a little trickier to get into straight out of a boot camp but definitely still possible with time. I'd recommend going for an entry-level job that lets you work on both front-end and back-end development and then transitioning to back-end engineering over time.
– Former software engineer @ Meta
If you're going for competitive roles, the school you go to can affect whether you get selected for interviews.
I wish I could say the school you go to doesn't matter. But if you're going for a competitive role at a top employer, your school can impact whether you get chosen for interviews.
This goes back to the fact that students or new grads don't have a track record in the field, which makes it hard to tell who's better than who. As a result, employers do still consider superficial things like your school when picking people for interviews.
Employers have lists of target schools that they regularly recruit at. My advice to everyone – but especially people at non-target schools – is to network and get a referral, as that raises your chances of securing an interview.
And the good news is that once you get an interview, your resume doesn't get reviewed anymore, and it becomes all about your performance on the interview.
That's why I say that applying to internships is a numbers game. If you apply to enough companies, at some point, some company will choose to interview you.
– Former software engineer @ Meta
Your grades may also affect whether recruiters choose to move you to the interview stage.
I did not pay attention much to grades. However some recruiters will pay attention to grades, so it is always important to maintain at least a 3.0 GPA.
– Former senior software engineer @ Citibank
However, if you have impressive experiences that can make up for poor grades.
We're not looking for an extremely high GPA, but you shouldn't be B-minusing everything you're taking.
Prior experience is more important than GPA. If we see that you've interned at Google or a start-up your sophomore year, a lower GPA wouldn't be a huge concern to us.
– Former software engineer @ Meta
Other than the technical skills, I usually like to see people who are:
- enthusiastic about the field of software engineering
- willing to learn
- honest about themselves
- team players – I want to work with a team player. Anyone who seems rude, arrogant, or not open to others' ideas, I do not want to be in a team with. I worked with them in the past, and they can be a pain.
– Former senior software engineer @ Citibank
Usually a few days after the interview, there's a hiring committee recap, where interviewers come together to discuss who they think should be hired. We typically focus on the following:
- Code quality: Your basic coding skills. How clean is your code? How long did it take you to write that code?
- Problem-solving: How did you break down the question? How did you structure the solution?
- Communication: How well did you explain your thought process? How well did you explain how your code works?
- Culture fit: Would we enjoy working with this person full-time?
– Former software engineer @ Meta
As a college student, you're more expected to have a foundation in computer science as opposed to being familiar with specific coding languages.
We just want to know that you have a solid foundation in computer science. This means you've taken your core CS classes in things like discrete math, intro programming, object-oriented programming, and systems programming.
If you haven't done systems programming, for instance, we won't know if you're able to program anything beyond building a website. A lot of these classes happen during the fall semester of your junior year, which is partly why most internships happen the summer after your junior year.
– Former software engineer @ Meta
When you're coming out of college, companies won't require you to know a specific library or programming language. They just want you to know the fundamentals, which include things like data structures and algorithms.
Data structure is how data is stored in a code or program. Algorithms are basically a recipe for how the code executes. Cracking the Code is a good book for brushing up on these topics.
– Former senior software engineer @ Citibank
Our junior engineer recommends being familiar with using ChatGPT for coding purposes.
I'd say that knowing about large language models is very important, as most tech companies are making AI products.
Companies also all have their own private version of ChatGPT, so you should be familiar with how to use it to code. Most of my code for work is written by ChatGPT, because it honestly codes better than me.
As a result, it's becoming less and less important to know specific coding languages. For example, I don't know use how to use Java. If I need to write something in Java, I'll just give ChatGPT my code in another language (like C++) and it'll translate it for into Java for me. Heck, it even improves the code as it does that!
– Junior software engineer @ Tiktok
You can find plenty of internships on Prosple. We have a vast selection of internships curated for students like you. Just filter 'til you find the right fit!
The big tech companies hire the most interns.
Tech start-ups also hire interns, though usually these would be later-stage start-ups (like series C or D).
Here's a pro-tip: Use Crunchbase (a website that lists the status of start-ups) to filter for companies that are series C, D, or E with a recent funding round, since this means they're growing rapidly and probably hiring a lot. As a plus, you can even filter for the industries you're interested in!
– Former software engineer @ Meta
Tech companies require you to be more knowledgeable about data structures and algorithms than banks. As a result, the technical interviews for banks are much easier.
For example, while both will ask you about data structures and algorithms, banks won't expect you to know the advanced stuff, because the reality is you won't use them on the job. So while I never got past the 2nd-round interview at tech companies, I nailed the data structure and algorithms questions for Citibank.
Out of the banks, Capital One is the most tech-driven bank, so that's a good one to go for if you still want to work for a bank that still feels like a tech company.
– Former senior software engineer @ Citibank
Trading firms are another category of companies that hires ambitious software engineers. At a trading firm, you'd help develop the applications that traders use to buy and sell all kinds of financial assets.
If your school has good career fairs, make sure to attend, drop your resumes off, and talk to recruiters. Applying through those career fairs is a lot better than cold-applying on their website. A lot of times, September career fairs coincide with initial tech screening season.
Besides career fairs, employers might also host workshops and info sessions, which also act as a hiring pipeline. When I went back to my alma mater for on-campus recruiting events, we'd host workshops to help students prepare for interviews. We'd collect lots of resumes, flag high-priority candidates, and reach out to them right away for an interview.
– Former software engineer @ Meta
For our best tips on leaving an impression, check out A student's guide to a great career fair.
According to our software engineers, networking and employee referrals[LINK] are very important for landing an offer in this field!
Referrals are a big thing in this field, because it's extremely challenging to consistently hire good software engineers. There's only so much you can tell from an interview and even the technical interviews are far from perfect, because they can kind of be gamed if you just do enough practice problems on Leetcode and memorize how to solve them.
That's why companies – from start-ups to tech giants like Facebook – rely heavily on referrals for hiring everyone from junior to senior-level staff.
So make sure you have connections for referrals. Get to know people who work at companies you're interested in so they can refer you to the recruiters. Without a referral, it can be hard to even pass the initial screening since spots are limited – especially in a tough job market.
– Former software engineer @ Meta
I've been referred three times for jobs in the past 6 years. I won't say it's automatic that you'll get the interview, but out of the three times, I got a referral, I got interviews all three times. So your chances of getting an interview are a lot higher than blindly applying at the job portal.
So one thing I do recommend for college students is to network. So if you're a freshman or sophomore, try to get to know upperclassmen. These friends or acquaintances can get you referrals for you to get that interview.
At Citi, I once gave a referral to one of my former teammates from a group project. He was able to get that first-round interview and I believe he's still working there.
It's not just what you know but who you know.
– Former senior software engineer @ Citibank
I was able to land interviews at Google, Meta, NVidia, TikTok, Amazon, and Bloomberg without referrals. But with the economy being bad and all the mass layoffs in tech, you'll definitely want a referral now!
– Junior software engineer @ Tiktok
When you don't have any internship experience, projects are a good thing to put on your resume.
Projects are a great substitute if you do not have any internships experience. Some simple examples will be creating your own game, a weather app, or even better, something original. I feel that the more time you put in a project, the more effort you will put into its craft. Recruiters and interviewers will see that.
– Former senior software engineer @ Citibank
Here's an example of a project.
I am a big NBA fan and I play NBA fantasy in my spare time. For the game, I have to pick out five players. But the problem is, you only have 300 points and star players like Stephen Curry, for instance cost 120 points. This means you can't pick 5 all-stars, so you have to find players that are cheap but play well.
I made an algorithm that would pull data from places like ESPN and do some simple analysis to tell you the best line-up of players to choose.
The project also helped me connect with my interviewer who was also a fan of basketball!
– Junior software engineer @ Tiktok
Projects won't get you the job, but they do show employers that you do more than go to class.
It's good to have projects and to include your Github profile on your resume, but realistically, employers aren't going to check your code.
Employers use projects more as a way to see:
- if you're willing to do more than your problem sets at school.
- if you've worked on a project with more than 200 lines of code.
Problem sets are designed to be finished in 10 hours, so realistically you won't have that many lines of code. But in the real world, your code base will always be millions of lines of code. So it's a way to see if you have been exposed to a project that's more than one file.
So don't worry about being part of a really involved open-source project. It's not a deal-breaker. You just need to be able to explain what the project is about, how complicated it was, what your work on it was like, that's enough information. It's more like you have something to talk about.
– Former software engineer @ Meta
It's even better if you've done projects that have helped real-world businesses.
If you build a simple website in Angular for a small business, that could be a great project to add to your resume because it shows you can work with a client.
– Former senior software engineer @ Citibank
A lot of bootcamps actually want you to do an industry co-op program so you have more track record to show when you apply to jobs. You can say you worked with a real business and helped them with something rather than just having school projects.
– Former software engineer @ Meta
For our best tips on writing resumes, check out How to craft a winning resume as a college student.
Resumes aren't a huge deal-breaker since it's hard to tell a lot from them.
For students though, I would recommend highlighting prior experience and extracurriculars.
Prior experience means things like previous internships or research experience (if you don't have any internships). If we see that you have interned somewhere already, we know you have an idea of what it's like to work as a software engineer. This gives you an edge over students who've only taken courses at school, which is kind of like ticking boxes.
In terms of extracurricular activities, I look for those that demonstrate leadership and initiative. It doesn't matter what activities you do – they don't even have to be relevant to software, because we'll assess your software abilities in the technical interview.
We just want to see that you have a track record of taking initiative, because that means you're likely to go above and beyond on the job as well.
One of the best interns I hired at a start-up was super young – she had just finished high school and applied for an internship the summer before her freshman year of college.
Besides excelling in her technical interview, she also had a lot of extracurricular activities to show that she was capable of "making things happen." For instance, I remember she was trying to start a charity organization in the education space.
This told us that she likely wasn't just going to school and doing the bare minimum. She wanted to push herself to achieve things.
– Former software engineer @ Meta
Before I interview candidates, I look at their resume to see what I can ask them about. The best resumes that I have seen are ones that list out all of their accomplishments but keep it concise. Thus, the resume can list more of their accomplishments.
I generally look for the following things:
- I check their experiences to see what they have done previously at other jobs or internships.
- If they do not have any internships. I look at projects they have been a part of. Usually having a project that you created will showcase the skills that you have.
- I usually look at their skillset. I would usually see what programming languages or frameworks they know, and how it aligns with the position we are trying to hire them for. Some programming languages and frameworks will be Java, Python, HTML/CSS, JS, Android, iOS, Angular, React, Spring, Vue.js, etc.
– Former senior software engineer @ Citibank
Most big tech companies don't require cover letters. The applicant pool is so large that they don't have time to read them.
– Former software engineer @ Meta
I have never reviewed a cover letter. Usually cover letters are optional, and people never attach them to the application.
– Former senior software engineer @ Citibank
I submitted zero cover letters when I applied for jobs.
– Junior software engineer @ Tiktok
For more advice on cover letters, check out:
For internships, the number of interviews you'll get varies from company to company, but you can generally expect around two to three rounds of interviews.
#1 Phone screen (15-30 mins) between you and the recruiter
- For internships, these function more like a logistical briefing that introduces you to the company and the interview process.
- The only time someone is screened out is if they're, say, a sophomore applying for an internship that's specifically for juniors – or if they need visa sponsorship and the company can't provide it.
- And if you're extremely hard to communicate with over a phone screen, then that would be a red flag as well.
- But otherwise it's pretty hard to fail this round - especially for interns!
- Phone screens matter more for experienced hires, because they'll actually screen you out based on whether your experience matches what the employer is looking for.
#2 Technical screening (40-50 mins each)
- This usually consists of two rounds of technical interviews, where you'd be given coding questions to solve. Sometimes, they'll ask you about a project you've worked on.
- If the employer happens to be on-campus, they'll do this in-person. Otherwise, it'll be a Zoom interview.
- Some companies do a project-based interview where they'll prompt you to work on a small project that may be related to what their company does. The thinking is that this better gauges your ability to do the actual job than a conventional technical interview.
- Some companies do an automated tech screening. You have a series of sample inputs and they want to see how many sample inputs can generated the expected output. That's usually a way for them to make sure it's worth it get a person to do an in-person tech screening.
#3 Behavioral interview (30-40 mins, if at all)
- For internships, you may or may not have behavioral interviews, which usually gauge how you manage conflict.
- Employers don't always do behavioral interviews with students because your interviewers can already get a sense of how you are behaviorally through the technical interviews and also because some companies don't think students or new grads have enough real-world experience to properly answer these questions.
– Former software engineer @ Meta
Generally, you'll be asked to solve two technical questions. You can practice for them on the website Leetcode.
Most companies have a bank of interview questions which we randomly pick from during interviews. Most of these questions are paraphrased versions of questions on Leetcode.
(Hint: Leetcode has a category called "Facebook interview questions" so if you're interviewing for Facebook, go through all of those questions!)
– Former software engineer @ Meta
If the job description says you need to know Java or React, and there's going to be a coding problem, study as if you're studying for an exam. Go through Leetcode. If you have to study any frameworks or libraries, go through the documentation and look over Youtube videos. Cram everything. Then on the interview, when they ask you those questions, hopefully you've retained enough.
– Former senior software engineer @ Citibank
Leetcode numbers its questions. The top 200 questions are very high-frequency questions. Make sure you can solve all of those.
– Junior software engineer @ Tiktok
What are the questions like?
Usually, we'll give you two questions.
- The first question, we do want you to get it done and done correctly.
- The second question, you don't have to finish it, but we'd want to get an idea of how you'd finish it if you had time. And if you finish it and have time left, we'd push you more. We'd ask you things like "How would you improve your solution?" or "What if the scale of the program became 100x larger?" We'll ask you to think about different aspects of the question. Again, we don't expect you to have perfect answers.
– Former software engineer @ Meta
There are two parts to the interview. If you don't get the first part right, it'll be hard to do the second part.
The first part will be an initial question like "What is a stack?" (a data structure). If you don't know what it is, the interviewer will tell you, "Stack is a data structure that's last in, first out." The next part will the be something like "Using a stack, solve this coding problem." You'll need to learn it in real-time and apply it.
You don't have to get the correct answer, but you don't want to get stuck on the first part. Make sure you prepare by studying anything that's data structures and algorithms-related.
– Former senior software engineer @ Citibank
Interviewers said that the point of technical interviews isn't to get the correct answer. That's great of course, but being able to break down the problem and walk interviewers through your thought process is even better.
What we're looking for with these interviews isn't for you to arrive at the perfect solution. Here are the top three things we look for in students:
- Correctness and code quality: Do you know the language well? Is your logic sound? Does the program work, and is it the right solution?
- Communication: We want to hear you break down the problem into different components. Even if you're stuck, don't just stare at the whiteboard. Talk to the interviewer so we know when to give you tips.
- Testing: Do you take the initiative to say, "Let's see if the solution works as expected?" That's why you don't need to get it correct the first time. Once the basic case passes, do you try edge cases or more advanced scenarios?
So if I ask you a question that you've already worked on from Leetcode don't just solve it in two minutes. That doesn't tell me much about you besides that you might be good at memorization. Instead:
- Pretend like you haven't worked on it before. Work through it like it's your first time seeing it and you just happen to be very smart.
- Walk me through how you'd construct your solution and implement your solution with the interviewer.
– Former software engineer @ Meta
If you get stuck in the second part, think out loud. "Maybe I need to do this to get to the solution." If you're saying what you're thinking, that can help a lot. We'll help out by saying something like "I see what you're doing, but how about approaching it this way." With that hint, you redirect to the right solution. It's more important how you solve the problem than arriving at the right solution.
– Former senior software engineer @ Citibank
Most importantly, don't give up halfway through a technical problem!
Never show defeat. Don't throw in the towel. Don't give up. Don't go "Oh I messed up, I'm not getting the interview." Keep going.
Even if you don't solve the problem correctly, maybe your effort or attitude when it comes to solving the problem will help you get the position. Always try to smile even if you don't know what the heck is going on.
You might still get moved on even if you had a bad round. I don't think I did well with my second round but to my huge surprise, they moved me to the final round. There will also be times when you feel like you rocked the interview but they don't move you on.
– Former senior software engineer @ Citibank
My favorite question is to ask about their project or past experiences. I just want to see their enthusiasm, and if they like to nerd out about the technologies they have used. It even gets better when it becomes more of a conversation rather than an interview. I just like to see their interests. I am not much of a strict person when it comes to behavioral interviews. I just want to know the person and their personality.
– Former senior software engineer @ Citibank
What are people's best tips for acing behavioral interviews?
I fumbled my Capital One behavioral interview. They asked "Tell me a time when you explained something technical to a non-technical person" and they asked a bunch of follow-up questions. This is where I fumbled. I told a lie and I think the interviewer caught my lie and that probably cost me my interview. I was never expecting the questions they were asking. Never lie at a behavioral interview.
Try to be professional but try to be yourself. Behavioral is kind of a cultural fit. You as the interviewee are also trying to see if those people are a fit for you. So if you don't fit in with the people you're interviewing with, it's your call if you want to join them or not.
– Former senior software engineer @ Citibank
Here are our best tips for answering the most common interview questions:
For more tips, see Smart questions to ask at your next internship interview.
Some tech companies move very fast. You might apply today and they'll contact you tomorrow. After one week, you have to interview with them.
For your dream company, don't apply too early. You can try interviewing for other companies first and get practice. Most people get nervous if this company is your dream company.
– Junior software engineer @ Tiktok
Take any opportunity that comes your way. You might be aiming for those top tech companies but at the end of the day, those companies are competitive and you may not get the opportunity.
Don't feel bad if that happens. Your goal as a software engineer is to learn and at the end of the day, you need to get real-world experience. It might not be flashy but who cares. Assuming you retire in your sixties, you have 40 years to pursue whatever dream you have. So don't be too hard on yourself. You're going to learn and what you learn will help you with your next step.
– Former senior software engineer @ Citibank
- When you're applying: Explicitly ask whether the internship can convert to a full-time offer. Luckily, most companies do internships to find full-time staff, but it's still good to double-check this.
- During the internship: Make sure you let your manager know that it's your goal to become a full-time employee.
For context, not every intern manager understands that the internship program is for the company to find full-time staff. They might be under the impression that their job is just to keep you happy!
So you have to make sure your manager is on the same page as you. You can do this by communicating your goal of coming back full-time and asking them what you'd need to do to get there.
Here's how this conversation might look.
- Intern: I'm really enjoying interning here and would love to come back as a full-time employee. What would it take for me to do this?
- Manager: So we'll have a review where you'll get graded on different aspects of your performance – the different "grades" being "meets expectations," "exceeds expectations," "greatly exceeds expectations," etc. As long as you achieve "exceeds expectations," you'd typically receive a return offer.
- Intern: What's the difference between "exceeds expectations" and "greatly exceeds expectations"?
- Manager: Well, you might get a better offer and more stocks.
- Intern: And how do people generally receive "greatly exceeds expectations"?
This conversation will push your manager to explicitly define what you need to do to achieve your goals. You can then come up with a plan with your manager to make sure you reach your goal. This way you leave less to chance.
– Former software engineer @ Meta
For more expert advice, check out Interns: How to secure a return offer.
This is part of a series on software engineering. For more deep dives into the field, check out: