How to Prepare for and Ace Your Software Engineering Interview
Lani đȘŽ
Posted on June 1, 2021
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 the place where driven, ambitious women gather to build our careers, thatâs what Elpha is here to help you do.
If youâre feeling anxious or stressed about what to expect in the interview process, know youâre not alone. Youâve landed in the right place.
We asked top women engineers on Elpha who work at Apple, LinkedIn, Twitter, Square, Zillow, Splice, and lots of other companies to share the most common 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 hiring 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.
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 preparing. Hereâs your 8-step preparation 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 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 Arza, 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
Conclusion
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.
Posted on June 1, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.