Are you preparing for your first dev job interview and you’re not sure what to expect? Or maybe the past interviews didn’t go very well and some of the questions you have been asked surprised you? Check out a few hacks that will give you the edge on other candidates!
It's not your first job interview, but possibly it's your first one for the position of a software developer. You might have heard some horror stories of candidates having to fix really hard broken code on a whiteboard on the spot, haven’t you? I bet they send chills down your spine! Except questions regarding your personality, soft-skills and your previous experience, most likely recruiters will also ask technical questions and give you some tasks to solve, to check your knowledge of specific technologies you specialized in.
When applying for a job in a software house or any other IT company, hard skills and the applicants previous projects are crucial. The technical part of the interview is usually the most important for both, candidates and employers.
Some interviews are focused on data structure and algorithms, which is quite easy to prepare. But remember, that you can come across questions that will thoroughly assess your knowledge, skills and the level of experience with the language and framework.
Technical questions and whiteboard tasks
Every language shares core flow control constructs: iteration, branching, and subroutines (functions & methods). You should also be familiar with your language's core data types (booleans, integers, floats, strings, arrays, hashes, etc.) and, if your language supports them, objects and classes.
You need to ask yourself two essential questions:
- What did you learn from your previous projects and what did you like about them? What would you possibly improve?
This question shows that you actually understand your job. The ability to learn from your experiences, whether they were positive or negative is what makes a good software developer.
- Describe the architecture of your previous projects and draw diagrams.
The goal of that is to see how well you can present a technical concept and how much you were involved in the project. Recruiters want to look beyond what is stated in your resume and actually verify your skills and get a feel of your experience. That’s why you should draw it on a whiteboard and tell the recruiter more details at the same time. Standing in front of recruiters and presenting things on a whiteboard isn't as easy as it seems when you do it just for yourself. It’s good to do some practice runs at home. Interviewers pay a lot of attention to solving complex problems in the language and the candidate’s general algorithm and data structures knowledge.
How we roll at The Masters
Those 2 questions are quite general and the answer depends mostly on your experience. However, due to the fact that at The Masters we focus on Ruby on Rails, be prepared for some advanced questions about this framework. Let me give you a few examples of what you can expect to hear:
When it comes to Ruby, we ask about basic ruby concepts and about areas that are commonly used. Still, we can throw a question related to some ruby quirk or less often used features. A typical question would be: "What's the difference between `lambda` and `proc`"? The majority of candidates know that this is a commonly asked question - yet a lot of them don't know the answer.
When it comes to Rails, we ask questions to get an idea of how good you know Rails and if you tried some other Ruby frameworks. Because Rails dominates in the Ruby community, sometimes developers are so used to the features it provides, that they tangle them not knowing if they are Ruby- or Rails-specific.
Other questions you have a big change to come across are: have you ever used `blank?` or `present?` methods? - are they implemented in Ruby or in Rails?
We can also ask about databases. We know that using Rails' ActiveRecord is so easy and convenient, that developers tend to fall into an illusion that they don’t need to know anything about databases to build awesome apps. This is a risky attitude. We require at least basic knowledge of databases.
In relational databases, like MySql or PostgreSQL, the questions might be: are there `Strings`? Or maybe: `char`, `varchar`, or `text`? Are there `Floats`?
Let’s write some code
You know the theory, you know the language. You can have a reasonable conversation about programming. But once it comes to actually producing spaghetti code you might struggle.
Coding challenge is a very common part of developer’s interviews. Some tasks involve coming up with an appropriate algorithm to solve a problem, others focus more on object-oriented concepts and designing a system. Two or three small code samples (about the size of a function, roughly 5-10 lines of code) should tell the employer very easily if you actually know what you are doing.
Some examples of coding tasks you may come across at an interview are:
- First task is a combination of logic thinking skills, basic algorithm knowledge and technology skills, for example in Ruby. Recruiters may ask you to write a binary search in the complexity O(log N).
- Another task can be to show the knowledge of the main framework (ex. Ruby on Rails): find and correct the errors in average complex code, in a limited time. Moreover, recruiters may ask you to optimize the query to the database, rewrite the method in a different way or propose your own solution to the problem. Mostly, during the tech part of interview you get an access to the Internet or you can use some sources that are available at work on a daily basis. Of course, it’s not allowed to contact other people, friends etc.
Let’s do it!
I hope these tips help you get the edge on other candidates for software developers. Of course, it all depends on what position you apply for - junior, mid or senior software developer. Our hacks are intended to rookies with short resumes. Practice and preparation will give you a meaningful advantage over others. Remember, the way you approach and work through a problem is often more important than the final solution. Problem solving and critical thinking are appreciated just as much as strong technical skills.