An algorithm is a "sequence or procedure of computation. Since algorithms and data structures are the foundation of engineering, submitting a coding test in algorithmic format is fundamental and important in looking at the qualities of an engineer.
Coding formats include "algorithm" and "database."
Why does Google incorporate algorithms into the interview?
Those who are reading this article with great interest like you, there are people outside of Japan who are thinking the same thing. For example, this question posted on Quora asks the same question.A brief summary of what various people have posted is as follows;
- ∙Algorithms and data structures are the beginning of everything.
- Algorithms are not everything; you need to know about testing, assertions, using libraries, and many other things.
- because you need to understand the principles in order to fine-tune things.
There are many different types of engineers who are generally considered to be excellent, but all of them have the same things in common: problem-solving skills and an understanding of principles.
Let's consider why algorithms are linked to problem-solving skills and an understanding of principles.
Why are algorithms important?
With the development of technology, when we use servers, we are less conscious of server rooms and data centers by using AWS and GCP. With the development of frameworks and libraries, it is now possible to create applications without understanding the details behind the scenes.
The reality is that today, it is possible to create something without understanding the details of the application. For this reason, some people say that algorithms are unnecessary.
However, algorithms are not just for testing. Various systems in the world are supported by algorithms. There are the sorting used to create rankings, the Dijkstra method used to find the shortest path in Map applications, the stochastic gradient descent method used in machine learning, and many others.
An application that is easy for anyone to create, which means that it is easy for other companies to imitate and difficult to differentiate their products. Hence, creating a product that differentiates itself from other companies requires overwhelming engineering capabilities.
Another reason why algorithms are important is that "things change every day." From the days when pure Javascript was written around 1995 to the announcement of jQuery in 2006, and then TypeScript, the major languages have changed, even for Javascript. The front-end implementation has also changed. Front-end implementations have also shifted from HTML, CSS, and JS to the use of frameworks such as React and Vue.
Application frameworks correspond to the red and blue areas in the following image used in this blog. Let's say you hire an engineer based on his/her specific skills, for example, whether he/she can do PHP or not. Then, an organizational change occurs and you decide to use Python for another project. At this point, it no longer makes sense to hire based on whether or not the engineer can use PHP or on specific skills.
On the other hand, algorithms and data structures are fundamental skills in any language, so they are important skills that can be used even if the language or framework is changed. That is why they need to be identified at the hiring stage.
What kind of questions should be selected?
For new graduates, it is effective to choose "easy" level, and for mid-career workers, a combination of "easy" and "normal" or "normal" and "difficult" is effective. This is because it is easier to determine the level of understanding. The purpose of a coding test is not to find out what is wrong with a candidate, but rather to properly check the candidate's skills and determine whether he or she passes or fails the test. There is no need to make the questions too difficult.
You can check the programming languages we currently support here. If you have a request for a question in coding format, please use this form.