-
-
Save jpchateau/f822e00f1c6318046125 to your computer and use it in GitHub Desktop.
| 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 ? |
Merci pour l'article @KOUISAmine !
Merci pour l'article,
j'ajoute aussi les méthode d'une requête http: [GET,POST,PUT,DELETE]
Merci infiniment
Merci
Merci @gmedyacine, j'ai mis à jour les questions de cet entretien en intégrant les différents verbes HTTP.
Merci !
Merci
Merci bcp
Merci beaucoup pour cet article intéressant !
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 :[ !)
La réponse de cette question est erronée "Quelle commande permet de supprimer une branche distante ?"
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 !
Merci pour l'article très utile ;)
Merci pour l'article !
tres interessant
Merci, excellent contenu !
Good job
waow ! merci !
Good job
Merci pour l'article !
Merci beaucoup