How to Pass Software Engineering Interviews in Big Tech
Looking to score that software engineering role? The next hurdle for you to overcome is to navigate the hiring pipeline all the way to the end. This means getting your resume in front of a recruiter, passing the recruiter screening, passing the technical phone screen, and finally all of the interviews.
In this article, I’ll cover the entire process end-to-end. And I’ll let you know what to do to maximize your chances at each step.
You can treat this as a technical interview cheat sheet for software engineer interview prep.
The Process Before the Interviews
Even before the interviews, there’s a whole process to making sure you land yourself in the company recruiting pipeline and get in front of real eyes. However this process is obscure, and the amount of things you can do to grab a recruiter’s attention is overwhelming.
Knowing what channels are most effective improves your chances a lot.
How to Get Into Pipeline
Best way - have the recruiter reach out to you. Obviously inbound interest is highly effective! Still, there’s actionable things. you can do to position yourself for more inbounds. Here are some tips:
- Make some recruiter connections. Recruiters may add you to company lists and refer you to other recruiters. How to establish those connections? Apply to companies as you usually do, and your contact information will naturally distribute among lists that recruiters use to do outreach. So be sure to be responsive.
- Have an online presence. Recruiters use the internet to find people for roles. If you position yourself by connecting your identity to your profession, then chances are you will pop up in those searches. In black and white - have a LinkedIn profile setup and make it search optimized. Or have a github account and share your projects. Or contribute to open source and make a name for yourself.
Now obviously, you can’t sit on your hands and hope for inbounds. Sometimes you gotta grab fate in your own hands!
- Referrals. In my experience, this is the single most effective way to get yourself a real consideration. Great companies, get a ton of people applying to them through websites, LinkedIn, DMs, etc. With a big chunk of those just being bots. So they have automatic systems and algorithms that filter out a ton of applications. On the flip side, a person on the inside that provides a warm intro is so powerful. Their vouch for you carries so much weight.
- Provide real value. You can grab attention through hustling. If you really like what that company does and follow them pretty closely. You can tell what they are working towards and need. Figure out a way how you can use your skills to move the needle forward for them and show them the result of your work by contacting them. You don’t need permission.
Recruiter Screen
You made into the pipeline! Next, would be a quick call with the recruiter. The conversation will consist of multiple talking points:
One, their goal is to familiarize you with what the company does.
Two, tell you about the role and team. Things like responsibilities, scope, area of work.
Three, hear about your background and verify fit / qualification.
And finally, explain the rest of the recruiting process.
Things to note, make your talking points align to expectations for the role. Be ready to talk about your background and projects you worked on. They will also likely ask you about your style of working to determine your level. Like amount of time you spend coding, or the amount of collaboration you have with functional partners.
Types of Interview Questions
After the recruiter screen. That’s when your real technical interviews start. You’ll typically have one phone coding screen and ~5 back to back rounds of “onsite” interviews. Consisting of behavioral, algorithms, and system design.
the phone screen is a coding algorithm exercise. And is there to validate that it makes sense to have you do full onsite interviews. As a result, companies aren’t usually too picky about you performance on it.
Big tip: with technical interview questions, the main thing is to maintain a two sided conversation with the interviewer. Explain your thought process, clarify their statements, and ask questions. One, they evaluate you by knowing how you think. Two, they expect you to ask clarifications. Three, you won’t dig into things they don’t care about.
For example: before talking in depth about a specific component, ask if they want you to elaborate. If you don’t remember a certain library syntax, say that and ask what you can do instead, as opposed to getting stuck.
Here’s an overview of all the onsite interviews:
Behavioral Interview Questions
The behavioral interview for software engineers is just another way for the interviewers to get signal on whether you’ll be a fit for the role.
It’s just a 30-40 min conversation between you and the interviewer.
At a high level, the interviewer should be evaluating you holistically - combining all the their impressions during the span of the chat. They will be looking for signals that you are talking about topics and situations that a person with a similar role would have been through. They are looking to pick up on the nuances of the experiences that you said you have.
The other agenda of these interviews is to access how you are as a person. Like, will you be pleasant to work with? Do you handle conflict with your potential team mates well? Are you responsible? Do you take initiative? In other words, they’re trying to gauge your emotional intelligence.
Algorithms Interview Questions
This type of interview question is the most common one that’s associated with software engineers.
It usually starts with the interviewer giving you a technical problem statement. You then have to implement a working code solution solving the problem. Explain how and why it works. Give explanation of performance. And walk through edge cases.
Things to keep in mind to have a successful session: clarify the statement further, speak your mind, start from less optimal approaches and work your way to the most optimal. Practice makes perfect.
Best way to prepare for this is to solve problem statements online from a number of platforms. Best websites for practicing programming are leetcode, codeforces, spoj, hackerrank, etc. Try for a ratio of 10 easy / 3 medium / 1 hard. In the beginning only easy and medium. Refresh your knowledge by reviewing data structures and algorithms.
System Design Interview Questions
System design interviews test a candidate's ability to create high-level architectures for large systems within 30–40 minutes. Questions like "How would you design a cloud storage system like Dropbox?" or "How would you design a search engine?" are common, but real-world systems take months and large teams to build.
What companies care here is to access your problem-solving approach, thought process, and your level of professional engineering experience. The goal is to see how systematically and strategically you tackle challenges utilizing knowledge from your engineering toolbox. You should focus on demonstrating clear, organized thinking and a step-by-step approach to problem-solving.
Best way to prepare is to make yourself familiar with distributed systems concepts. Things like load balancing, sharding, partitions, replications, CDNs, etc. You can refresh you memory through great books like “Designing Data Intensive Applications”. And through various online blog posts and video presentations.
Interviews for levels
Based on the seniority level you’re applying, you will get a different bag of interview rounds. The expectations towards your answers will also vary based on the level. The higher expectations respective to the level, applies mostly to the behavioral and system design interview questions. Here’s what to expect:
Senior Software Engineer Interview Questions
For senior software engineer role and further, you will have a behavioral, couple of coding rounds, and couple of system designs. Behavioral and system design rounds carry most weight. For the behavioral, interviewer will look to see that your answers are nuanced and show breadth of experiences that one should have gone through and seen as a senior. Read more about senior expectations here. Similarly, being familiar with a variety of distributed system concepts and how to apply them will reflect your experience, as a senior, in system design rounds.
Software Engineer Interview Questions
For software engineer role, you will have a behavioral, system design, and couple of coding rounds. Coding rounds being the most critical with lower expectations for behavioral and system design. You should still be able to demonstrate problem-solving skills and ability to explain your thought process for system design.
Entry-level Software Engineer Interview Questions
For entry-level software engineer role, you will get a behavioral interview and the others will be coding rounds. The behavioral interview questions will be mostly used to get a sense of your general professionalism, nothing crazy. Most importantly, your performance on the coding rounds should be excellent - clear thinking, iterative problem tackling, clean code.
FAQ
Can’t get any software engineering interviews?
This is totally normal. Life isn’t always smooth. There are periods of growth and pullbacks. The job market is a market with supply and demand.
See how you can optimize your efforts more based on the contents of this post. Focus on what you can control - your personal inputs. As for results, they will come. Sometimes you just need time.
Questions to ask as an interviewee in engineering roles?
Worst thing is to say “no questions.” This is an opportunity to continue to build rapport with the interviewer. Which results in improving your impression on the company.
What do you ask? I like to ask personable questions. Those will always be relevant and the interviewer will actually feel good about sharing their mind about themselves.
So ask about their experience, what they enjoy about their work, how they feel about their time on the team, etc.
No experience? How to start?
I have a step by step guide on how to become a software engineer in this post. No degree even needed, just a lot of willingness and key knowledge that I hope you can pick up on from this blog.