You updated your resume, found some open software engineer job postings , and fired off your applications. And it’s landed you an interview (or two)!
Now it’s time to prepare - and as a community full of thousands of successful software engineers, that’s what we’re here to help you do.
If you’re feeling anxious or stressed about what to expect for software engineer interview questions, know you’re not alone. You’ve landed in the right place.
We asked top women engineers at Apple, LinkedIn, Twitter, Square, Zillow, Splice, and lots of other companies to share the most common interview questions they’ve heard in software engineering interviews, the best resources to prepare for interviews, and their top tips for acing the engineering interview in 2021.
Many of these women have been on both sides of the software engineering interview process and know how exhausting and difficult it can be.
So take a breath, have a sip of coffee or tea, and sink into your chair a little bit deeper to read this one. We’re going to cover the most important things you need to know.
👀 Looking for a new job? Join other technical women in the Elpha Talent Pool and we'll help you find your dream role.
Preparing for the software engineer interview
What can you expect for your interview? Depending on the company, the interview process can include different steps in various orders. But generally, it’ll look something like this:
Initial phone screen: you’ll speak with a recruiter (or a member of the team, if you’re applying to a smaller startup!) who will discuss the details of the role and determine if you might be a good fit. Likely a 15-30 minute conversation.
Technical phone/video screens: these will be discussions with the hiring manager where you’ll be given coding challenges. You may be given a couple of problems to solve throughout the call, which will typically be 45 minutes to an hour.
“Onsite” (or remote) interviews: you’ll be meeting with potential managers and teammates for a technical portion, a couple of behavioral sessions, and possibly a cultural fit interview. These generally include a system design interview and whiteboarding, where you’re presented with a problem to solve in real-time. These can last between three to four hours.
With that rough idea of the process, let’s get into interview preparation. Here’s your 8-step checklist:
1. Do your research on the company.
Read their website, play around with their app, and get a feel for what the product is like. Research who you’ll be interviewing with to learn about their background and find any similarities you might have. You also want to try to get an insider’s perspective of what it’s like to work there. (For companies hiring on Elpha , you can check out their profile to reach out to women who currently work there.)
“Before your interview, google the company to see if anyone's mentioned the interview process or overall impressions of the company. Look at LinkedIn and see how long employees typically stay. Consider reaching out to a current employee for a (virtual) coffee. And finally, look at GitHub to see if code challenges have been posted.” - Sarah , Frontend Engineer at Splice
2. Practice algorithms and data structures.
LeetCode is a great place to code out problems, compile and run your solution, and learn from other people’s solutions.
“To practice, I generally say you need to get really comfortable with "Easy" level questions on Leetcode. Practice at least 1-2 questions every day during your job search because you want to be practicing speaking out loud, conveying your thoughts, your different approaches, etc. Even if you've seen it before, chances are you're not memorizing the solution so your approach may be different.” - Bonnie , Software Developer at Hatchways
“Review the Leetcode Discuss section for the company you’re interviewing for, in order to focus your technical preparation. For system design, I recommend watching tech talks and system design mock interviews on YouTube!” - Rachel , Software Engineer at Twitter
A few other resources that Elphas recommend:
AlgoExpert - A platform with hand-picked coding questions, video explanations, data structure courses, and solutions in 9 languages.
Educative.io - The Grokking the System Design Interview course, which is a complete guide to mastering the SDIs, hiring managers from Google, Facebook, Microsoft, and Amazon. Interview Cake - A course that teaches the right way of thinking for breaking down tricky algorithmic coding interview questions.
3. Read Cracking the Coding Interview .
This book comes up a lot as a great resource for preparing for technical interviews - it’s a classic!
“Cracking the Coding Interview will get you ready for white boarding interviews. I'd do at least a few problems from each section, and if you can't figure out a problem, go back and make sure you understand the solution after the fact. And then come back to that problem later and try it again. As you are going through the book, I'd choose a few problems that are challenging but that you also feel good writing solutions to that you can come back to as "Warm up problems" on the day of your interview. Lastly, I'd make sure to understand and feel comfortable with basic data structures and algorithms. That way you can put brainpower toward the difficult and unexpected pieces of the question the interviewer is asking, rather than CS fundamentals. I'd practice things like merge sort, BFS and DFS, etc. as a way to warm up and keep your fundamentals fresh.” - Cadran , Software Engineer & Founder at Elpha
4. Craft your answer to the introduce yourself question.
“Tell me about yourself” is a guaranteed question in nearly every interview. Prepare for it by crafting a 1-2min story of the key points in your professional life.
“One of the videos I recommend to people is the one about answering the question "Tell us about yourself": https://www.youtube.com/watch?v=nV6rXd_vtNY … If you're being interviewed by 4-5 people total, then you need to have a well-prepared and, yes, rehearsed answer ready. You need to treat it like an elevator pitch. Boil your story down to the key points (both in terms of experience and things that make you unique). Use these points to craft a 1-2min max description of yourself and practice it every day in front of the mirror.” - Anna , Junior Software Engineer at Novatec GmbH
5. Prepare answers for the other questions you know you’ll be asked.
This is really important, especially If you’re changing careers into tech or transitioning from a non-technical role. You have the extra hurdle of convincing the interviewer that you can ‘handle’ the technical side before you’ve gotten to that stage in the interviewing process. So what should you be ready to answer? Here’s what Azra , Software Engineer at LinkedIn says:
“Hands down the most common couple of questions as a career changer are 1) Why are you switching into engineering and 2) How do you learn new technical skills? For #2, the key is to make sure you point to an example of a skill you picked up on your own, how you did it, what roadblocks you came across and how you resolved them. Utilize the STAR method even if you're being asked a general question. I've found interviewers really appreciate concrete examples.”
If you're not familiar, the STAR method is a tool for answering behavioral interview questions. The acronym stands for:
Situation: Introduce the situation and set the scene
Task: Describe what your responsibility was in that situation
Action: Explain the actions you took
Result: Share what outcomes your actions achieved
Another question you'll likely be asked is the desired salary question. How you respond is so important that we've developed an entire guide for how to respond when you're asked about target compensation.
6. Practice by doing a few interviews with your second-choice companies.
If you’re newer to interviewing (or haven’t interviewed in a while), don’t make the first interview you have the one for your dream role. Solving difficult, timed technical problems in front of a stranger is tough! Interviewing with a few companies that aren’t among your top choices can help you get the nerves out.
“Practice with your second-choice companies first! This is a great way to get used to phone screens and whiteboard interviews in a lower-pressure environment before interviewing with your dream companies.” - Harriet , Software Engineer at Remotion
7. Get in the mindset.
Your mindset is just as important as the rest of your preparation and studying. Set yourself up in a mindset where you are committed to figuring out the problems you’re thrown and willing to ask for help. Truly prepare to ace the interview. As Cher , Principal Software Engineer at Apple, puts it:
“My top tip for acing an interview is surrendering to the idea that you're going to ace the interview. Seriously! We're putting on a knowledge and experience show with a bunch of strangers trying to gain employment. It's a nerve-wracking experience as it is, let alone as a marginalized individual.
Just be your most authentic, honest self. We're not really just trying to prove we know how to do the job; we're trying to gain the trust of potential teammates. The most important aspect of any interview process is to build rapport. The path of least resistance is humility and vulnerability. If you don't know how to do something or answer a question - just say so! Find a way to show how willing and capable you are to ask for help and figure out how to complete the task or learn something new.”
8. Finally, get a good night’s sleep before your interview.
“I usually make a point of not doing any preparation the night before a full day interview, and focus instead on getting mentally centered and getting a good night's sleep.” - Jessica , Engineering Manager at Square
BONUS TIP: For remote interviews, practice coding on interview tools.
“Now that we've been interviewing remotely, candidates who have familiarity with some of the tools that we use to interview have been huge! We use HackerRank, which allows us to follow along with the candidate as they code. It's not as robust as an IDE you'd use for developing, and so if you practice with it, make sure you don't rely on it for catching anything beyond minor syntax issues--it's easy to have a false sense of security.” - Alyssa , Software Engineer at Zillow
During the software engineering interview
Firstly, you’ve got this. 😄
Technical interviews usually have three parts:
Beginning chitchat (5–10 minutes)
Technical challenges (30–50 minutes)
Your turn to ask questions (5–10 minutes)
Let’s talk about the chit-chat portion first.
Remember: the most important aspect of any interview process is to build rapport. To connect with interviewers, try to have specific, different stories prepared. Alyssa is an engineer at Zillow who has interviewed hundreds of people for software engineering roles, here’s what she says:
“Really hone in on *specific* stories and incidents you can share for the non-technical questions. We are guaranteed to talk to all the other interviewers after we've submitted our feedback. It's okay (especially if you don't have too much experience) to share the same story for all the questions we ask you, but it would be even more impactful if you have different stories. Very frequently, during the debrief, we'll be like "the candidate shared that story with me too!" "And me!" "And me!". Unless there are different takeaways from that same story, we honestly don't get anything more out of the story. The more information we know about you, the more we can give you credit.”
You also want to be honest about your experience and capabilities.
“I really just like to be myself and be honest about my experience. You never want to oversell yourself and tell someone you know how to do *all the things* just to get your foot in the door and then not be able to deliver... Having a list of your best attributes, skills or accomplishments can really help if you get into an awkward lull in the conversation or you have to tell them "no, I don't know X..." "But I do have a lot of experience with Y and Z..." and then sell those things to them! Selling my soft skills was very effective (I think) in my most recent interview. I was honest about my level of experience with coding but also made sure to let him know that I'm a fast learner, hard-working, and a team player who is adaptable.” - Christine , Front End Web Developer at Stridek.
When you move into the technical portion, it’s really important to take your time to ask clarifying questions and make sure you fully understand what you have to solve. As Lirida , Founder and CTO at Learnable says:
“Ask clarifying questions and avoid making any assumptions. This can change what you think is a super difficult problem to a solvable one. Also, state your own assumptions clearly to the interviewer so they don't fill in the gaps themselves.
Especially now that interviews are remote, it could happen that the interviewer is not paying attention to your answer. They might be distracted by their laptop/phone/kids. In that case, ask a clarifying question or confirmation question like "This is how I'm planning to solve it/thinking about it, would you like me to expand further?". Something to bring the interviewer back into the conversation.”
Hopefully, if you’ve followed our preparation tips above, you’ve practiced in the same format as the interview is taking place - whether on a whiteboard or shared text editor. This should help you feel more comfortable and reduce the number of unexpected surprises in your interview. But what if you feel like it’s not going well?
When the interview isn’t going well...
What to do if you’re stumped by a question or feel like you’re not connecting with the interviewer
If you sense that an interview isn’t going well, it’s a great time to pause and check in with your interviewer. Here’s how we recommend you do that:
“If an interview is not going well, be honest! I am quick to say when I don't know something and try my best to be vocal about how I would approach something. Ask lots of questions. Think of the interview collaboratively. The interviewer, more often than not, wants to see you succeed, and wants to know what it'd be like to work with you. So, treat them as a friendly coworker.” - Sarah , Frontend Engineer at Splice
“If you notice that you aren't doing well, don't give up! Interviewers want you to do well and if you bomb a portion of an interview you can still nail the rest and get an offer. We want to at least see that you're trying. I remember there was a candidate who kept talking about how he didn't go to school for computer science, so he didn't know algorithms and data structures super well, but was a really great developer in X domain. Even if you did study CS, we totally understand that if you haven't interviewed in a while, you might be rusty on some of these concepts that aren't used in your day-to-day work! We didn't hire him, not because he didn't go to school for CS, but because *he didn't even try to solve the problem.* The entire interview was him talking about how much experience he has, but he wouldn't even try to sit with us and walk through what he would potentially do for the problem.” - Alyssa , Software Engineer at Zillow
Cadran , Software Engineer & Founder at Elpha shares some important reminders from the hiring manager’s perspective. If you feel like it’s not going well, it may have more to do with the hiring manager than you think!
“If you get stumped by a question, try to remember to talk through your thoughts out loud. Even if you get stuck, you can show the interviewer how you think which is important info for them when assessing you as a candidate. You can also pause and check in with your interviewer as you go, e.g. "I'm thinking about x and y and that I would take z approach. Does that sound like a good strategy to you?" That way you can get some input from them about whether you are moving in the right direction which may help you build confidence and also will help you avoid going down the wrong path and losing time. If you aren't connecting with the interviewer, just try to remember they are just a person, too. And might not actually be that great at interviewing! Or might be nervous, or might be dealing with a stressful project or some other situation. So just focus on the problem at hand as much as you can and focus on the parts of making the interview successful that you have control over.”
You can also ask to take a short break! “If you're stuck (due to anxiety, brain freeze, anything could happen), it's OK to ask the interviewer: "Can I have a few moments to think?", or ask for a restroom break. Have water nearby, taking a mini-break for water can help.” - Lirida , Founder and CTO
You’ll get through it. And once you do, it’ll be your turn to ask the hiring managers any questions you have for them. We recommend choosing a few from the below list!
What should you ask the hiring manager?
Questions to ask your interviewer in the final portion of the interview
The opportunity to ask the hiring manager your questions is a really important time to help you determine if this role is a good fit. Generally, you want to ask questions that will help you better understand the company and team structure. You want to make sure their engineering team structure and the style of your future manager align with what would work for you. A few specific questions to determine this would be:
What are the team's key challenges today and over the next year? How does that fit into what the company is doing more widely? How does this role fit into those?
If you could imagine the perfect candidate for this role, how would you describe them?
How many direct reports do you have?
"How often do you meet 1-1 with your direct reports?
Who is on the rest of the team, and who would I work with most closely?
What is your approach to building a diverse and inclusive team?
Dive even deeper with questions like these, recommended by Rachel , Software Engineer at Twitter:
What does the roadmap look like in terms of projects/work that I would be directly involved with?
What has been the highest impact work you as a manager have been a part of so far at the company?
What has working for the company been like during the transition to remote work, and what are the plans post-Covid?
What does career growth look like within this role, and how does performance evaluation work at the company?
Belecia , Computer Science Grad Student at the University of Illinois, suggests figuring out what your career and personal values are and craft your questions around them.
“For instance, my values are:
📌 Learning (I always want to try new things and learn something new)
📌 Growth (I want to look back and see that I have stretched myself which ties into the learning)
📌 Community (people make me happy and I want to enjoy the people I work with as well as connect to the world around us)
📌 Flexibility (as I change, I want to be able to adapt a role to my needs and interests which has both financial and emotional components)
With these values, I rank which ones are most important and then ask targeted questions around them (for example, learning - if I am interested in learning about a new technology/role/product, how will the company support me in trying those things?)”
To better determine if the company could be a good fit for you culturally, here are a few ideas of questions to ask:
What are some of the company's recent pain points and what was done to address them?
When you’ve done your best work here, what about the culture has enabled you to do that?
What did you learn about the company after you started working here, that you didn’t know before?
What’s something that would only happen here, given the company’s unique culture?
How does the company evaluate and onboard new tools and processes? Can you give examples of tooling the company has invested in to make things easier for developers?
What are some of the things you’d like to see improved at the company?
Bonnie , Software Developer at Hatchways, has been on the hiring side of interviews many times:
“As a hiring manager, one of my favorite questions to be asked is "What do you think the biggest challenge of this role would be?” This question helps me reflect on why I’m hiring for this role and respond honestly to the candidate.” For a final question, you can also very pointedly ask the hiring manager for their thoughts about you. While it seems daunting, this question can allow you to address any uncertainties they may have and get direct feedback about what you can work on.
However, be careful with this one as it can catch hiring managers off guard. Whether or not you ask it should depend on the communication style of the interviewer and the rapport you’ve developed throughout your conversation.
“In the first meeting, near the end of the interview, I always say, "May I ask you a bold question? So we've been talking for 30-45 mins, do you have any concerns about me in this role?" Asking this is in fact bold but I've found extremely positive results. If they do have a concern, you can address it right then and there. You can also actually get honest interview feedback which is rare as most companies generally don't allow interviewers to write feedback for liability concerns. The first time I did this I was so nervous I could barely get the words out but it gets a lot easier.” - Shanea , Founder & CEO at COdesee
Whew! Between studying, practicing coding, preparing questions, rehearsing answers, and then staying calm and focused - interviewing is a lot! One thing that’s important to remember is that YOU are interviewing THEM too. You want to find a team where you are going to feel included, with clear goals and opportunities for growth.
Most companies are open to re-interviewing for a different role, team, or timeframe, so if things don't go your way the first time around, keep at it. Your ideal match is out there! We hope this guide was helpful in preparing you for an upcoming or future interview. If you’re looking for your next software engineering role, check out Elpha Companies that are hiring now . You can also submit your info to our Candidate Database at any time to have companies reach out to you when they have open roles that match your background.