Instructions
– Vous disposerez de 3h pour compléter les quatre exercices qui vous sont proposés. On attend du candidat qu’il tente de compléter le plus d’exercice possible dans le temps alloué.
– La gestion avancée des exceptions/erreurs ne fait pas partie du cadre de ces exercices. L’énoncé de chaque exercice indique les valeurs possibles reçues en entrée, il est inutile de gérer les autres cas.
– Privilégiez l’utilisation du C++ si celui-ci fait partie de vos compétences.
– Utilisez les ressources disponibles sur Internet (documentation, etc), mais ne recevez pas l’aide d’une autre personne. Ce test est destiné à évaluer vos aptitudes personnelles.
Critères d’évaluation
– Exactitude des résultats : Codility évaluera votre code selon plusieurs test-cases. Pensez aux cas extrêmes.
– Performance : Privilégiez les algorithmes en O(1), O(log n), O(n) ou O(n.log n). Évitez si possible O(n2) ou pire.
– Lisibilité du code : Structure, indentation, création de sous fonctions lorsque c’est approprié, etc.
– Commentaires. N’hésitez pas à commenter, particulièrement dans les cas suivants : opérations non triviales (pourquoi faites-vous ça?), opportunités d’amélioration que vous n’avez pas le temps de faire, etc. Vous pouvez aussi commenter un exercice non-résolu pour indiquer quelle aurait été votre approche.
Conseils
– Si nécessaire, privilégiez la qualité plutôt que la quantité. Vous devriez prendre le temps de lire tous les énoncés et choisir quels exercices vous préférez résoudre.
– Avant de démarrer, préparez une solution de test afin de pouvoir débugger les problèmes difficiles à cerner seulement en lisant le code. Codility ne permet pas d’exécuter votre programme étape par étape ou de placer des breakpoints.
– Vous pouvez utiliser la librairie standard C++ (ou C), mais n’oubliez pas que le but de ce test est de prouver vos habiletés. Trouver un bon équilibre entre le code fait « à la main » et l’utilisation de fonctions de haut-niveau est à votre discrétion. Dans ce dernier cas, le candidat est encouragé à commenter son choix de fonction.
Raison: Dans un environnement de travail réel et multiplateforme, les fonctions haut-niveau de la librairie standard ne sont pas toujours disponibles ou appropriées.
Note: Utiliser qsort (C) ou std ::sort (C++) est acceptable.
– Utilisez la fonction « add test case » en bas à gauche de l’écran. Cependant, n’oubliez pas que le résultat indique seulement l’absence des run-time errors (crash/exception) et indique le résultat. Ça n’indique pas si ce résultat est bon.
– Vous pouvez créer des fonctions pour améliorer la lisibilité ou éviter la duplication de code.
– Nous vous conseillons de vous familiariser avec l’environnement Codility en utilisant l’option « TRY DEMO » avant de démarrer le test.
