-
-
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 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 pour l'article,
j'ajoute aussi les méthode d'une requête http: [GET,POST,PUT,DELETE]