How to prepare for an interview and live coding for Junior Backend Developer
Read what a junior developer should know before the interview, what questions you can get and why you shouldn't be so scared if you get an invitation to a programming tryout.
You'd probably do your best on interview when don't even want the job. During the other attempts, you will be so stressed out and sometimes you can do something weird. For me, I was estimating one disaster for the nine regular interviews.
The most bizarre was an online video interview that I did without a live person on the other side.
When I noticed how suprised I do look after just first question, I've closed my laptop and hoped that we would start over. However, it just continued with other questions. I've closed my laptop again and thankfully they never contacted me ever again. I've set the bar quite low, but today I would do better 100%.
The next interview was a series of quite difficult online tasks in Python, but I managed to accidentally click through and irreversibly skip the first two. I came to the interview on the diffrent day than we agreed. Fortunately, programming is more benevolent for such embarrassments, as there are still quite a few offers, but if you want to be a little more prepared, we have prepared some basic tips that might interest you.
Practical test: Homework vs. Live coding
One of the most unpleasant parts of the interview is the practical test. You will most often encounter two types - homework or live coding online or directly in the company.
It may well happen that you go through an interview at which you just talk and you get an offer within a few days without writing a bar code during the interview. It sounds like a win, but the company and you also risk that your knowledge will not meet the expectations in the new job. And as a junior, there's still a lot you won't know.
Homework - pros, cons and practical demo
The tasks at home are great, you have enough time to solve, less stress, you can googgle as much as you want and no one sees it (everyone counts on it anyway and it's completely ok). The disadvantage is that it is time consuming - a solution which you will be satisfied with can take you, for example, 5 hours. And now imagine you have five of these interviews in two weeks. You multiplied the original estimate by two more if you came across a more complicated problem that you have not solved yet.
For an idea of what a simple assignment for a backend junior position might look like:
- Set up Express server
- Connect to external api with Bitcoin prices
- Create an endpoint that will call the Express server from the frontend application and return Bitcoin prices in the required format.
- Create a filter that returns prices for a specific date.
- Calculate the average price of Bitcoin, the minimum, the maximum for the last month
- Bonus question: Set access only for logged in users
💡️ Tip: Bonus questions for extra points can be considered mandatory - there is a good chance that one of your competitors will do them.
The assignments are good to practice at least from the beginning and some companies will give you feedback at the end.
Do's and don'ts during a live coding interview
Homework is a quick filter for companies and in the meantime you will meet them more often, but live coding tests are also becoming more and more popular and you will not avoid them completely. You will probably get stuck at the first invitation, the exam is not that far from the oral high school diploma.
You will join an online room where your (perhaps) future colleagues will give you a task assignment, explain what you have to do and how much time you have to do. The feeling that someone is watching you all the time as you write to the editor letter by letter is not pleasant, but you should get used to the fact that in ordinary business it is not so exceptional to write code in front of colleagues.
It sounds scary, but after dozens of elaborate assignments at home, you will find a little love for fast livecoding. It doesn't take more than an hour so it takes less than quarter of the time of homework.
💡 Tip: Communication is as important as code, you certainly shouldn't just quietly solve a problem and quit. Examiners also want to see how you think about the problem and how you make decisions.
At the beginning, read the assignment well, and if you don't understand something, don't be afraid to ask for clarification. In practice, you will often encounter assignments that are not clear, and if you do not complete it, you can try again.
At the beginning, find out what tools are available, whether the official documentation or the StackOverflow forum. Maybe you will just miss a little thing or it is a completely new problem for you, but in any case, show that you can deal with it. If you can't help yourself or get stuck right away, try to think of another solution, there are definitely x. The same is true even if you first come up with a brute force solution - you may be able to improve it a bit.
If the time limit is stressing you, ignore it completely, it won't help you in the beginning. Each company has different acceptance criteria for a sufficiently good result, depending on the complexity of the task, but the junior should show the potential, how he thinks and what mantinels he moves in. During my first live coding, I solved 0 out of 3 tasks and they still hired me (not in GoodRequest 😅 ).
How long do I have to prepare for the interview?
In short, a lifetime. In a junior position, no one will want from you to be able to write the optimal sorting algorithm, but it's nice, if you at least know what it's about and how to use it.
Develop at least simpler assignments with sites like HackerRank or LeetCode, you should have no problem with basic operations such as filtering, sorting, editing objects, working with basic data structures, using classic and recursive functions. In time, you can return to the issues already resolved and try to do them even better. It is impossible to say how many tasks you have to complete, but you will see for yourself how you improve.
As a backend developer, you should know what REST api is (or alternatives like soap, sockets). Try to prepare a simple web server (eg. NodeJS) that will communicate with the front end and the database.
To make matters worse, you will definitely find useful at least the basics of SQL for database operations.
It is also useful to have an IT internship, but you can partially replace the lack of experience with your own project. Find something that will make sense to you and that you will enjoy it for more than one weekend, so that you get to more complex problems. Feedback is important, and if you don't have anyone more experienced around you, try asking them at least on online forums. Find out what you're doing wrong, but you'll also learn to accept criticism.
What will employers ask you?
In addition to the classic questions of what projects you have worked on, the problems with them and how you have solved them, prepare to test your soft skills. HR professionals may be interested in how big teams you worked in, how you shared your job, and how you helped each other.
If you answer that you prefer to work alone than in a team, it does not necessarily mean that they will not hire you, but programming on larger projects is teamwork. Not only that the code you write should be readable by your colleagues, but you will usually communicate with other developers, managers, testers, and later even with clients.
Before the interview, you may want learn about team management.
If you are looking for your first job, you should be able to convince your employer that you can handle basic task management and deadlines.
The key words you will encounter most often will be agile development, scrum, sprints, standups and will only be your plus if you know what it is about. In short, agile development is more flexible, smaller parts of passable code are always completed in shorter sections (eg in two-week sprints). The team often communicates with the customer and adapts to his ongoing requirements.
Somewhere you may still encounter a waterfall style that is more rigid. Communication is most important in the first phase of the assignment and understanding of the project, later the customer no longer enters the development.
Horror situations can occur with both, but with agile development you should not at least not get along with the client at the beginning and find out only after an expensive year of development after handing over the project.
Unknown technologies in ads
In the ads, you will see a number of technologies that you have not yet encountered. Don't be completely discouraged by this, even during your career you will have to learn while marching on live projects. It's good to know which filters are key to a given position, and it's not enough that you just know they exist. If you are unsure, you can clarify this with the HR in the first round of the interview.
💡 Tip: The junior backend developer should generally master at least the basics of working with GIT, communication of the server application with the frontend and with the database.
Specific related technologies no longer play such a role, and if you have managed to work with the NodeJS framework Express, you should have no problem orienting yourself when looking at NestJS developer job ad. Similarly, with relational databases, it is good to know the basics of SQL and to learn the differences between PostgreSQL and MySQL as needed.
From the "extra" technologies, it's good to at least get familiar with Docker for containerizing applications.
Be honest in your resume, even in the interview, do not lie. You can always study it and the lie is very easy to detect.
Before the interview, prepare a list of questions that interest you about the company or position.
If you decide to accept an offer that you will not be satisfied with, you have the opportunity to leave the trial period, but you may avoid another live coding.
💡Tip: Find out as much as you can about what you will do. You can help by finding a client or an internal company project and asking what specific tasks they could develop for you.
You will learn a lot of things only after the start, but they will also tell you something about the technical quality, whether they do code review as standard, they write tests, how the check before the code is deployed.
You will probably also be interested in whether someone more experienced will have time to pay attention to you.
Soak up the whole atmosphere, programming is a team effort and everyone works better if they are a good fit.
Ready for the challenge? Join our team💪