Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Entretien développeur back : PHP / Symfony / MySQL
Cible : Développeur PHP / Symfony / MySQL
Niveau : Senior
Ce document propose des questions classiques, sans piège, à poser lorsque vous désirez valider un candidat pour un poste de développeur back.
J'utilise personnellement cette trame de questions, libre à vous de vous en inspirer, d'ajouter vos propres questions, et de déterminer lesquelles sont éliminatoires à vos yeux.
Veille technologique
Quelle est la version actuelle de PHP ?
> http://php.net/supported-versions.php
Qu'apporte la version 7 de PHP par rapport à la version 5 ?
> Speed
> Type Declarations (scalar typehint, strict mode, return type...)
> Error Handling (type error, throwable interface)
> New operators (Spaceship operator, Null Coalesce operator)
Quelle est la version actuelle de Symfony et quelle est la dernière version LTS ?
> https://symfony.com/roadmap
Selon CV, demander les évolutions de la dernière version de la base de données principalement utilisée.
PHP / POO
Quels mots clés sont utilisés pour définir la visibilité des propriétés et des méthodes ?
> public
> protected
> private
Et à quoi correspondent-ils ?
Qu'est-ce qu'une interface ?
> Ensemble de méthodes que les classes doivent définir si elles veulent l'implémenter
> Programmation par contrat
Quelle est la différence entre Héritage et Composition ?
> https://waytolearnx.com/2018/08/difference-entre-heritage-et-composition.html
Connaissez-vous des standards de code ? Pouvez-vous me donner un exemple ?
> https://www.php-fig.org/psr/
Pouvez-vous citer 3 designs patterns (au moins 1 de création, 1 de structure et 1 de comportement) ?
> Factory Method, Abstract Factory, Builder, Prototype, Singleton
> Adapter, Bridge, Composite, Decorator, Façade, Flyweight, Proxy
> Chain of responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor, Interpreter
> Attention : MVC = Combinaison des patrons observateur, stratégie et composite, ce qui forme ainsi un patron d'architecture.
Quels sont les principes derrière l'acronyme SOLID ?
> Single responsibility
> Open–closed
> Liskov substitution
> Interface segregation
> Dependency inversion
Avez-vous déjà utilisé PHPUnit ?
Qu'est-ce qu'un mock ?
Un stub ?
Qu'est-ce que la couverture de code ?
Quelle est la différence entre un test unitaire et un test fonctionnel ?
Quels outils de qualité de code utilisez-vous ?
Symfony
Quelle est la commande pour effacer le cache ?
> cache:clear
Après un déploiement par exemple, quelle commande permet de générer le cache afin d’améliorer les performances au lancement du site la première fois ?
> cache:warmup
Comment fonctionne le mécanisme d’injection de dépendances dans Symfony ?
Quelle est la différence entre un Listener et un Subscriber ?
Combien existe-t-il de composants ?
> autour de 70 (environ 55 sans les polyfill)
> https://symfony.com/components
Pouvez-vous en citer quelques uns ?
> config, console, DependencyInjection, event dispatcher, expression language, file system, finder, form, Http kernel, options resolver, routing, templating, translation, validator, varDumper, yaml
À quoi sert le composant Options Resolver ?
Quelle est votre démarche pour créer un formulaire ?
> https://symfony.com/doc/current/forms.html
Quels bundles tiers avez-vous déjà utilisés ?
MySQL
Quels sont les 3 principaux types de jointure entre les tables ?
> (inner) join
> left join
> right join
Quelle est la différence entre innoDB et MyISAM ?
> Transactions
> Clés étrangères
> ACID (Atomicity, Consistency, Isolation, Durability)
(inconvénients : admistration plus compliquée, plus lent pour les lectures et insertion du fait de la gestion de l'intégrité des données, de pouvoir récupérer en cas de crash...)
Soit une table avec un champ texte et un champ boolean, où dois-je poser un index ?
> Sur le champ texte, car la cardinalité est trop faible sur un booléen
Git
Avez-vous un compte Github ?
Quelle commande permet de basculer d'une branche à une autre ?
> git switch [branche]
> git checkout [branche]
Quelle commande permet d'obtenir la liste des tags ?
> git tag
> git tag -l
Quelle commande permet de supprimer une branche distante ?
> git push origin --delete [branche]
> git push origin :[branche]
Qu'est-ce que gitflow ?
> modèle de branches (develop, feature branchs, release, hotfix, master, tags)
Quelle est la différence entre rebase et merge ?
> http://blog.ippon.fr/2015/05/19/git-merge-ou-rebase/
API
Quels sont les verbes HTTP les plus couramment utilisés et leur utilité ?
> GET, POST, PUT, DELETE, PATCH
Quelle est la différence entre PATCH et PUT ?
Qu'est-ce qu'une API RESTful ?
> https://martinfowler.com/articles/richardsonMaturityModel.html
Autres logiciels (questions à adapter selon CV)
Bash / MongoDB / RabbitMQ / Redis / Elastic Stack / Varnish
NewRelic (définir Apdex) / Capistrano / AWS et ses différents services
Humain
Avez-vous déjà utilisé des méthodes agiles ? Si Scrum, définir les différents rituels.
Pouvez-vous me donner 3 de vos qualités ?
@KOUISAmine

This comment has been minimized.

Copy link

@KOUISAmine KOUISAmine commented Aug 12, 2018

Merci Pour cet Article Jean-Philippe 👍 , au passage j'aimerais répondre a la question "Quelle est la différence entre Héritage et Composition ?"
de façon un peu plus détailler : Différences clés entre Héritage et Composition

@ntjoel19

This comment has been minimized.

Copy link

@ntjoel19 ntjoel19 commented Sep 13, 2018

Merci pour cet article, il est intéressant et instructif.

@wannis-essid

This comment has been minimized.

Copy link

@wannis-essid wannis-essid commented Sep 26, 2018

Merci bien

@faresk93

This comment has been minimized.

Copy link

@faresk93 faresk93 commented Oct 11, 2018

Merci beaucoup

@jpchateau

This comment has been minimized.

Copy link
Owner Author

@jpchateau jpchateau commented Oct 29, 2018

Merci pour l'article @KOUISAmine !

@gmedyacine

This comment has been minimized.

Copy link

@gmedyacine gmedyacine commented Nov 12, 2018

Merci pour l'article,
j'ajoute aussi les méthode d'une requête http: [GET,POST,PUT,DELETE]

@faissal86

This comment has been minimized.

Copy link

@faissal86 faissal86 commented Nov 13, 2018

Merci infiniment

@samibenfathallah

This comment has been minimized.

Copy link

@samibenfathallah samibenfathallah commented Dec 6, 2018

Merci

@jpchateau

This comment has been minimized.

Copy link
Owner Author

@jpchateau jpchateau commented Dec 7, 2018

Merci @gmedyacine, j'ai mis à jour les questions de cet entretien en intégrant les différents verbes HTTP.

@linnnux

This comment has been minimized.

Copy link

@linnnux linnnux commented Dec 31, 2018

Merci !

@ZahraIchibi

This comment has been minimized.

Copy link

@ZahraIchibi ZahraIchibi commented Jan 10, 2019

Merci

@Sylyac2000

This comment has been minimized.

Copy link

@Sylyac2000 Sylyac2000 commented Mar 27, 2019

Merci bcp

@chakerben

This comment has been minimized.

Copy link

@chakerben chakerben commented May 16, 2020

Merci beaucoup pour cet article intéressant !

@Dededede4

This comment has been minimized.

Copy link

@Dededede4 Dededede4 commented Sep 2, 2020

Ahah, ce n'est pas des questions pour savoir si on est un développeur back.
C'est des questions pour savoir si on est @jpchateau :D

(je ne te remercie pas, j'ai eu ces questions plein de fois :[ !)

@helmidridi

This comment has been minimized.

Copy link

@helmidridi helmidridi commented Sep 14, 2020

La réponse de cette question est erronée "Quelle commande permet de supprimer une branche distante ?"

@jpchateau

This comment has been minimized.

Copy link
Owner Author

@jpchateau jpchateau commented Sep 16, 2020

Hello @helmidridi !
C'est la commande dont je me sers, mais il y a plusieurs moyens pour effectuer cela (cf https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote).
En tout cas, la doc officielle de git semble plébisciter git push origin --delete [name], je vais donc mettre à jour ce document.
Merci !

@morinceline

This comment has been minimized.

Copy link

@morinceline morinceline commented Oct 16, 2020

Merci pour l'article très utile ;)

@Ferimba

This comment has been minimized.

Copy link

@Ferimba Ferimba commented Nov 9, 2020

Merci pour l'article !

@dia-ousmane19

This comment has been minimized.

Copy link

@dia-ousmane19 dia-ousmane19 commented Mar 30, 2021

tres interessant

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment