Technical Interview questions for Programmers
Technical questions come in various forms. After sitting down with multiple engineering managers and engineers who've conducted 100s, if not 1000s, of technical interviews, I've learnt that there are 3 different type of technical questions.
- Those that establish credibility
- Those that assess domain expertise (I like to call this the 'theory')
- Those that seek to evaluate practical coding skills ('practical')
Credibility
These questions will focus on your past work and how you've contributed to the growth/goals of your team. They want to know
- Were you at the previous job for 'the ride' or did you meaningfully contribute?
- What did you actually do?
- Can you explain what you did in detail?
- How did your work make a difference? What was it's impact?
- What technical problems did you face and how did you overcome them?
Domain Knowledge
This is the 'theory' part of the interview. If you're being interviewed for a backend developer, you need to know about the response/request cycle and explain the different steps in it. For a full-stack developer, you need to know the whole stack from the front-end to the back-end to how network requests are made. Understand how each layer works conceptually and be able to explain them well.
Let's look at the full-stack web developer role in a bit more detail:
- Explain what happens when you type a query in Google.
- Explain how does your browser know to serve this specific html file when you type in a URL.
Don't miss details when explaining!
Practical Skill
This is the practical part of the interview that most of us are familiar with. They're testing for your software engineering skills here. And to put it crudely, can you really code? Here're some basic things interviewers will look out for:
- Do you structure your code well?
- Do you abstract your functions well?
- Do you check your corner cases?
- Do you test your code?
- What about base cases?
Typically, people think of algorithmic or data structure based questions. However, that's not the only way to test this. Typically, you want to tailor this to the context of the job. For the full-stack developer example, something relevant to ask would be to add a new web page to an existing app that asynchronously loads data from the backend to display in a table.