Questions for a live technical interview — what questions I like to ask and why
Luke Duncan
Posted on April 30, 2020
Technical interviews are probably the most daunting experience a software engineer can have. With every interview, comes a different set of expectations, skills needed and questions asked during an interview.
I’ve gone through a bunch of technical interviews as a candidate. These interviews have ranged from some of the biggest companies in the world, all the way down to small 2-person technology agencies. I have also been in the interviewer seat at companies I’ve worked at in the past. I’ve conducted white-boarding interviews, reviewed take-home assignments and sat in on live-coding sessions.
These experiences have allowed me to develop a good sense of what questions to ask during a technical interview — or at least questions that I like to use to gauge a candidates technical chops.
Before I go into the questions, let me first clarify what I like to see in candidates. I think this will provide some of the context as to why I ask certain questions. Most of the points below cater to both junior and senior engineers, and the candidate has at least broken through the HR gate and first phone screen.
What I look for in candidates
- A good base of knowledge in whatever language THEY choose. Demonstrate fundamentals e.g. loops, statements, data structures. If the candidate isn’t familiar with the language the company uses, no big deal. And if I feel like they do need help, I tell candidates to Google to get the specific method or helper function. After all — If I haven’t been using Javascript for a while, I always need to Google a simple for loop.
- That being said — if it comes down to two candidates who we think are the exact same, and one has experience with the language my company uses, I’m probably picking them.
- I’ll be able to tell if you don’t have a good grasp of the language just from the way your thinking, and typing. You can’t Google everything.
- Good, clear, basic communication. While I get that some conversations have to get REALLY technical, speak to me in plain language to describe a problem and to tell me some of the ideas you have. Describe your solution and tell me some of the potential draw backs as well.
- Ability to solve problems that the company currently deals with. Some of the code questions are setup to mimic this.
- The ability to work alongside me. Showcase that you can work well in a team.
Below you’ll find the questions I like to ask. Depending on the interview setup, I will ask a few of the smaller questions if it’s going to be a 45+ minute interview. If it’s 30–45 minutes then I like to ask one of the bigger questions.
I’ve purposely left some things vague in the questions, just in case a future candidate I’m interviewing with finds this article hehe! But +++ if you are prepping, tell me you saw this. Most of the questions I ask can be applied to any language, but obviously in some cases e.g. hiring a React developer, you want to use React.
[Fullstack] Turn a CSV file into an array of objects.
- This question requires you to use a IDE like CoderPad that lets you upload files
- Let’s me figure out/see how they work with objects, arrays and basic loops
- Includes use of basic file system to read CSV — we purposely have the fs.readFileSync to start off. This lets me see what they know about file usage and what their thoughts are about how to handle it next. The let variable is there on purpose. I want to see if they know what the difference is between const, let, var. I’m waiting to see if they do something with it.
- I’m looking for senior engineers to complete this relatively quickly (10–20 minutes)
- For junior engineers, I’m looking for them to complete this in around 30 minutes
- From experience, senior engineers can usually complete this anywhere from 10–15 minutes
const _ = require('lodash');
const fs = require('fs');
// CSV contents
// Company,Total Users,MRR,AR,Profit\n
// "A, Inc",100,359,2490,28\n
// "B, Inc",43,86,1408,457\n
// "C, LLC",99,1093,12753,5397
// Specifically used let here
let csv = fs.readFileSync('./data/test.csv');
// Below, turn the CSV into an array of objects
[Frontend] Create a simple counter using React
- This question requires you to use a IDE like CoderPad that lets you upload files
- The counter should be able to increase, and decrease. The initial starting number should be 0. The numbers can go negative.
- For front-end interviews, I like candidates to build out simple things. It allows me to see how they think in terms of component architecture
- If we have an hour or longer, I like the candidate to be able to interact with 3rd party data and making a simple API call — but most of the time I just ask for a simple counter
- Because it’s a rather large task — I like to help or work alongside the candidate.
- Extra — will the candidate take time to think about styling, UI/UX etc.
<html>
<head>
<meta charset="UTF-8" />
<title>Hello World</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.2.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.2.0/umd/react-dom.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.min.js"></script>
</head>
<body>
<div id="root"></div>
<script type="text/jsx">
class Home extends React.Component {
render() {
return (
<div className="home">
<h1>Hello world!</h1>
</div>
)
}
}
// Render component to the page
ReactDOM.render(<Home />, document.getElementById('root'))
</script>
</body>
</html>
[Fullstack] Fibonacci Series
- This question requires you to use a IDE like CoderPad that lets you upload files
- Usually I don’t like asking these types of questions, but this is the one I do like — see below.
- I want to see if they know and can talk about recursion/big-O notation
- My hope is that they spit out the simplest solution, and then we can talk about recursion, and as the series of numbers goes up — how it effects the time for calculation
- Candidate may have been asked this previously. I don’t care. It probably means they’ve thought and at least know the solution and recursion.
- As a junior candidate, I don’t mind that they solve this with a simple solution and exponential runtime
- As a senior candidate, I expect you to be able to solve this for O(1), O(logN) and at the very least O(n).
# Ruby
n = 7
def fibonacci(n)
# write code here
end
puts "#{n}'s fibonacci value is #{fibonacci(n)}"
# RSpec is available within this pad
# Below, write a test that makes sure the value of the 7th fibonacci value is 13
RSpec.describe fibonacci do
# write code here
end
[Fullstack] Find the largest 5 digit number in a sequence
- This question requires you to use a IDE like CoderPad that lets you upload files
- Looking for good use of loops, sorting and potentially indexing.
- As a junior candidate, I don’t mind that they solve this with a simple solution and exponential runtime
# In the following 6 digit number: 283910
# 91 is the greatest sequence of 2 consecutive digits.
# In the following 10 digit number: 1234567890
# 67890 is the greatest sequence of 5 consecutive digits.
# Complete the solution so that it returns the greatest sequence of five consecutive digits found within the number given. The number will be passed in as a string of only digits. It should return a five digit integer. The number passed may be as large as 1000 digits.
# Write code below
These are only a few examples of some of the questions I like to ask in a technical interview. I think for the most part they are pretty straight forward — the only one that may cause a little confusion is the ability to understand Fibonacci sequence. Some candidates may take a few minutes to understand what it that is if they have never heard of it, and that is completely fine.
The whole purpose of the technical interview is to figure out if a candidate will be able to fulfill the demands of a role, and another chance to see if they will fit character/personality wise. So I like to draw up and select a question that best aligns with the position the candidate has applied for.
If you have your own questions that you’d like to share, I’d love to see them. And if you have any questions about using a live coding IDE for technical interviews — shoot me an email at luke@coderpad.io, it’s what we specialize in!
Posted on April 30, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.