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
Connaissez-vous 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/3.4/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 est la commande pour basculer d'une branche à l'autre ?
> 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 :[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
Qu'est-ce qu'une API RESTful ?
> https://martinfowler.com/articles/richardsonMaturityModel.html
Autres logiciels (questions à adapter selon CV)
Shell / 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 ?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment