Epreuve de certification type

Voici un test de certification type. C’est une suite de 30 exercices à réaliser en 120 minutes. Et voici quelques conseils pour y répondre et maximiser ses chances de réussite :

  • Rappelez-vous que quelque soit le résultat, vous allez avoir à la fin une appréciation de votre niveau. Et le niveau « Débutant » est déjà bien car cela vous permettra de postulez à d’autres formations plus approfondi en PHP et même des postes de développeurs web sans aucun problème.
  • Prenez le temps de lire les différentes questions
  • Commencez par celles qui vous semblent faciles et terminez les
  • Le système vous offrira, dans certains exercices, la possibilité de tester votre solution. Profitez-en.

Voici dans ce qui suit une liste d’exercices types :

SUJET 1 : SUPPRESSION HTML

Rédigez le code de la fonction removeHtml qui reçoit en argument le paramètre $chaine. La fonction devra retourner le paramètre en supprimant toutes les balises HTML.

Complétez le code suivant :

<?php
function removeHtml($chaine)
{
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
   return $chaine

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
$string = "Hi! <script src='http://www.evilsite.com/bad_script.js'></script>It's a good day!";
removeHtml($string); // La fonction devra retourner : "Hi! It's a good day!"

SUJET 2 : ALÉATOIRE

Rédigez le code de la fonction numbersBetween qui reçoit deux arguments $min et $max. La fonction doit retourner un tableau avec les nombre compris entre $min et $max tous deux inclus.

Complétez le code suivant :

<?php
function numbersBetween($min, $max){
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
   

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
numbersBetween(2,4); // La fonction numbersBetween retournera le tableau suivant : [2,3,4];

SUJET 3 : VALEUR RÉCURRENTE DANS UN TABLEAU

Rédigez le code de la fonction repeatFirstname prenant en paramètre un tableau $tab de chaînes de caractères. La fonction devra retourner la chaîne de caractère ayant le plus d’occurrence dans le tableau $tab.

Complétez le code suivant :

<?php
function repeatFirstname($tab = []) {
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
$tabFirstname = array("Julien", 'Julien', "Sebastien", "Mickael", "Simon");
repeatFirstname($tabFirstname); // La fonction retournera la valeur "Julien"

SUJET 4 : EXTRACTION DES LETTRES

Complétez le code de la fonction letters afin qu’elle retourne un tableau de toutes les lettres du mot envoyé en paramètre $chaine. Les lettres devront être dans l’ordre de $chaine. Si une lettre apparaît plusieurs fois, elle apparaîtra aussi plusieurs fois dans le tableau.

Complétez le code suivant :

<?php
function numbersBetween($min, $max){
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
numbersBetween(2,4); // La fonction numbersBetween retournera le tableau suivant : [2,3,4];

SUJET 5 : NAMESPACE

Complétez le code afin d’encapsuler la classe User dans l’espace de nom Foo.

Complétez le code suivant :

<?php
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
class User {}

SUJET 6 : FACTORY

Rédigez le code de la classe TransportFactory. Celle-ci devra comporter une méthode publique et statique create prenant en paramètre une chaîne de caractères $type. Cette méthode devra retourner :

  • une instance de la classe Car si $type est égal à 1
  • une instance de la classe Motorbike si $type est égal à 2
  • false dans tous les autres cas.

Complétez le code suivant :

<?php
class Car {}
class Motorbike {}
class TransportFactory {

   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------


   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

}

SUJET 7 : VERIFICATION D’UN CODE POSTAL

Complétez le code de la fonction verificationcp qui reçoit en argument un paramètre $chaine. La fonction devra retourner :

  • true si $chaine comporte un code postal (5 chiffres pouvant aller de 0 à 9) suivi du mot clef CEDEX tel que "75002 CEDEX"
  • false dans tous les autres cas A noter qu’il y a un espace entre le code postal et le mot clef CEDEX écrit en majuscules.

Complétez le code suivant :

<?php
function verificationCp($chaine){
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------


   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
verificationcp("75002 CEDEX"); // la fonction verificationcp devra retourner true dans cet exemple

SUJET 8 : COUPER UNE CHAÎNE EN MOTS

Complétez le code de la fonction extraction qui reçoit en argument deux paramètres $chaine et $word. La fonction doit couper la chaîne $chaine au nombre de mots $word. Cependant, si $word est plus important que le nombre de mot dans $chaine, il faudra simplement retourner $chaine. Le paramètre $chaine sera uniquement composé de caractères alphanumériques sans ponctuation.

Complétez le code suivant :

<?php
function extraction($chaine, $word = 50){
  //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------


  //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
echo extraction("hello world!", 1).'<BR>'; // la fonction extraction devra retourner : "hello"
echo extraction("Lorem ipsum dolor sit amet, consectetur adipiscing elit", 5).'<BR>'; // la fonction extraction devra retourner : "Lorem ipsum dolor sit amet,"

SUJET 9 : METHODE EN POO

Créez la méthode setFoo() de la class B prenant en argument une chaîne de caractères. Celle-ci permettra d’attribuer la chaîne de caractères à la propriété $foo de la class A.

Complétez le code suivant :

<?php
class A
{
   protected $foo;
}
class B extends A
{
   public function getFoo()
   {
       return $this->foo;
   }

   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}

SUJET 10 : CONVERSION DE TYPAGE

Complétez le code de la fonction transtypage qui reçoit en argument une chaîne de caractère $chaine. La fonction permet de convertir une chaîne de caractères en nombre entier. Elle devra retourner :

  • la partie entière du nombre, si $chaine est un nombre,
  • 0 dans tous les autres cas

Complétez le code suivant :

<?php
function transtypage($chaine){
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
transtypage("Hello World!"); // La fonction retourne 0
transtypage("12.5"); // La fonction retourne 12
transtypage([12,4,8,6]); // La fonction retourne 0

SUJET 11 : IMPLÉMENTATION D’INTERFACE

Rédigez le code de la fonction hasInterface prenant en paramètre un objet $object. La fonction doit retourner :

  • true si l’objet $object implémente l’interface Foo
  • false dans tous les autres cas

Complétez le code suivant :

<?php
interface Foo{}
class User implements Foo {}
class Post implements Foo{}
class Message {}
class Media {}
function hasInterface($object) {
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}

SUJET 12 : SUPPRESION DU DERNIER ÉLÉMENT

Rédigez le code de la fonction extractLastElement qui reçoit en argument le paramètre $array. La fonction devra retourner le dernier élément du tableau $array.

Complétez le code suivant :

<?php
function extractLastElement(Array $array)
{
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------


   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
$stack = array("Julien", "Ludovic", "Sebastien", "Mickael");
//exmple d'appel extractLastElement($stack); =>devra retourner "Mickael"

SUJET 13 : MÉTHODE EN POO

Complétez le code de la classe Library en y ajoutant les méthodes suivantes :

  • addBook(Book $book) permettant d’ajouter l’objet $book au tableau $allBooks de la classe Library
  • removeBook(Book $book) permettant de supprimer l’objet $book du tableau $allBooks de la classe Library
  • getBooks() permettant de retourner le tableau $allBooks de la classe Library

Complétez le code suivant :

<?php
class Book  {
   private $title;

   public function __construct($title) {
       $this->title = $title;
   }

   public function getTitle() {
       return $this->title;
   }
}
class Library  {
   private $allBooks = [];

   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}

SUJET 14 : LANCER UNE EXCEPTION

Compléter le code suivant afin de lancer une exception.

Complétez le code suivant :

<?php
try {
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------


   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
} catch (Exception $e) {
   echo 'Caught exception: ',  $e->getMessage(), "<BR>";
}

SUJET 15 : INTERFACE EN POO

Rédigez le code d’une interface nommée InscriptionInterface. Celle-ci devra comporter les méthodes :

  • getDateCreated
  • setDateCreated(DateTime $datetime)

Complétez le code suivant :

<?php
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

SUJET 16 : EXPRESSION MODULAIRE

Rédigez le code de la fonction isMultipleOf qui prend un paramètre $number. Celle-ci devra retourner :

  • 0 si $nombre n’est ni un multiple de 2 ni un multiple de 5
  • 1 si $nombre est un multiple de 2
  • 2 si $nombre est un multiple de 5
  • 3 si $nombre est un multiple à la fois de 2 et de 5

Complétez le code suivant :

<?php
function isMultipleOf($number) {
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
isMultipleOf(2); //la fonction doit retourner 1

SUJET 17 : FUSIONNER DES CHAÎNES DE CARACTÈRE

Complétez le code de la fonction fusionner qui reçoit en argument deux paramètres : $word et $otherWord. La fonction concatène les deux paramètres en une seule chaîne de caractères où les deux paramètres sont séparés par un espace.

Complétez le code suivant :

<?php
function fusionner($word, $otherWord){
  //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

  //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
echo fusionner('Hello', 'world!').'<br>';

SUJET 18 : EXISTENCE D’UNE CLEF

Compléter le code de la fonction existence prenant un tableau $array et une clef $key en paramètre. La fonction devra retourner :

  • true si la clef $key existe dans le tableau $array
  • false dans tous les autres cas

Complétez le code suivant :

<?php
function existence($array = [], $key = ""){
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
existence(["fruit" => "banana", "color" => "green", "thing" => "spoon"], "fruit"); // return "true"

SUJET 19 : TRAITEMENT ET FONCTION DE TABLEAU

Compléter le code de la fonction switchPlaceOfElement qui reçoit en argument le tableau $tab. La fonction devra retourner le tableau en modifiant la position des éléments. Le premier élément devra prendre la place du dernier et inversement.

Complétez le code suivant :

<?php
function switchPlaceOfElement($tab)
{
  //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

  //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
switchPlaceOfElement(["PHP", "JS", "CSS", "HTML"]); // le tableau retourné devra avoir la forme suivante : ["HTML", "JS", "CSS", "PHP"]

SUJET 20 : MÉTHODE EN POO

Compléter le code de la classe User en y ajoutant la méthode getProperties. Celle-ci devra retourner un tableau associatif contenant les noms des propriétés de la classe User en clé et les valeurs associées aux propriétés comme valeur des clés. Les propriétés de la classe User ont volontairement été masquées.

Complétez le code suivant :

<?php
class User  {

   public function __construct($firstname, $lastname) {
       $this->firstname = $firstname;
       $this->lastname = $lastname;
   }
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}

SUJET 21 : CRYPTER UN MOT DE PASSE

Complétez le code de la fonction crypter qui reçoit en argument deux paramètres $password et $salt. Celle-ci permet de retourner un mot de passe hashé :

  • $password sera hashé grâce à l’algorithme SHA512
  • $salt sera hashé grâce à l’algorithme SHA1
  • Le tout sera concaténé et retourné

Complétez le code suivant :

<?php
function crypter($password, $salt) {
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
crypter('azerty', 'abcdefghijklmnopqrstuvwxyz0123456789');

SUJET 22 : EXISTENCE D’UN ELEMENT DANS UN TABLEAU

Compléter le code de la fonction blockIp qui reçoit deux arguments $ip et $blacklist Celle-ci devra retourner :

  • true si l’ip $ip est contenue dans le tableau $blacklist
  • false dans tous les autres cas

Complétez le code suivant :

<?php
function blockIp($ip, $blacklist) {
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
blockIp('127.0.0.1', ["192.168.0.0.1", "127.0.0.1"]); // La fonction 'blockIp()' devra retourner true

SUJET 23 : DESIGN PATTERN SINGLETON

Rédigez le code de la classe Single en ajoutant une méthode publique et statique getInstance. Vous devez implémenter le design pattern Singleton. La méthode getInstance devra donc toujours retourner la même instance de la classe Single.

Complétez le code suivant :

<?php
class Single {
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}

SUJET 24 : VÉRIFIER L’EXISTENCE D’UNE CONSTANTE

Compléter le code de la fonction isContant ayant une chaîne de caractères $var en paramètre. La fonction devra retourner :

  • true si $var est une constante définie
  • false dans tous les autres cas

Complétez le code suivant :

<?php
function isContant($var = "") {
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
isContant('FOO');

SUJET 25 : TRIER UN TABLEAU SUR UNE COLONNE

Rédigez le code de la fonction sortByAverage prenant en paramètre un tableau $tab. La fonction devra retourner le tableau $tab trié sur la colonne average du plus grand au plus petit.

Complétez le code suivant :

<?php
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
//Do not change the function "sortByAverage" below
function sortByAverage($tab = []) {

}
//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
$records =
[
   [
       'firstname' => 'Boyer',
       'average' => 10
   ],
   [
       'firstname' => 'Ludovic',
       'average' => 15
   ],
   [
       'firstname' => 'Thomas',
       'average' => 5
   ],
];
sortByAverage($records);

SUJET 26 : HÉRITAGE POO

Rédigez le code de la classe B héritant de la classe A. Réécrivez la méthode printPHP de la classe A dans la classe B afin de retourner : "My father says : [contenu du print de A]". Vous devez utiliser le contenu de la méthode printPHP de la classe A afin d’écrire cette nouvelle phrase.

Complétez le code suivant :

<?php
class A
{
   public static $text = "PHP";

   public function printPHP()
   {
       return self::$text.' is good';
   }
}
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

SUJET 27 : CONVERSION CHAINE EN FLOAT

Rédigez le code de la fonction conversionToFloat prenant en paramètre la variable $chaine. La fonction devra retourner $chaine converti en float

Complétez le code suivant :

<?php
function conversionToFloat($chaine = "") {
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
conversionToFloat("12.5"); //return 12.5
conversionToFloat("lorem"); //return 0

SUJET 28 : ENCODAGE JSON

Rédigez le code de la fonction jsonEncodeArray qui reçoit en argument le paramètre $array. La fonction devra retourner le tableau au format JSON.

Complétez le code suivant :

<?php
function jsonEncodeArray(Array $array)
{
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
$myvar = array(
   'hello',
   42,
   array(1,'two'),
   'apple',
   rand(),
   [rand(),rand(),rand(),rand(),rand()]
);

SUJET 29 : VÉRIFICATION D’UN TWEET

Complétez le code de la fonction isATweet() qui reçoit en argument $chaine. La fonction analyse si la chaîne de caractères est un Tweet. Elle devra retourner :

  • true si le tweet contient moins de 140 caractères et qu’il inclut au moins un hashtag(#) ou une mention de compte(@).
  • false dans tous les autres cas.

Complétez le code suivant :

<?php
function isATweet($chaine)
{
   //----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

   //----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------
}
isATweet("Php is so cool #certification"); // isATweet devra retourner "true" dans cet exemple

SUJET 30 : TYPAGE – CRÉATION FONCTION

Rédigez le code de la fonction displayInfo. Celle-ci prendra deux arguments dans l’ordre ci-dessous :

  • Un tableau
  • Un objet de la classe Exception

Complétez le code suivant :

<?php
//----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

//----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.




Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.