Being able to pass technical interviews is crucial for career growth as a software engineer, yet it can be hard to know exactly how to prepare. Different software companies evaluate engineers in different ways and there’s nothing worse than being blindsided in a pressure-filled or important situation.
Fortunately, technical interviews can be broken down into two broad categories: domain specific interviews and computer science fundamentals interviews. To grow your career as a software engineer it’s important to recognize the different methodologies for evaluating talent. Improve in the area where you need the most help. This article breaks down what you can expect from each type of interview and what you can do to nail them.
To grow your career as a software engineer it’s important to recognize the different methodologies for evaluating talent.
Domain specific interviews
Domain specific interviews usually entail specific knowledge about the technology you are most comfortable in. For example, if you mostly use Angular 1.x for your front end development and the company has an Angular frontend they could ask about Angular controllers, directives and services. Be prepared to build, showcase and discuss Angular.
Domain specific interviews focus on what you’ve actually built. In order to pass these interviews it is important that you’ve built projects in the relevant technologies. Be proud of your work and don’t be shy to dig into the technical details of specific projects. Projects should be recent. No one wants to hear about some code you wrote last year and haven’t touched since. It will feel stale to you and that will come off in the interview.
With a take home test, be prepared to put in a ton of work.
Another common tactic for domain specific interviews is building something awesome or debugging actual issues. This is normally a take home test that you will have 24 to 48 hours to complete. For example, if you’re a Laravel developer and the company uses Laravel they may ask you to build a miniature version of the company’s product or products they regularly build. With a take home test, be prepared to put in a ton of work. Have starter templates ready and don’t be afraid to google for answers, email for help and use outside packages. The most important criterion for passing a domain specific interview is to showcase that you can build something that works!
Computer Science fundamentals interviews
Computer Science and fundamentals programming interviews are categorically different from domain specific interviews. These tests are to evaluate your problem solving ability and focus more on finding optimal solutions rather than simply getting things done. Oftentimes the interviewer will not ask anything about who you are, your work history or projects you’ve built. In computer science fundamentals interviews the job of the interviewer is to asses your raw programming ability, normally through questions about data structures and algorithms.
Computer science fundamentals interview questions can be formulaic. Learning data structures and algorithms requires extensive preparation and many hours of study. You will need to know your programming language of choice backwards and forwards, data structures and algorithmic approaches to solving problems.
Computer science interview questions can generally be solved with six different types of algorithmic approaches:
- Depth First Search / Breadth First Search
- Sliding Window
- Divide and Conquer
- Dynamic Programming
Study up on each of these approaches, do practice interviews with other software engineers on Pramp and practice interview questions. Interviewing is a skill independent of software engineering that you can get better at through practice and repetition.
Computer Science fundamentals interviews generally follow certain problem structures that can only be discerned through hours of practice and preparation. Even though some of this knowledge will not be applicable for day-to-day programming tasks, if you keep at it you will crack the interview and have offers pouring in from more places than you’d ever expect. If your goal is to get more job offers, definitely read Cracking The Coding Interview and check out this free list of interview resources to prepare.
So which approach is for me?
As a software engineer looking for a job, there will be a natural pull between building stuff, learning new tools and practicing interviews. Choosing what to focus on depends on what you are looking for.
If you are after a job at large reputable tech company like Google, Twitch, Amazon, Uber or Square study your fundamentals. Often times it doesn’t matter if you’ve built the best most complex thing in the world, if you cannot pass computer science fundamentals interviews these companies will not hire you.
Small startups on the other hand are usually racing against the clock to get their product working, shipped and out the door. These companies embrace domain specific interviews because they want to see what you can build and what technologies you are comfortable with.
When interviewing with companies, your recruiter or point of contact at the company is your best friend. Ask directly what the company’s hiring process is and what criterion they use for evaluating candidates. It’s important to know what they are hiring for so ask questions and read the job description very carefully. It’s industry standard to have a few rounds, comprising of phone interviews, screen shares and in person interviews.
If the interview involves a screen share it’s most likely going to cover computer science fundamentals. They’ll give you a problem you need to solve while the interviewer watches and you explain your thinking.
Take home projects commonly test domain specific knowledge. It’s common with agencies and startups. You’ll build something in 24–48 hours and then present your code at a later date.
Normal phone calls are generally about your attitude, communication and background. It’s hard for engineering managers to get strong signal about your ability through conversation alone.
In person interviews can cover anything but normally come at the end. Hopefully by the time an onsite comes up you have a clear idea about the opportunity and the methodology the company uses to hire.
To find out about what type of interviews companies use, consider reading reviews on Glassdoor, Angel.co or reaching out to current employees on linkedin.
Talk to your recruiter and points of contact at the company your interviewing with to get an idea of what you can expect in the interview process. If you’re not familiar with data structures and algorithms, practice on Pramp or the service that works best for you. If you haven’t had a chance to build many things go forth and ship product! Be prepared to talk about your work and the software you’ve built. Building amazing products and knowing computer science fundamentals are both important ways to land new opportunities in the software engineering field.
“The less confident you are, the more serious you have to act.”
- Tara Ploughman
A final note about interviewing
It’s important to remember you are interviewing the company just like they are interviewing you. Often times the work during interviews will be similar to the job you’ll be asked to perform. Are the challenges they give you the type of work you like to do? Are the people cool? Do they respect your time and abilities? If the answer is no to any of those questions consider looking elsewhere. Know your strengths and weaknesses and remember to have fun during the search process. Interviewing is a great way to meet people, learn about new technologies and search within yourself.
Failure and rejection are part of life so keep a positive attitude, work hard on what you can control and don’t worry about what you can’t!