Salutations, amis développeurs !
Tout au long de ma carrière, j'ai mené plus de 100 entretiens avec des développeurs de tous niveaux, des développeurs juniors aux vétérans chevronnés. Et tu sais quoi? Pendant ce temps, j'ai élaboré une série de 10 questions délicates que je pose à chaque nouveau candidat.
Pourquoi? Eh bien, c'est simple : ces questions me permettent d'aller au-delà de la simple évaluation des compétences techniques de quelqu'un. Ils approfondissent leur processus de réflexion, leur approche de résolution de problèmes, leurs capacités de travail en équipe et d’autres qualités cruciales.
Êtes-vous prêt pour cette bataille intellectuelle ? Alors préparez-vous, car ces questions ne sont pas pour les âmes sensibles !
Supposons que vous implémentiez un système d'édition de revues dans lequel les éditeurs peuvent modifier des articles dans le panneau d'administration. Comment empêcheriez-vous deux éditeurs de modifier simultanément le même article et d'écraser les modifications de chacun ?
Quels sont les principes du déploiement sans temps d’arrêt, une approche qui déploie une application sans temps d’arrêt de service ? Comment y parvient-on ?
Nommez les aspects de votre framework préféré que vous n'aimez pas ou qui ne fonctionnent pas comme vous le souhaiteriez. Expliquez comment et où ces problèmes surviennent et comment ils pourraient être améliorés.
4. Gestion des tâches Cron de longue durée
Que pourrait-il se passer si votre tâche cron, qui s'exécute toutes les minutes, commence à prendre plus d'une minute à s'exécuter ? Comment peut-on éviter cela ?
5. Dénormalisation des données dans les bases de données
Avez-vous déjà rencontré le besoin de dénormaliser des données dans une base de données ? Si oui, quel problème essayiez-vous de résoudre, à quels défis avez-vous été confronté et comment cela aurait-il pu être mieux fait ?
6. Se moquer des appels externes dans les tests
Si vous écrivez des tests, comment contourner le problème des appels externes effectués par le code que vous testez ? Considérons le scénario où les appels externes sont interdits sur CI (intégration continue). Pourquoi est-ce une bonne pratique ?
7. Synchronisation des modifications des e-mails avec des systèmes externes
Supposons que votre système implémente la fonctionnalité de modification des e-mails. Cependant, l'e-mail est également stocké dans un système externe, tel qu'un processeur de paiement, qui envoie des e-mails aux utilisateurs (mais les utilisateurs n'interagissent pas directement avec lui). Comment mettriez-vous en œuvre la synchronisation des e-mails avec le système externe ?
Comment connaître les erreurs qui surviennent en production ? Vous appuyez-vous sur les rapports des utilisateurs ou avez-vous mis en place des mécanismes automatisés ?
Comment concevriez-vous une application de chat simple ? Vous pouvez interroger l'ingénieur backend sur la partie backend et l'ingénieur frontend sur la partie frontend. Il pourrait y avoir de nombreuses branches dans cette conversation.
10. Isoler les tests dans un environnement multi-utilisateurs
Comment l'isolement des tests est-il assuré lorsque plusieurs tests s'exécutent simultanément et accèdent à la base de données, la modifiant potentiellement ? Si votre framework ne fournit pas d'isolation, comment l'implémenterez-vous ou l'améliorerez-vous ?
Conseils supplémentaires :
Encouragez le candidat à développer son processus de réflexion et le raisonnement qui sous-tend ses réponses.
Évaluez leurs compétences en résolution de problèmes, leur capacité à penser de manière critique et leur connaissance des technologies pertinentes.
Évaluez leurs compétences en communication et en collaboration tout au long de l’entretien.