If I told you that I could give you a spell that will let you live without ageing forever, would you believe me? I’d take my chances and say no. Most of you might even end up laughing at just the mention of spells. Why, because it is ridiculous. That is precisely the kind of thought top HR leaders have when someone asks about asking Coding oriented questions in an interview.
Agreed that vetting your developers during an interview is of paramount importance, but that shouldn’t put you off from the primary objective. Interviews are only places to figure out whether you should hire that person or not AFTER you have verified their technical prowess. Point being that yes technical questions are essential in an interview, but not coding oriented ones.
So here are our top picks for the questions or the type of questions you can ask in an interview to your prospective Back-end developers.
Questions about Code Concurrency
We are almost at the end of 2017, and systems are only getting powerful by the day. Concurrent Programming is essential even to begin unlocking the total potential of this untapped power. And every line of code written(slightly exaggerated) has to be concurrent and in effect scalable to a global level.
- What is Process Starvation?
- Why is testing multithreading / concurrent code so tricky?
Questions like these are primitive but also help you understand the grasp of the person at the elementary level of thinking.
Questions about Programming Languages in general
The language of choice is usually what defines a programmer. Every person has their “favourite.” And knowledge related to programming languages, in general, helps you understand the depth of understanding the person has.
- Show me an example where an Anonymous Function can be useful.
- What is Dynamic Method Dispatch?
- What are namespaces useful for? Invent an alternative.
- What makes a good language good and a bad language bad?
Questions like these help you see what level of understanding the person has about the fundamental working of programming languages.
Questions on Code Design
Code Design is vital to understand what approach the person takes while developing an application or a project. You can then further ask questions on their choice of approach and figure their coding style.
- What’s the difference between cohesion and coupling?
- C++ supports multiple inheritance, and Java allows a class to implement multiple interfaces. What impact does using these facilities have on orthogonality? Is there a difference in impact between using multiple inheritance and multiple interfaces? Is there a difference between using delegation and using inheritance?
Questions like these help you understand whether the person fully understands the pros and cons of their approach, and chooses based on the requirement or comfort.
Questions on Software Design Patterns
Software design pattern is the template on which you create solutions to various problems. Think of it as the blueprint to a master key with slight modification everytime you want to use it for a new room. The way a person envisions a multi-purpose solution tells a lot about the horizon of thought of that person.
- The ability to change the implementation without affecting clients is called Data Abstraction. Produce an example violating this property, then fix it.
- Suppose the system you are working on does not support transactionality. How would you implement it from scratch?
Questions like these help you understand how big the person can think. Building things from scratch and ensuring they support multiple levels goes a long way is a trait of the best.
Questions about Databases
Every Back-end developer is de-facto expected to know his/her way around databases. When one works with servers, you have to deal with databases, and knowing how the storage and file systems work is an indicator of how seriously every aspect of the job is taken by the interviewee.
- Why in SQL SELECT * FROM table WHERE field = null does not match records with a null field?
- How is Lazy Loading achieved? When is it useful? What are its pitfalls?
Questions like these help in having a necessary assessment of the person’s understanding of the interaction between back-end services/applications and databases.
Questions on Code Versioning
Version control is now part and parcel of every development project. You should expect every person who is a part of your team to know how to commit code and work on a Version Control System.
- What are the pros and cons of Distributed Version Control Systems like git over Centralized ones like SVN?
- Why branching with Mercurial or git is easier than with SVN?
Such questions will help you assess whether the people you interview have the necessary knowledge about the working of databases.
Questions on Distributed Systems
Everything we see today is on the cloud, and the performance is multiplied because of distributed computing. You can at least expect your developers to-be to have the know-how of how these systems work.
- If you are building a distributed system for scalability and robustness, what are the different things you’d think of in the case you are working in a closed and secure network environment or in geographically distributed and public system?
- How to manage Fault Tolerance in a Web application? And in a Desktop one?
Questions like the ones above will help in the assessment of a person’s ability to think beyond the usual scope.
Questions about Software Lifecycle
Software lifecycles are what sets the pace for a given development project. Knowing the perfect time frame is what helps decide whether someone has the perception and foresight to see things even in the future.
- “Individuals and interactions over processes and tools” and “Customer collaboration over contract negotiation” comprise half of the values of the Agile Manifesto. Discuss.
- How would you manage a very high turn over and convince developers not to leave the team, without increasing compensation?
Such questions help in the assessment of planning skills of a person.
Questions on Software Architecture
Software Architecture is what defines how scalable, reliable and robust a given software will be. The ability to ensure close to perfect architectures for any project is a valuable skill to possess.
- What is CQRS (Command Query Responsibility Segregation)? How is it different from the oldest Command-Query Separation Principle?
- How could a Denial of Service arise not maliciously but for a design or architectural problem?
Questions like these help understand the long-term and future based planning perspective of the people you interview.
Questions on Algorithms & everything related
Wait a minute, didn’t we just say that asking Algorithm and Coding oriented questions was not the right thing to do? Yes, but before you jump to conclusion, let us clarify that this section contains questions that ask the logic behind specific topics, rather than asking someone to write a program on a piece of paper or a whiteboard.
- How would you design a “defragger” utility?
- How would you sort a 10GB file? Would your approach change with a 10TB one? If yes, in what manner?
All the above questions touch every single aspect required to be a top software development professional, especially ones dealing with the back-end.
If you feel like this wasn’t enough, you can always look up more questions that the developers themselves feel they should be asked during interviews. Here is an example page that lists questions relevant to PHP.
Truth be told, Assessments are the way to go in the coming days, because you do not want the time you get at an interview to be spent verifying what you could’ve done a step earlier in your hiring cycle. In case you are wondering what I am talking about, take a look at our previous article related to Assessment Platforms to help you understand why you need one.
Also, as part of our holiday season, we are giving a few lucky users a free upgrade to our $1990 annual unlimited plan. Signup for your free account today here.