Test assignment for PHP developers
Chess Club
Before you come to us for an interview, please take a moment to complete the test assignment. It will help us better understand your thinking and way of programming, plus we will have a topic to discuss at the interview. Don’t worry, it shouldn’t take more than one, or 2 afternoons max.
Problem description
A Chess Club needs a system to store information about players. They plan to provide players with leaderboards to show the results of top-performing players.
The requirement is to store vital information such as the date the member joined the club and their contact details. Each game is a head-to-head match between two players where each player keeps a log of his games, showing whether he won or not, how many moves he made, and which color he played,…
You should provide, in order of priority:
- A member’s profile screen shows their
- number of wins.
- number of losses.
- a ratio of wins when playing white vs. black figures.
- their best game – considering the player won in the least possible number of moves.
- Interfaces (preferably browser-based) to create and edit members’ details, such as name, contact number, etc.
- A leaderboard screen to list the members with the top 10 players based on the number of wins, drawn only from those members who have played at least 10 matches with each color of figures.
- Below the leaderboard, statistics show the current highest and lowest number of moves achieved in order to win, who scored them, against whom, and when.
Adding test data manually is OK, but the system should have enough data to show that everything works as specified (especially the leaderboard). There is no requirement for users to log in or be authenticated to have all the interfaces to insert the games. If you can think about any test, do not hesitate to add it, but it is unnecessary.
Hints
This task aims to understand your thinking processes and experience better. The description is a little vague, do not worry about adding your own insight into the task.
Feel free to use any frameworks or libraries you wish to help with your solution. You need to provide information about how to run your code. The best would be a Docker. We use MVC frameworks such as Symfony, Laravel, and Nette, and we would like to see solutions using these or similar. Do not spend too much time on this task. This should be fun. Additionally, we do not expect the best UX/UI or flashy front end. We strive to see the app work correctly.
When It’s Done
The best scenario is to have the code running with an attached link to a private repository. Once you send us your application, we will respond with accounts for you to share your repo and review your code promptly (mainly in 24 hours). Do not forget to attach your LinkedIn profile or simple CV.
After this, we will schedule a personal or online meeting.
Email your challenge to [email protected].