General Interview Questions For Developers
General Interview Questions For Developers
1.
Tell us a bit about the latest project you worked on. Was it completed
successfully? Explain how you contributed to its success and how you
handled any obstacles you may have run into.
This question should give you insight into the candidate’s overall contribution to the project, their
management skills and how they work with a team, as well as their interaction with project management
and other stakeholders. Software projects almost always face roadblocks and complications, and being
able to identify obstacles, solve issues quickly and efficiently, and get the job done properly and within
2.
Talk about a time when you had to make a critical decision during production.
What happened? How did you manage it?
This question should help you judge whether a candidate is able to think for themselves, analyze
and evaluate issues quickly and clearly, and recognize the most logical relationship between
ideas.
Critical thinkers often also have an explorative mindset which can lead to innovation and the
improvement of production systems and processes.
3.
How would you explain APIs to non-technical stakeholders?
Being able to communicate well is one of the most important skills a candidate can have. A
question like this will give you an idea of how the candidate handles the most difficult or complex
conversations.
An API (Application Programming Interface) may be used for a web-based system, software
library, computer hardware, and an operating or database system. It is a set of rules (code) and
specifications that software programs can follow in order to communicate. Simply put, it works as
an interface between different programs and facilitates their interaction.
While this answer is accurate enough, it may come across as “just more tech-speak” to a non-
tech-savvy audience. A better answer would be:
“API” is a very generic term—it can be used in all sorts of programming contexts: websites, mobile
apps, desktop software, and even operating systems (e.g. Windows, macOS, or Linux). It’s a
specification for how a piece of software can be used by other pieces of software.
This is a little better: There’s less of an academic tone, and some precision was traded for slightly
more relatable terms like “web site” over “web-based system” and “desktop software” over
“software library”. However, it still gets too technical in that it has to have an aside to define OSes,
which the audience may not be familiar with.
An API tells programmers how to automate a product—anything from web apps like Twitter all the
way down to Windows itself. For example, I could use Twitter’s API to fetch our company’s most
recent tweets and then display them on our website. That way our social media specialist can
simply tweet, without having to always take extra steps to copy the tweet to our website.
Here, the answer gets across three key aspects of the topic:
1. What it is, in very relatable terms: Everyone has heard of programmers, Twitter, and Windows.
2. What it does, using a concrete example. Here the example again uses familiar concepts:
Tweeting and displaying something on a web site.
3. Why it’s beneficial, building on the example and highlighting the “before and after” difference:
It saves time and lets employees focus more on creativity over monotony.
This should give you an idea of what to look for, but feel free to choose a more familiar technical
term than “API,” if applicable. Communication is one thing, but it would be a definite red flag if your
candidate’s answer wasn’t even correct!
4.
Here is a simple programming challenge. Could you have a go at solving it?
Example question 1 (shorter time frame): Write a function to compute the Nth
Fibonacci number.
Example question 2 (longer time frame): Write a function that takes the current
position of a knight on a chessboard, and returns a preliminary list of possible
moves the knight could make. (That is, the current positions of other pieces
are not provided, so you can’t check against capturing pieces on the knight’s
own side nor making their king vulnerable to capture.)
Giving candidates a simple programming challenge may seem trivial, but it’s useful for several
reasons:
It gives you an opportunity to see how well they work under pressure. (It’s important to have
them do this in front of you—you need to hire people who can write code under stress when
needed!)
It shows simply whether they can write code or not, and how experienced they are.
Depending on what kind of challenge you choose, it can help you differentiate skill sets. It also
helps tease out their scientific/mathematical background and whether they are a high-level
thinker.
5.
What programming languages do you use? Which three do you prefer, or are
most familiar with?
This question will give you an idea of the candidate’s programming knowledge, their level of
proficiency, and whether they are a good fit for your company.
GitHub, a code-sharing website used by developers from around the world, listed the following as
ten of the most commonly used programming languages and technologies at the end of 2017:
6.
What do you think are the most important aspects to pay attention to when
reviewing another team member’s code?
Code reviews are fundamental to the software development process, even when there’s only one
engineer. By posing this question you’ll get an idea of the candidate’s knowledge and problem-
solving skills, their attention to detail, and whether they can keep an overview of the project.
“I first look for security, functionality, and readability. Is the code simple, or cluttered, bloated, and
inefficient? How many lines of unnecessary code will I need to re-write or remove? I check for any
weaknesses that could cause vulnerabilities and confirm that regulatory requirements have been
met.”
Everyone has their own coding style and every developer or team will have requirements that are
specific to their codebase. Effective code reviews often have checklists. Below is a limited list of
general suggestions you could consider including:
No memory leaks
But more important than which exact points a candidate brings up is their reasoning for doing so.
Be wary of candidates who get stuck on tabs-versus-spaces bikeshedding at the expense of more
crucial engineering elements: The above items shouldn’t all carry the same weight.
7.
Do you consider unit testing essential, or a waste of time?
Every engineer/developer worth considering should be familiar with unit testing. Asking this
question will give you an understanding of their attitude toward it, and what level of priority they
give it in their working process. Do they follow test-driven development (TDD) or behavior-driven
development (BDD), or are unit tests something they tack on afterward for the sake of process
conformance or mere appearances?
Typically regarded by most industry professionals as being a best practice in code maintenance
and software development, unit tests are usually part of an overall testing strategy. They test for
logic errors and coding flaws, helping to prevent bugs from advancing to the finished product.
Plus, because they’re automated, they prevent regressions, where bugs return that had already
been fixed.
8.
What has your experience been like as part of an agile software development
process, if any?
The Manifesto for Agile Software Development outlines an approach based on iterations rather
than a waterfall model. Requirements and solutions are generated through the collaboration of
self-organizing and cross-functional teams and their end users. Among other things, it encourages
a flexible planning style and a rapid response to change.
Knowing how a developer feels about agile development can help you understand how they will fit
into your own process. Open-minded developers that are also able to see flaws in how agile
processes have been run can provide valuable feedback to help your team’s methodology grow
and evolve.
On the other hand, if they’re dead-set against a core process of yours, there may end up being too
much friction for them to stay productive.
9.
How familiar are you with object-oriented programming (OOP)?
OOP has been a standard convention for over 20 years and is organized around objects rather
than actions, and data rather than logic. It is ever-present and it is very unlikely a candidate would
not have run into it at some point.
class/static method
static/class initializer
constructor
destructor/finalizer
10.
Please explain big-O notation in the simplest terms.
Big-O notation (Landau’s symbol) is used in computer science to describe the performance or
complexity of an algorithm. It describes how the runtime or space requirement of a function grows
as the input grows.
Two functions with the same Big-O notation will tend to have the same growth rate and thus have
the same relative performance with large inputs.
For example, the bubble sort algorithm has an average time complexity of O(n^2) while merge sort
and heap sort both have an average complexity of O(n log n). In average cases, merge sort and
heap sort will demonstrate similar performance while they will both outperform bubble sort.
They should know that algorithms usually fall into the following performance classes:
Constant-time
Logarithmic
Linear
Polynomial
Exponential
Factorial
They should also be able to explain why a given operation falls into a particular complexity class.