9 votes

Test d'embauche en programmation - Testez les connaissances d'un développeur en C# / ASP.NET

Nous allons bientôt embaucher un développeur .NET, et on m'a demandé de créer un test qui prendrait environ une heure à résoudre. Un test qui testerait les connaissances du programmeur en (principalement) C# et ASP.NET.

Voici ce que j'ai trouvé jusqu'à présent :

  • Utilisez le projet #1 pour lire les données (HTML) à partir de l'URL spécifié et sortir tous les liens (ancres) contenant le nom de l'ancre "xxxxxxxxx". Vous êtes libre d'utiliser des bibliothèques tierces. Mon idée principale était de tester comment le développeur s'y prendrait pour résoudre le problème. Par exemple :

    • Créez une expression rationnelle qui analysera toutes les données nécessaires.
    • Créez une arborescence DOM et utilisez XPATH pour trouver tous les nœuds d'ancrage.
    • Interroger la chaîne entière et effectuer des comparaisons manuelles de chaînes.
  • Créez une nouvelle solution dans laquelle vous démontrez l'utilisation des masterpages .NET.

    • Connectez la solution à la base de données ********. Et affichez tous les clients de la table "********_customers".
    • Créez un nouveau bouton qui rafraîchit tous les utilisateurs en utilisant AJAX.

      C'est plutôt basique. Mais j'ai aussi ajouté celui qui se trouve en dessous. Principalement pour tester les connaissances en OO des développeurs. Pensez-vous que c'est trop "excessif", ou quel type de test suggéreriez-vous ? Si vous deviez engager un développeur ASP.NET, quel serait votre objectif principal ? ADO.NET ? IO ? manipulation des chaînes de caractères ?

  • Créez une interface/implémentation de classe abstraite démontrant la fonctionnalité du modèle Factory, Factory Method, Command ou Decorator. Vous n'avez pas besoin d'implémenter les fonctionnalités, utilisez simplement les commentaires dans votre classe abstraite.

Merci d'avance !

23voto

Marcin Points 3884

La tâche que vous avez donnée représente essentiellement un jour ou deux de codage si vous voulez avoir un code raisonnablement lisible. En une heure, je pense que je pourrais le faire, mais vous devrez lire du code avec des méthodes au nom cryptique, des regex illisibles, des callbacks bizarres, aucune gestion des erreurs et qui est globalement assez laid. En le regardant, vous ne m'engagerez pas.

Avant de donner votre question aux candidats, assurez-vous d'abord que vos pairs/programmeurs peuvent le faire. Et que vous pouvez la coder en moins de 60 minutes d'une manière qui vous satisferait.

Cela dit, je ne sais pas si le test est le meilleur choix pour embaucher quelqu'un. Quelques blogueurs spécialisés dans les entretiens ont écrit sur leur expérience après avoir mené des tonnes d'entretiens :

Je suis tout à fait d'accord avec eux. Ayant moi-même mené des milliards d'entretiens, je trouve que poser des questions de base sur la technologie est loin d'être aussi bon que de demander de mettre en œuvre un peu de récursion ou de pointeurs (si quelqu'un prétend connaître le C/C++).

En engageant quelqu'un qui comprend la récursion/les algorithmes, vous obtenez un gars intelligent qui peut apprendre de nouvelles technologies. En engageant quelqu'un qui sait comment se connecter à une base de données, qui sait comment se connecter à une base de données mais qui n'est pas nécessairement qualifié pour faire beaucoup plus que cela.

Il existe quelques sources de bonnes questions de programmation qui se situent quelque part entre le codage et les algorithmes et qui peuvent vous inspirer. Elles ne testent pas du tout .NET, mais sont de très bons indicateurs de programmeurs intelligents.

4voto

Sam Points 41

En une heure, vous pouvez seulement tester ses compétences en programmation, mais il ne suffit pas d'écrire l'échantillon de code.

Jetez un coup d'œil à ce test C# / ASP.NET MVC :

http://tests4geeks.com/test/asp-net-mvc-c-sharp

Une fois que le candidat aura passé le test et que ses résultats seront bons, invitez-le à l'entretien et parlez-lui de son expérience. Demandez-lui quelles sont les fonctionnalités les plus difficiles qu'il a mises en œuvre dans ses projets. En d'autres termes, vous devez comprendre s'il sait et peut faire suffisamment pour prendre part à votre projet.

Si vous voulez toujours lui demander d'écrire du code. C'est une idée :

Il y a les élèves et les sujets. S'il vous plaît demander d'écrire 3 pages (asp .net mvc ou web-forms). Première et deuxième - pour éditer le dictionnaire des étudiants et des sujets. Troisième forme doit contenir être la table. Les étudiants sont dans la colonne de gauche. Les sujets sont dans la ligne supérieure. Les notes sont à l'intersection. Chaque note peut être éditée (zone de texte) et sauvegardée. La sauvegarde peut être effectuée en cliquant sur le bouton commun "Sauvegarder". Ou on peut sauvegarder chaque cellule automatiquement en utilisant Ajax.

Cet exemple est très simple, mais il vous montre comment l'utilisateur écrit le code, quelles techniques il utilise.

3voto

Brock Woolf Points 16128

J'aurais pensé qu'il serait préférable de créer simplement un test qui vous permettrait de classer facilement les développeurs dans différentes "catégories de compétences".

Pourquoi ne pas prévoir trois ou quatre sections ou fonctionnalités que le développeur doit superposer pour montrer ses compétences en matière de programmation et de conception ?

  • Partie 1 : Mettre en œuvre x difficultés faciles caractéristiques.
  • Partie 2 : Mise en œuvre x difficulté moyenne caractéristiques.
  • Partie 3 : Mettre en œuvre x fonctions difficiles caractéristiques.
  • Partie 4 : Mettre en œuvre x fonctionnalités très difficiles.

Et donnez au développeur 1 heure pour écrire l'application. Faites en sorte qu'il soit réaliste qu'il puisse mettre en œuvre les fonctionnalités dans le délai imparti.

Comme Joel et Jeff le disent dans le podcast Stackoverflow, il existe une corrélation directe entre les compétences des développeurs et la vitesse.

Pensez à la façon dont les examens sont structurés ? Si nous disposions d'un temps infini, nous pourrions tous répondre à 100 % des questions dans tous les examens que nous passons, mais en une heure ?

De cette façon, si un développeur passe votre test et ne met en œuvre que des fonctionnalités jusqu'à la section 2 dans le délai imparti, vous aurez une indication sûre qu'il ne convient pas pour le poste. Si les fonctionnalités de la section 3 sont toutes réalisées, alors il est assez bon et si la section 4 est complète, cela signifie qu'il est très expérimenté et qu'il est légèrement supérieur aux autres.

Cependant, j'examinerais également l'aspect général que le développeur a donné au code. S'il a implémenté toutes les fonctionnalités jusqu'à la section 4, mais de façon médiocre, alors il ne sera pas non plus celui que vous recherchez. Si un développeur n'a fait que la section 3, mais a tout mis en œuvre de manière très élégante, alors je voudrais l'engager.

Je pense également qu'une heure est peut-être un peu trop longue. Je viserais 10 à 40 minutes. Vous devrez peut-être supprimer la section 4 que j'ai proposée.

2voto

emvy Points 74

Vous devez vérifier GeekInterview -- une bonne source pour les questions d'interview Il y a des centaines de questions.

2voto

spoon16 Points 17694

Je pense que vous feriez mieux de trouver une seule question qui vous permette de voir plus que les compétences de développement à l'aide de vos technologies cibles. De solides compétences en matière de résolution de problèmes sont aussi importantes que l'expertise dans une pile technologique spécifique.

Je vous recommande même d'explorer les deux aspects d'un candidat à différents moments du processus. J'ai l'habitude de poser un tas de questions sur la pile technologique que nous utilisons dans le cadre de notre projet afin d'évaluer le niveau de connaissances du candidat par rapport à cette pile.

Je leur pose ensuite une question de résolution de problème et je les autorise à utiliser la technologie avec laquelle ils sont le plus à l'aise pour résoudre le problème (leur choix de technologie peut être un indicateur important).

J'aime particulièrement Théorie des graphes les problèmes liés à l'environnement. Les solutions des candidats vous en diront long sur la manière dont ils abordent et résolvent les problèmes, ainsi que sur la manière dont ils valident leurs solutions.

Dans le cadre de la partie de l'entretien consacrée à la résolution de problèmes, vous devez rechercher :

  • Conception correcte de la structure des données
  • Mise en œuvre des meilleures pratiques OO
  • Une solution appropriée (peuvent-ils déboguer les problèmes de manière efficace... une bonne façon de voir cela est de ne pas leur permettre d'utiliser un ordinateur, de les faire coder sur un tableau blanc et de déboguer dans leur tête).
  • Validation adéquate de la solution (proposent-ils des cas de test) ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X