Why did you make this?
This spring, I’ll be graduating from the University of Maryland with degrees in Computer Science and Mathematics. Navigating the job/internship search process was pretty frustrating, and most of the resources are geared more towards people changing jobs, rather than people looking for their first or second opportunity while in school.
I learned a lot of things the hard way, and so my hope is that by putting more information out there, other people won’t have to.
Who is this for?
This guide is specifically for people looking for an Internship or New Grad position as a Software Engineer. I don’t have experience as an experienced or nontraditional candidate, so while some of the questions I answer here might be relevant, I can’t promise that the answers are the same for all candidates.
(For that matter, keep in mind that I am by no means an expert, and to take all of this advice with healthy skepticism)
When should I apply?
For many companies, New Grad and Internship Applications both open up in August and September of the prior year. Plenty of companies will open up applications after that, and will interview candidates on a rolling basis.
Keep in mind that many companies will take a long time to process applications and interview candidates, so starting early is a good way to finish the application process with as many companies as you can.
Keep in mind that smaller companies will still be hiring a few months ahead of time. Larger companies and those with more competitive processes will fill up much quicker than that.
How should I stay organized when I apply?
I suggest keeping a simple spreadsheet to track your application statuses. Keeping track of which companies you have applied to, and what stage of the process you are on can be really helpful.
When applying, apply to a lot of places, at least until you have an offer. Applying to more companies increases the likelihood that you will get an offer that you are happy with. More offers can also make it easier to negotiate for better pay.
What should my resume look like?
A pdf! Some forms won’t accept things like a text or word file to begin with, and a pdf is the easiest way to know what the recruiter on the other end of the application process sees.
Your resume should include information like your education history, experience, and skills. It should also include your email, a phone number, and a link to your LinkedIn profile. You should keep your LinkedIn up to date, and take advantage of the fact that unlike a resume, which should be only one page, a LinkedIn allows you to communicate much more information in more detail. You can also find more of my own resume advice on my website.
When making your resume, you can use a Google or Word Document, but I suggest using LaTeX, a typesetting software that gives much more control of how your pdfs look. (You’ve probably seen a LaTeX document before, as many math and computer science teachers will write their tests using it, since it is so good at generating readable equations, formulas, and diagrams.)
There are plenty of Resume Templates (my favorite) for any format, and they are a great place to start when working on your own.
Most companies will use an Applicant Tracking System, often called an ATS, which will automatically scan and parse uploaded resumes to make them easier for recruiters to filter or review them. You can get an idea of what an ATS will think of your resume at a site like this one.
What should a cover letter look like?
Many companies have cover letters as an option on their online applications, though they are rarely required.
Cover letters give the opportunity to personalize your application to a specific company, discussing what makes you interested in working there, and how your background makes you a good fit to do so.
It’s hard to tell how useful cover letters really are, and writing an entirely new one for each company you apply to is probably not worth the effort. Instead, people who want to use them typically make a template, which they personalize to each company.
How to Apply?
Online
This is the most common way to apply. Typically you’ll be asked to upload a resume, an optional cover letter, and to provide some information about your school or year, along with a few more questions.
You can apply for most positions in only a few minutes. For jobs that require a cover letter, things will take a little longer, however.
Career Fairs
At Career Fairs, which are typically run by Universities, companies will send representatives (either recruiters or engineers) to interact with students for internship or full time opportunities.
As a student, you should be dressed business casual, and have resumes printed out. Typically Career Fairs have been in person, but since 2020, many of them have been virtual. In these cases, much of this same advice applies, and you should also note that some virtual career fairs will allow you to upload your resume so it is easier for companies to view it.
When talking to a company representative, you should be prepared to briefly introduce yourself (name/major/year). It also helps to be able to answer why you are interested in the company, and know at least a bit about what the company does.
You should be prepared to ask any questions you have to recruiters and engineers. These questions don’t need to be company specific, though they certainly can be.
Be prepared to be told to simply apply online. This can be a frustrating part of the process, and is something that you see less often when interacting with smaller companies.
After the career fair, consider emailing recruiters and other company representatives to thank them for their time. Doing so is a good way to open a line of communication, and you can ask follow up questions you didn’t think of while meeting them. It’s also a good idea to mention something specific that you talked about, so they can remember who you are (they talk to a lot of people!)
The sooner you email someone, the less specifics you need.
Referrals
Referrals typically come from an employee or sometimes ex-employee of a company who thinks you would be a good fit for the position.
Typically, a referral means that your resume will be looked at and you can sometimes hear back from a company faster, but it typically won’t affect the difficulty of your interview process.
What does a normal interview process look like?
Most companies will use a combination of Coding Assessments and Resume screenings to filter applicants.
You’ll likely talk with a combination of Engineers, Engineering Managers, and Recruiters during your interview process. Keep in mind that you should actively be interviewing with multiple companies if you can, to keep your options open, and as a backup if you don’t get an offer from whichever company you like the most.
How can I prepare for an Online Assessment?
An Online Assessment, often just called an OA, is a coding test on a website like HackerRank where you will be asked to write code, typically under time constraints. The code will then be tested, and it will be scored based on accuracy and efficiency. Code on OAs is often not read, so focusing on writing something that works under the time crunch is a recipe for success. There are lots of question lists that you can start from, to get an idea of what to expect. The most popular one is referred to as the Blind 75, but I’ll link more in the resources section of this post.
In any type of OA, keep in mind that there is a lot of variance. It’s hard for companies to figure out how difficult questions are, and different candidates are often asked different questions by the same company. This variance is part of the reason why it is important to apply to a lot of places, since you’ll sometimes be asked questions that are especially difficult.
What is CodeSignal, and how does it differ from other OAs?
A growing number of companies use CodeSignal to facilitate their OAs. CodeSignal’s General Coding Assessment is a standardized coding test that gives four questions, and gives a score up to 850 based on your performance. You only get 70 minutes on a CodeSignal test, so the time crunch can be more impactful than it is on many other OAs.
One strategy that I have seen is to only do the first, second, and fourth question. The third question typically takes the longest, and you can still get over 800 out of the 850 points by only doing the other three. You can read more about how how CodeSignal does scoring at their whitepaper.
Different companies will look for different scores from a candidate to advance them to the next round. Typically over an 800 is enough, but sometimes a company will want to see an 840 or better, which would indicate all questions solved both correctly and quickly.
You can take as many practice CodeSignal tests as you would like, though you are limited to taking one a day. Getting used to the format can help a lot, so it’s worth doing even as you are still practicing.
What can I expect from a Technical Interview?
Technical Interviews with Engineers are similar to OAs, but with different prioritization, and the added component of verbal communication.
Technical interviews are often referred to as whiteboarding, as they traditionally take place in person and on a whiteboard, rather than on a computer. When whiteboarding, while you are solving similar questions as you would be in an OA, you have the added challenge of communicating your thought process as well.
Some interviewers will expect the code you write to run and compile, while others care more about your thought process. Some companies will only allow you to choose from a specific list of languages.
You might be asked to discuss the time and space complexity of your solution, along with how you might be able to improve it.
For technical interviews, you’ll still likely be asked to introduce yourself, and maybe answer a few behavior questions, so you should prepare for those as well.
What can I expect from a Behavioral Interview?
Behavioral interviews are much more similar to what you might expect from an interview for roles unrelated to software engineering.
You’ll be asked about things like your resume and prior work experience.
Typically, the best way to answer a question is with the STAR format. By establishing the situation, task, action, and result, you can demonstrate your soft skills, like your ability to work in a team or prioritize between tasks.
Most behavioral interviews feature a lot of the same questions, so just like you can practice Leetcode style technical questions, you can practice answering behavioral questions.
Behavioral Interviews are often done by recruiters or engineering managers, but they can also be done by a company’s more technical employees like software engineers.
What is an Onsite/Superday?
Typically the final round of interviewing takes place over the course of one day, when multiple interviews take place. This day can be called an Onsite or a Superday, and it may also just be called a final round.
Recently, companies have done their final rounds virtually, due to COVID-19. In the past, many companies will pay for a candidate’s travel to and from their office for in person interviewing.
What questions should I ask interviewers?
As companies are interviewing you, you have the opportunity to take the time to learn about them as well. Most interviews will end with a little time to ask questions to your interviewer.
This process of asking questions back to the interviewer is sometimes referred to as reverse interviewing. It is important to take advantage of the opportunity to learn more about the work environment.
There are a lot of things that you can ask about. Personally, I like to ask about what a typical day looks like, what types of projects are available to work on, and what surprised the interviewer most when they started.
How can I prepare for technical interview season?
Because most companies are recruiting at roughly the same time, candidates can generally assume they’ll be interviewing with a number of companies around the same time. Fortunately, because most coding interviews are pretty similar, the process of preparation is similar.
The best way to get ready for a coding interview, whether it is an OA or with another person, is to practice.
If you are preparing for an OA, you can attempt random Leetcode questions, while timing yourself to get an idea of how long it takes to solve the problem.
For an interview with an engineer, finding a practice partner can be helpful. To begin, it can help to present a solution to a leetcode question you have already solved to them, and to take turns doing this to gain experience. Eventually, start solving problems while explaining your thought process.
Coding challenges can typically be solved in any language, but it is important to use one that you are comfortable with. When you’re interviewing with another person, you should probably use one that your interviewer probably knows as well, so you can explain the overarching thought process that you have, rather than things like syntax. Python is the most popular language for coding interviews, but Java is another good choice.
A lot of people advise to simply “grind leetcode”, and that if you solve enough of them, you’ll be prepared for anything. While this is a good idea in theory, there are a lot of leetcode questions out there. Intead, it can be more efficient to focus on gaining a stronger understanding of the concepts used by the nearly 2000 questions on leetcode. Additionally, plenty of companies ask questions that do not appear on leetcode, which can make simply memorizing solutions a less effective approach.
How should I prepare for a specific company’s interview?
Typically, companies will send you information about what to expect from an interview, which is a great place to start when you’re getting ready. You can get an idea of what you may or may not be asked about. Beyond that email, it helps to do some research about what types of questions companies ask. Typically, interview processes are fairly standardized, so while most of the time the specific questions vary, the level of difficulty and the concepts required are fairly consistent.
Many companies will use questions from a specific set of leetcode questions, and you can access a list with most of these questions with Leetcode Premium. When you have an interview coming up for a company, reviewing these tagged questions can be among the most efficient ways to prepare. I’ve also heard of people reviewing a list of these questions skipping right to looking at the answers, which makes sense if you’re cramming, or just want to get through a lot of questions quickly.
What do I do after my interview?
Once you’ve finished your interview, it’s good to get an idea what the remainder of the process will consist of, if you do well. You might have more technical interviews to go, and they might be in the form of an onsite or a virtual onsite. You may have additional phone screenings that would be needed, but either way it’s good to know.
Typically, you can expect to hear back from the company within a business week, though some companies will take longer.
After you finish an interview, you might want to send a thank you note, though it generally isn’t necessary.
Why might I not get an offer?
In the situation where you don’t get an offer, and can sometimes be hard to tell exactly what went wrong. Obviously, poor performance on an interview will typically land you a rejection, but that’s not the only reason you might not be getting an offer. This is something that I personally struggled with, and while I’ve definitely earned rejections through poor interview performance, sometimes there’s a bit more nuance than that.
Something that is helpful to understand is that if a company isn’t sure whether to hire a candidate, most will lean towards not hiring a candidate. After all, hiring a bad candidate is a major drain on a company’s resources, but not hiring a good one is less impactful on the company in the grand scheme of things. This blog post is helpful for understanding how companies look at the interviewing process.
It’s also possible that the company has already filled their incoming class with candidates they are happy with. Medium and smaller sized companies are often limited in terms of how many interns or new grads they can hire. Once their incoming class has reached capacity, they may need to stop hiring even if the candidates are quite strong.
Some companies will offer you feedback after your interviews, but many will not. Regardless, it can be helpful to think over your own performance, and where you can improve. In some cases though, you may have just gotten unlucky. Something like a culture mismatch, budget cuts or a change in company direction, or any number of other things can cost you an offer, and those aren’t always in your control.
What should I do once I get an offer?
If you’ve gotten an offer, take a moment to be proud of yourself. You did it! Getting an offer is an exciting experience, and it’s important to take the time to acknowledge your hard work and your success.
Typically, you’ll be told that you got an offer on a phone call with a recruiter, who can answer questions that you have, and can give information about your compensation (pay).
Keep in mind that your compensation is more than just a base salary, and it includes things like perks. Things like catered lunches, 401k matching, and health insurance all have monetary value that is worth keeping in mind when comparing offers. You might also care about things like dress code requirements, or lack thereof, which mattered a lot to me. Most tech oriented companies have casual dress codes, nowadays.
Most offers have an expiration date, which means that if you can, it makes sense to time your offers such that they all expire around the same time. If you need to, you can sometimes get an extension on an offer deadline.
If you’ve been given an internship offer, you probably won’t have the same level of benefits, but sometimes things like housing will be provided.
What can I expect from an offer?
For an internship offer, you are typically paid either hourly or salaried (weekly or biweekly). Doing the math to convert between these two is pretty straightforward, though it can be hard to account for things like overtime pay.
For internships, you may also be given some sort of housing stipend, or even housing provided to you by the company. If an internship isn’t offering those things, keep in mind that you may have to pay for them yourself.
For a full time position, hourly salaries are not very common, and you’ll typically be offered a base salary instead. Many public companies will also pay some amount of equity (often over 4 years) and sometimes a signing/relocation bonus. With so many differences between offers, it can be hard to figure out which offer to accept.
How can I decide between offers?
If you have people you’re comfortable talking about your options with, it can be helpful to pick their brain, especially if they have experience in technical fields.
When comparing options, try to get an idea of things like work life balance and career growth. Additionally, how you feel about a company’s mission or products can play a major role in how happy a particular position will make you. Sometimes these things are hard to quantify, and that’s okay too.
For internships, there is often a correlation between the salary and a company’s prestige, but that’s not always the case. Unless the difference in internship compensation would affect your life a lot right now, it can make more sense to focus on personal growth and learning, along with how well the current opportunity will help you improve your options in the future. Going to a well regarded company where you can learn more can help you find a better full time job, which can lead to better pay later on, too.
For full time positions, things like location matter more, and getting an idea of what salary trajectory you can expect matters a lot. Some companies will even offer equity before they make an Initial Public Offering (IPO), which can be especially lucrative. Just like with internships, consider how working somewhere will affect your career growth. Some companies will promote much quicker than others, and sometimes the brand name of a well known company is enough to get you an interview elsewhere. Job hopping is fairly common in tech right now, so while working somewhere and planning to switch ASAP isn’t advisable, you also don’t want to go somewhere that will stifle your options down the line.
How do return offers work?
Over the course of an internship, you’ll be evaluated by your manager, mentor, and other employees as they work to help you gain skills. Most companies offer internships with the express goal of converting many of their interns to Full Time Employees, and you can sometimes receive that offer while you’re still completing your internship.
Often, these offers have earlier deadlines, as the companies want you to sign with them without interviewing elsewhere. Your school might have a policy as to the earliest allowed offer deadline, which can help give you more time to interview elsewhere.
I didn’t get an offer at all, which should I do?
Don’t give up! Especially for underclassmen, it’s hard to get an offer. Keep applying, and look for ways to improve your chances of finding a job.
For internships, many companies are really only looking for juniors, who they can give return offers to.
Work on Personal Projects to learn new things, and showcase those things to companies. Personal Projects don’t need to be anything groundbreaking. Just building something that interests you outside of an academic context can go a long way. You can also learn new technologies or concepts by taking online classes, or earn certifications. Finally, practice interviewing with your peers to stay fresh and improve your skills.
I have a question not covered here, what should I do?
One option is to email me, at ethan@schaffer.com, and I’d be happy to answer you, and potentially put the answer up here as well.
Alternatively, two great resources I recommend are the CS Career Questions and CS Majors subreddits, or their associated discord servers.
Additional Resources
- New Grad Application Links
- Internship Application Links
- Resume Template
- Sample Resume Parser
- Interviewer’s Point of View
- Blind 75
- Practice Questions
- Crammable Practice Questions
- Hackerrank Interview Prep Kit
- Coding Interview Patterns
- Filterable Patterns
- How Codesignal Works
- STAR Method
- Reverse Interview
- Interview Process Insight