Skip to content

erangac/tech-task-java

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Technical Task - Java Version

This repository contains the instructions and the source code for the technical task that we use as part of our recruitment process at MacroActive.

The Task

This repository contains a tiny fragment of a real-life project. We have changed a range of identifiers to protect the innocent. The code is Java and targeted for OpenJDK 17.0.1 or compatible.

You have been asked to have a look at the code in this repository and in particular at class com.macroactive.cal.LegacyCalculator. Your task is to find ways to improve the code. You can spend as much time on it as you like. As a guidance, use a time box of no more than 1 hour.

To get started, create a fork of this repository in your own Github account. We can then use the fork for the technical interview. Once you have completed the task, just send us a link to your fork. Your fork needs to be a public git repository.

There is no right or wrong answer. You won't find the solution for this task using Google. The key goal is to improve both the class com.macroactive.cal.LegacyCalculator and/or the tests in class com.macroactive.cal.LegacyCalculatorTests. Make sure that all test pass at all times.

In the technical interview we will discuss the improvements that you have identified and implemented. We will also discuss alternative and additional options you may have considered while working on this task.

Some Suggestions

To improve the code in this repo, you can draw from your experience with previous projects. You can also consider some of the following items:

  • Are there code duplicates that can be removed?
  • Have all identifiers suitable names?
  • Are there enough and the right type of tests?
  • How could testability be improved?
  • Would it make sense to consider a mock?

You are free to add more libraries if you think they add value. However, stay focused on the task when making this choice.

Prerequisites

To work on this task you can use any IDE that supports Java. You will need OpenJDK 17.0.1 (or compatible).

One option for a free IDE is VS Code with suitable extensions for Java (most recent stable release).

Other Files in Repository

This repository also has files related to a dev container. These files are located in folder .devcontainer. You are welcome to use the dev container if you like. If you are not familiar with dev containers, you can safely ignore the content of the folder .devcontainer. Whether you use the dev container or not has no impact on the outcome of the technical assessment.

The Technical Interview

The technical interview consists of three segments, all of which are intended to be conversational in style. Think of it of one software engineer talking to a different software engineer.

In the first segment we'll review and discuss your result of the technical task. As there is no right or wrong we'll talk about your choice as well as alternatives that you considered.

In the second segment we'll broaden the topics. Depending on the role you are interested in, we will speak about a range of topics to see what your prior experience is with different technologies, tools and processes. Note that there is nothing wrong with you if you have no prior experience with one or more of the topics. It's about finding out where you would need time and assistance to come up-to-speed should you be the successful candidate.

The third segment is more in an FAQ style where you can ask questions about how we work, what technologies and tools we use, what the technical direction looks like, how we collaborate as a team and many more. It's a chance for you to find out about our values and principles as well as how we work. We want to make sure that not only you are a good fit for us but also that we are a good fit for you.

In Closing

Good luck!

About

Technical Task - Java Version

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 68.5%
  • Dockerfile 21.8%
  • Shell 9.7%