Bonjour à tous,
J'ai récemment passé un entretien pour un poste de développeur full stack et j'ai eu un test de code JavaScript a effectué. Je n'ai malheureusement pas été retenu. Est-ce que quelqu'un pourrait m'aider à identifier la raison de mon échec ?
Le test était découpé en deux parties.
La première partie consistait à écrire un programme qui consommait l'API breaking bad (https://breakingbadapi.com/).
Le programme devait recevoir en paramètre une liste de personnages de la série et renvoyer les épisodes où tous les personnages passés en paramètres étaient présents à la fois.
Le programme devait répondre à l'appel suivant :
const result = await breakingBad(["Char1", "Char2"])
ou bien
const result = await breakingBad("Char1")
Voici la solution que j'ai proposé :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| const axios = require('axios').default;
const breakingBadAPIURL = "https://breakingbadapi.com/api";
const breakingBadAPI = {
episodes: `${breakingBadAPIURL}/episodes`
}
module.exports = async function breakingBad(...characters) {
characters = characters.flat();
try {
let response = await axios.get(breakingBadAPI.episodes);
let episodes = response.data.filter(episode => characters.length && characters.every(c => episode.characters.includes(c)));
let output = episodes.map(episode => `S${episode.season.trim().padStart(2, '0')}${episode.episode.trim().padStart(2, '0')} - ${episode.title}`);
return output;
} catch (error) {
throw error;
}
} |
La deuxième partie du test consistait à devoir écrire une classe Robot avec une méthode execute. La méthode execute permettait de simuler les déplacements d'un robot dans un espace en 2D. 3 actions étaient possibles pour le robot : turn right, turn left ou advance.
La méthode execute acceptait donc en paramètres une chaîne de caractères du type suivant : "4 2 NORTH LAARAAR". Ce qui signifie que le point de départ du Robot était en x:4, y:2 et son orientation vers le nord. En suivant les instructions LAARAAR (L = turn left, R = turn right et A = advance), le programme devait renvoyer le point d'arrivée du robot, soit la chaîne de caractères suivantes : "2 4 EAST".
Voici la solution que j'ai proposé :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| const ACTIONS = {TURN_LEFT: 'L', TURN_RIGHT: 'R', ADVANCE: 'A'}
const DIRECTIONS = {NORTH: 1, EAST: 2, SOUTH: 3, WEST: 4};
module.exports = class Robot {
execute(instructions) {
instructions = instructions.split(' ');
let position = {x: parseInt(instructions[0]), y: parseInt(instructions[1])}
let direction = DIRECTIONS[instructions[2]];
let actions = instructions[3];
[...actions].forEach(action => {
switch(action) {
case ACTIONS.TURN_LEFT:
direction = direction == DIRECTIONS.NORTH ? DIRECTIONS.WEST : direction - 1;
break;
case ACTIONS.TURN_RIGHT:
direction = direction == DIRECTIONS.WEST ? DIRECTIONS.NORTH : direction + 1;
break;
case ACTIONS.ADVANCE:
switch(direction) {
case DIRECTIONS.NORTH:
position.y += 1;
break;
case DIRECTIONS.EAST:
position.x += 1;
break;
case DIRECTIONS.SOUTH:
position.y -= 1
break;
case DIRECTIONS.WEST:
position.x -= 1;
break;
}
break;
}
});
return `${position.x} ${position.y} ${direction}`;
}
} |
Ca fait un peu beaucoup à lire ! Mais si quelqu'un a une idée de la raison de mon échec, cela pourrait grandement m'aider à avancer.
Je vous remercie par avance !
Partager