J'ai assisté à plusieurs entretiens récemment et les entreprises m'ont demandé de répondre à plusieurs fois aux questions «concevoir un [insérer le modèle]».
- Est-ce normal dans l'industrie de nos jours? Je suis dans le monde du logiciel depuis plus de deux décennies et j'ai assisté à ma part d'entrevues, mais je vois ce modèle émerger récemment.
- Je pense que la question est très ouverte. Par exemple: on m'a demandé de dessiner un diagramme de classe pour "Concevoir un parking". Je ne sais pas à quel niveau de détail l'intervieweur s'attend. C'était dans un test en ligne où je devais joindre un diagramme visio, donc je ne pouvais pas leur demander quelles étaient leurs attentes.
- Utilisez-vous ce genre de questions dans votre processus d'entrevue? Sont-ils liés uniquement aux diagrammes de classes ou demandez-vous également des séquences, des organigrammes et des DRE (bien sûr, en fonction de la nature du poste). Ont-ils été efficaces dans votre processus d'embauche?
* Modifier pour la réponse de Kevin *
Par exemple: Une question complète pourrait être "Concevoir un système de gestion de parking qui peut être utilisé pour trouver des emplacements vacants"
Je peux être fait avec 2 classes, ParkingLot
et Slot
ou je pourrais continuer à ajouter IVehicle
et Vehicle
et Car
et Motorcycle
classes. Où dois-je tracer la ligne?
public class ParkingLot
{
IVehicle Vehicle {set; get;}
List<Slot> GetEmptySlots() { };
}
public class Vehicle : IVehicle
{
Slot SlotNum {set; get;}
}
public class Slot
{
int Row {set; get;}
int Column {set; get; }
}
Réponses:
Dans une certaine mesure, oui. Tout le monde peut réciter la syntaxe ou copier / coller son chemin à travers une solution. Nous voulons embaucher des gens capables de résoudre des problèmes.
Ils s'attendent à ce que vous documentiez suffisamment la conception pour pouvoir la comprendre (et pas plus que cela).
Je demande aux gens comment ils résoudraient le problème XYZ, oui. Habituellement, ils le décrivent verbalement. Je veux voir s'ils posent des questions pour clarifier les exigences. Je veux voir comment ils communiquent avec d'autres programmeurs. Je veux voir s'ils peuvent penser debout.
Cela m'a été utile. Je ne veux pas de singes codés, je veux des ingénieurs logiciels.
la source
Je trouve ces questions plutôt stupides. La vraie réponse est "quels sont les cas d'utilisation?" Sans cas d'utilisation, aucune conception n'est nécessaire. Par exemple, voici une réponse parfaitement raisonnable à la question du parking:
Il satisfait un cas d'utilisation évident.
la source
Vous démontrez en fait une utilisation de cette question dans votre édition, où vous ne parvenez pas à concevoir un modèle réalisable.
Vous mentionnez également la création
Car
et lesMotorcycle
classes, ce qui n'a pas beaucoup de sens sans plus de considération. Votre conception ne bénéficiera d'aucune sous-classeVehicle
. Si vous introduisezMotorcycle
sans aucune différence de comportementVehicle
, je considérerais cela comme un échec.Si vous n'avez pas repéré le seul
Vehicle
problème, nous ferions à peu près une interview en direct. Si vous corrigiez cela (éventuellement en faisant celaList<IVehicle>
), je l'utiliserais comme point de départ pour regarder l'évolution de votre conception. Il y a une raison pour laquelle les exigences sont basiques, et il n'y a pas de cas d'utilisation bien définis - c'est à peu près la façon dont le monde fonctionne.Je pourrais vous lancer la nouvelle exigence selon laquelle "deux motos peuvent se garer dans un emplacement" pour voir comment vous évolueriez votre conception pour la gérer. Alors peut-être que nous aurons une conversation sur la concurrence (Et si nous avons deux entrées et deux voitures s'arrêtent simultanément - votre conception échouera-t-elle? Comment? Que pouvons-nous faire pour y remédier?). D'autres avenues possibles à explorer seraient de savoir comment mettre en œuvre le stationnement assigné, facturer le stationnement, les tarifs par rangée (peut-être que les rangées plus proches doivent payer plus), le stationnement limité dans le temps et comment trouver les délinquants, etc., etc.
Je considérerais également votre réflexion sur les parkings comme une indication de votre capacité générale à analyser intelligemment un problème. Si vous devez me demander des cas d'utilisation de base et / ou trouver des cas excentriques (comme des offres spéciales 2 pour 1 sur le stationnement), je commence à m'inquiéter fortement que vous n'ayez jamais réellement utilisé un parking avant et que nous sommes va avoir du mal à communiquer sur quelque chose de légèrement compliqué.
la source
J'avais l'habitude de les demander - en arrière lorsque nous avons créé des diagrammes de classes pour la génération de code. Je le fais encore à l'occasion, mais pas régulièrement. J'aime la question car elle me permet de voir la personne réfléchir.
Il est destiné à être ouvert. C'est bon. Il n'y a pas de bonne réponse. Je n'ai pas de réponse en tête; Je veux voir où ça mène. Je pense que c'est une meilleure question à poser en personne, pas un «e-mail en réponse». Il s'agit de communication, d'hypothèses et d'interaction; pas seulement une réponse!
la source
J'ai vu ce type d'interviews il y a au moins 12 ans. C'est l'approche que j'utilise depuis 6 ans. L'expérience montre qu'il sélectionne de meilleurs candidats pour le poste que de poser 20 questions et de leur attribuer une note sur 20.
Encore une fois, je le rendrais très ouvert aussi. Le but est de fournir un espace au candidat pour démontrer sa capacité. Avoir un candidat qui a posé des questions pertinentes à ce stade serait un plus. Tout comme un candidat faisant de bonnes hypothèses, mais signalant qu'il s'agissait d'hypothèses, et qu'elles devraient être examinées avant la mise en œuvre.
Je demande à tous les employés potentiels de démontrer les compétences dont ils ont besoin pour le travail lors de l'entretien. Pour les programmeurs, ils devront implémenter du code et parler de leur conception pour cela. Il est très efficace pour prévenir les mauvaises embauches, mais soyez prêt à un taux d'échec de 90% lors de l'entretien.
la source
La conception d'un petit système est en fait un exercice très pertinent à poser lors d'un entretien. Il montre vos compétences pour trouver une bonne solution logicielle à un problème de domaine.
Cependant, je trouve étrange de simplement demander à publier un diagramme de classe en ligne sans interaction humaine:
Dans une interview en direct, les étapes idéales que j'attendrais d'un candidat seraient:
Espérons qu'à un moment donné, le recruteur aura rassemblé suffisamment d'informations sur les compétences du candidat et l'appellera un jour. Le but n'est pas de mettre en œuvre une solution de travail complète (à moins qu'il s'agisse de l'un de ces services non rémunérés lors d'entretiens déguisés).
la source
Les questions POO sont ouvertes. Il n'y a pas de bonne ou de mauvaise réponse, mais il y a certains principes que les enquêteurs s'attendent à voir (comme utiliser un constructeur pour initialiser des variables, garder vos méthodes petites, utiliser l'encapsulation / composition / polymorphisme / héritage le cas échéant, etc.).
Attendez-vous toujours à des questions sur la structure des données, la POO et la base de données dans les entretiens, elles sont très courantes. Des livres comme «cracker l'entrevue de codage» et «entrevues de programmation exposées» peuvent vous aider à vous préparer.
la source
On m'avait demandé de sortir un design pour un parking il n'y a pas si longtemps. Je n'ai reçu aucun cas d'utilisation en premier lieu, mais j'en ai mentionné quelques-uns plus tard. Je crois que ma conception ne correspondait pas à ce que l'enquêteur avait en tête. J'accepte que toute conception de logiciel ne soit valable que pour un cas d'utilisation donné. Revenons à cette question d'entrevue, je crois que mon intervieweur n'avait aucune expérience de conception dans le monde réel. Ces gens croient qu'ils savent ce qu'ils demandent. C'est une autre histoire, que ce soit vrai ou non.
la source