What is the Coding Format

Troubleshooting

Importance of Algorithms in Coding Tests and Questioning Policy

An algorithm refers to a sequence or set of steps for a calculation to solve a problem. Measuring understanding of "algorithms and data structures," which are the foundation of engineering, is extremely important in assessing an engineer's potential.

This article will explain why algorithms are emphasized in coding tests (algorithm format and database format) and how to set appropriate difficulty levels.

Why are algorithms asked in job interviews?

There's a clear intention behind why many tech companies, including Google, incorporate algorithms into their interviews. Summarizing discussions on overseas Q&A sites (like Quora), the main reasons are:

  • Confirmation of fundamental abilities: Algorithms and data structures are the starting point for all engineering.
  • Adaptability and Adjustability: A fundamental understanding of principles is essential for fine-tuning systems and troubleshooting.
  • Comprehensive judgment: It serves as an opportunity to learn not only algorithms but also appropriate testing methods and how to use libraries effectively.

Two major reasons why algorithms are emphasized

In modern development environments, the widespread use of cloud services like AWS and GCP and convenient frameworks makes it possible to create applications without conscious awareness of the underlying mechanisms. However, there are two significant reasons why understanding algorithms is still essential:

1. Product differentiation and understanding of fundamental principles

Applications that anyone can easily create are easy to imitate, making it difficult to maintain a competitive advantage as a business. To develop advanced products that differentiate from competitors, a deep understanding of the algorithms that support the system (such as sorting, pathfinding, and machine learning optimization methods) is necessary.

  • Sorting: Implementing ranking features, etc.
  • Dijkstra's algorithm: Shortest pathfinding in map apps, etc.
  • Stochastic gradient descent: Building machine learning models, etc.

2. Universal skills unaffected by technological changes

Programming languages and frameworks change rapidly with the times. If hiring relies solely on knowledge of specific languages (e.g., PHP) or frameworks, there's a risk that the value of those skills will decrease when the technology stack changes (e.g., migration to Python).

In contrast, algorithms and data structures are the "fundamental physical strength" common to all languages and eras. Because they are universal skills unaffected by trends, they are ideal for judging whether an engineer can be active long-term.

Universal skills unaffected by technological changes

Effective Difficulty Setting

To accurately evaluate a candidate's skills, it's necessary to select problems with an appropriate difficulty level tailored to the target audience.

  • New graduates: "Easy" level
  • Experienced hires: "Easy" + "Normal," or "Normal" + "Difficult" levels

Important

The purpose of a coding test is not to find a candidate's flaws and fail them. The goal is to accurately assess a candidate's skills and appropriately determine their suitability. Therefore, avoid giving overly difficult or tricky questions.