We have a lot of engeneers reading this blog (since we're selling a help desk ticketing system to - mostly - IT people). So we decided to share the SQL questions we give our candidates during interviews, you folks might find it useful.

Even though most of our work is based around Microsoft SQL Server and the test machine we provide is connected to an MS SQL database, the interview test should fit any database engine - Oracle, PostgreSQL, MySQL - anything, since it's very basic.

Some people might say it is too basic, but that's not the point. The test's job is not to tell genius and rockstars from "normal" devs. The purpose is to save you time and quickly filter out DB-experienced guys from the ones that just claim to be.

The test

We give our cadidates this simple database schema and ask the following questions:

Select employees (names) who have a bigger salary than their boss Select employees who have the biggest salary in their departments Select departments that have less than 3 people in it Select all departments along with the number of people there (tricky - people often do an "inner join" leaving out empty departments) Select employees that don't have a boss in the same department Select all departments along with the total salary there

Like I said, it's pretty basic. And there's more than one correct solution for each of these questions.

Feel free to use it in your interviews. And if you do, a link back would be much appreciated ;)

Non-query questions

Bad: asking candidates to "name a function that does X". Or "how to get the identity of the last inserted record". Or "how varchar is different from nvarchar?" It's not the 90's any more FFS, no one needs that b*llshit, we have Google for that. You can literally find the answer in seconds.

Also bad: "academic" questions like "what is DML - data manipulation language" or "how the First Normal Form is different from the Second Normal Form" - wtf, who needs that.

Good asking broad open-ended questions that aim for deep, meaningful discussions.

Like, "your database server has slowed down, what would you do?" - there's no right answer to that. It's just a conversation starter. Your job is to shut up and listen.

And you know what, it's fine if the candidate says "I'll just open up a browser and start googling for solutions" - that's a 100% valid response. Or - a candidate actually said this once - "I'll post a question to StackOverflow or its database sister-site" - why not!

Or "Please tell us about your favorite database challenge you faced?" - again, a conversation starter. And if the answer is "None really" - it's OK. Proceed to the next question.

Just make sure it's an open-ended one. Aimed at deep meaningful answers. That's the only way to spot smart people who can get sh*t done not just win a Microsoft quiz show.



Alex Yumashev

Alex has founded Jitbit in 2005 and is a software engineer passionate about customer support.

Subscribe