Technical (Whiteboard) Interview
Tags: software, programming, javascript, interview
Published: 2020-05-16 18:35:52

![Photo by Capturing the human heart. on Unsplash.](https://cdn-images-1.medium.com/max/1600/0*buqLYBc0qpPWfc39)

The technical or whiteboard interview is a common step in all software developer interviews. Just keep in mind that this meeting can happen sooner or later in the interview process.

## What is the purpose of this meeting?

There is no doubt this meeting is a bit more stressful than others. A lot of people believe that a developer needs to have the ability to discuss a problem and a possible solution at a higher level. 

That is where whiteboard or even a pice of paper comes in, by only drawing and mapping your thoughts using figures, diagrams and shapes. You might not necessarily need to go into little details of implementation, but rather discuss the steps you would take to solve a particular problem. It is common to ask two types of questions in this interview:

---

Tip: I completely understand that software interviews can be a bit scary, so my hope is to give you clear ideas about the interview process and offer you practical advice on how to do well at each step.

![Map](https://cdn-images-1.medium.com/max/1600/0*rLNMa6aQpwnMNARC.png)

This course can be very helpful for you to get an overview of all the common interview steps that companies go through to hire a developer. [Sign up for SkillShare, Get two months of free trial and Join me on this journey](https://skl.sh/3dxx6Bp)

---

## Design or Architectural Based Questions

No matter how skilled you are, it is always a good sign if developers have the ability to imagine a bigger picture design of the system they are working on. 

In dev teams, it is usually the job of more senior developers to help design the architecture of the application and general processes and pipelines. However, it is expected for everyone on the team to have an impact on those decisions. The more you educate yourself in the years towards becoming a senior developer, the clearer your answer will be to these types of questions.

So in a nutshell, they want to see you try to think about them. You can get your knowledge for these types of questions from all your previous projects (even small), or by reading best practices and architectural based articles from more experienced developers. Example questions for this type can be:

* How would you display a list of items by relying on an external source like API?

* How would you describe a database design for two tables that should reference each other?

* If you wanted to build an e-commerce site, how would you go about designing its architecture?

Your answer can be not 100% correct or optimal, but they want to see you try, they want to see you are reading or thinking about these types of questions; and they might be looking for keywords in your answers to see a bigger picture. 

For example, you might not be completely familiar with how to setup different parts of an e-commerce platform, but if you mention that you would consider "separation of concerns" and build different layers of functionality for better maintainability and testability, that would be a very good sign for them.

## Algorithmic Based Questions

The second type of questions they might ask you are algorithmic based questions. These questions are narrower and more concrete and have the aim of testing your general computer science knowledge as well as your problem solving skills. The typical questions for this type can be:

* How would you reverse a string
* How would you count the number of words in a text
* How would you find the highest or lowest number in an array of numbers

and similar types of questions.

## Things to remember

First, Remember that staying calm, actively thinking about both the problem and hints of solution you might have in your mind are key for passing this test. Before quickly trying to answer the question, take a moment to think about the problem and then start writing problem keywords as bullet points on the white-board.

Second, Read the problem out-loud and do not be afraid to ask, if any parts of the problem does not make sense to you. They can try to explain it better which gives you more time to think or get more clues. Asking questions in this meeting is usually never the wrong thing to do. 

For example, know that these questions can be simpler if their criteria are clarified. If you do not know the type of input data you are getting, ask them for clarification. For example, they might tell you that your provided data only comes in Array form. That makes things easier.

Third, start drawing and using texts to show them your way of thinking. Do not feel the rush to write code on the white-board or on your computer at this point. It is much more valuable for a developer to get a clear idea about a problem, before jumping into solution implementation. That is what we are practicing here. 

It is not wrong at all to ask for periods of thinking time, so you can mull it over. But if you feel stuck, it is best to communicate that and ask them for hints. They are always happy to give it to you without taking it negatively. But remember to use their hints; otherwise it might seems like you are not a good listener, when asking for advice.

Finally, after drawing some diagrams and shapes for defining the problem, we come to writing some code. Your code can be in pseudocode which is a simplified programming language for describing code design. If you can write a solution for the problem using a programming language you prefer like Javascript or Python, this will be a very good sign.

It can be a bit harder to write those types of algorithmic based codes, since we use utility functions to achieve them in our day-to-day work (like a string parser library instead of writing our own); but practicing and knowing these shows you have a firm grasp on the basic concepts of coding. So my advice for this part: practice the the fundamentals like conditional programming, async data fetches or for loop and data mapping regularly.

## Conclusion

I am gonna be honest with you. I have never had a technical interview which I felt I have done 100% perfect but most of the time I got a callback for the next interview by following the rules we discussed in this post. There are a lot of unknowns and the recruiters are even aware of the complexity of some problems, but just want to test your problem solving skills and see how calm and focused you can be in those situations. So a big part of your success in this meeting will be dependent on your mindset and stress management skills.

---

Tip: I completely understand that software interviews can be a bit scary, so my hope is to give you clear ideas about the interview process and offer you practical advice on how to do well at each step.

![Map](https://cdn-images-1.medium.com/max/1600/0*rLNMa6aQpwnMNARC.png)

This course can be very helpful for you to get an overview of all the common interview steps that companies go through to hire a developer. [Sign up for SkillShare, Get two months of free trial and Join me on this journey](https://skl.sh/3dxx6Bp)

---