Skip to content

Instantly share code, notes, and snippets.

@jpchateau
Last active February 13, 2024 08:56
  • Star 62 You must be signed in to star a gist
  • Fork 25 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save jpchateau/f822e00f1c6318046125 to your computer and use it in GitHub Desktop.
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
Copy link

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
Copy link

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

@wannis-essid
Copy link

Merci bien

@faresk93
Copy link

Merci beaucoup

@jpchateau
Copy link
Author

Merci pour l'article @KOUISAmine !

@gmedyacine
Copy link

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

@faissal86
Copy link

Merci infiniment

@samibenfathallah
Copy link

Merci

@jpchateau
Copy link
Author

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

@linnnux
Copy link

linnnux commented Dec 31, 2018

Merci !

@ZahraIchibi
Copy link

Merci

@Sylyac2000
Copy link

Merci bcp

@chakerben
Copy link

chakerben commented May 16, 2020

Merci beaucoup pour cet article intéressant !

@Dededede4
Copy link

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 :[ !)

@helmis123
Copy link

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

@jpchateau
Copy link
Author

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
Copy link

Merci pour l'article très utile ;)

@Ferimba
Copy link

Ferimba commented Nov 9, 2020

Merci pour l'article !

@dia-ousmane19
Copy link

tres interessant

@the-juju
Copy link

Merci, excellent contenu !

@bassankofa
Copy link

Good job

@ridjy
Copy link

ridjy commented Sep 16, 2022

waow ! merci !

@emicheldev
Copy link

Good job

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