Des questions auxquelles tout bon développeur .NET devrait pouvoir répondre? [fermé]

246

Mon entreprise est sur le point d'embaucher des développeurs .NET . Nous travaillons sur une variété de plateformes .NET: ASP.NET, Compact Framework, Windowsforms, Web Services. Je voudrais compiler une liste / catalogue de bonnes questions, une sorte de standard minimum pour voir si les candidats sont expérimentés. Donc, ma question est:

À quelles questions pensez-vous qu'un bon programmeur .NET devrait pouvoir répondre ?

Je le verrais aussi comme une liste de contrôle pour moi, afin de voir où sont mes propres déficits (il y en a beaucoup ...) .

texte alternatif

* MISE À JOUR: Il veut indiquer clairement que nous ne testons pas uniquement les connaissances .NET, et que les capacités de résolution de problèmes et les compétences générales en programmation sont encore plus importantes pour nous.

splattne
la source

Réponses:

171

Les questions de base comprennent:

Je pense qu'il est généralement utile de demander à vos candidats d'effectuer un simple exercice de codage tel que:

  • Écrivez votre propre classe de liste liée sans utiliser les classes intégrées.
  • Écrivez votre propre classe de table de hachage sans utiliser les classes intégrées.
  • Écrivez une classe qui représente un arbre binaire. Écrivez une méthode qui traverse tous les nœuds de l'arbre.
  • Écrivez une méthode pour effectuer une recherche binaire sur un tableau sans utiliser de méthodes intégrées.
  • Dessinez un schéma de base de données pour un blog. Chaque utilisateur n'a qu'un seul blog, chaque blog a plusieurs catégories, chaque catégorie a de nombreux articles et chaque article peut appartenir à plusieurs catégories. Demandez à votre candidat d'écrire des requêtes pour extraire des informations spécifiques.

Ensuite, recherchez un savoir-faire technique spécifique:

  • (Gestionnaires d'événements) Créez une classe avec un gestionnaire d'événements personnalisé, créez une autre classe qui se connecte au gestionnaire d'événements personnalisé.
  • (XML) Chargez un document XML et sélectionnez tous les nœuds ayant les propriétés x, y et z.
  • (Programmation fonctionnelle) Créez une fonction qui accepte une autre fonction comme paramètre. Une fonction Map ou Fold fonctionne vraiment bien pour cela.
  • (Réflexion) Écrivez une fonction qui détermine si une classe a un attribut particulier.
  • (Regex) Écrivez une expression régulière qui supprime toutes les balises d'un bloc de HTML.

Aucune de ces questions n'est particulièrement difficile à répondre pour un programmeur C # compétent, et elles devraient vous donner une bonne idée des forces particulières de vos candidats. Vous pouvez également vouloir travailler dans quelques questions / exemple de code qui utilisent des modèles de conception spécifiques.

[Modifier pour clarification] :

Il semble que beaucoup de gens ne comprennent pas pourquoi je poserais ce type de questions. Permettez-moi de revenir sur les commentaires de quelques personnes (je ne cite pas directement, mais je paraphrase à la place):


Q: À quand remonte la dernière fois que quelqu'un a utilisé des références volatiles ou faibles?

R: Lorsque je donne des entretiens techniques, je cherche à voir si une personne comprend les fonctionnalités de haut niveau et de bas niveau de .NET. Les éléments volatils et les références faibles sont deux fonctionnalités de bas niveau fournies par .NET - même si ces fonctionnalités ne sont pas souvent utilisées dans la pratique, les réponses à ces questions sont extrêmement révélatrices:

  • Une bonne compréhension des volatiles démontre qu'une personne comprend comment les optimisations du compilateur modifient l'exactitude du code, comment les threads conservent des copies locales de l'état partagé qui peuvent être désynchronisées à un moment donné, et connaît au minimum certaines des complexités du code multithread .

  • Une bonne compréhension des références faibles démontre qu'une personne connaît les détails intimes du ramasse-miettes et comment elle décide quand libérer de la mémoire. Bien sûr, vous pourriez demander aux candidats «comment fonctionne un ramasse-miettes», mais poser des questions sur les références faibles obtient une réponse bien meilleure et plus réfléchie.

.NET est un langage assez abstrait, mais les développeurs vedettes ont presque toujours une connaissance approfondie du CLR et des détails de bas niveau de l'exécution de .NET.


Q: Pourquoi quelqu'un aurait-il besoin d'implémenter sa propre table de hachage ou liste de liens?

R: Je n'implique pas que la classe Dictionary est inférieure ou que les gens devraient lancer leur propre table de hachage. Il s'agit d'une question fondamentale qui teste si une personne a une compréhension minimale des infrastructures de données. C'est ce que ces questions testent: compréhension minimale.

Vous en apprendrez davantage sur ces tables de hachage et listes liées le premier jour de Data Structures 101. Si quelqu'un ne peut pas écrire une table de hachage ou une liste liée à partir de zéro, alors il a un énorme fossé dans ses connaissances techniques.


Q: Pourquoi ces questions sont-elles si grossières?

R: Parce que le titre de ce fil est "questions que tout bon développeur .NET devrait savoir". Chaque développeur .NET commence sa carrière en écrivant des applications crud, et 90% de toutes les personnes chargées du développement d'applications dans la vie se préoccupent des applications métier.

Je pense que les questions testant les connaissances d'une personne sur les applications métier sont appropriées dans la plupart des cas, à moins que vous ne recherchiez des développeurs dans des niches très spécifiques, telles que le développement de compilateurs, le développement de moteurs de jeux, la démonstration de théorèmes, le traitement d'images, etc. .

Juliette
la source
8
Je pense que votre liste est un bon moyen de sonder les forces et les faiblesses mais ce n'est pas une connaissance "de base". Comme le souligne Greg, j'ai été trompé par des opérateurs "court-circuités" même s'ils sont simples et je les utilise souvent: je venais d'oublier le nom. Est-ce que cela me disqualifierait?
Mark Brittingham
33
De même, je n'ai jamais déclaré une variable "volatile" et je fais très peu avec XML et je n'ai donc pas pu terminer votre tâche de programmation. Et pourtant, je suis un auteur publié, j'ai remporté un grand concours de programmation et j'ai écrit 4 produits à succès qui ont remporté des prix importants.
Mark Brittingham
24
Ainsi, je ne suis pas nécessairement en désaccord avec votre liste - je suis juste en désaccord avec votre caractérisation des éléments de connaissance comme «de base». Aucun n'est un concept difficile - mais certains sont tout à fait spécifiques et ne seront pas familiers à un bon nombre de candidats. Encore - encore une fois - veuillez accepter mes excuses.
Mark Brittingham
39
La moitié des éléments de cette liste sont des questions triviales. Cela n'aidera pas à trouver de bonnes personnes, mais cela pourrait ennuyer suffisamment certaines d'entre elles pour sortir de votre entrevue.
Jason Kester
15
(Regex) Write a regular expression which removes all tags from a block of HTML.- I SMELL TROUBLE
BlueRaja - Danny Pflughoeft
135

J'ai trouvé ces listes sur le blog de Scott Hanselman :

Voici ce que je pense sont les questions les plus importantes de ces messages divisés en catégories. Je les ai édités et réarrangés. Heureusement pour la plupart de ces questions, il existe déjà une bonne réponse sur Stack Overflow. Suivez simplement les liens (je les mettrai tous à jour dès que possible) .

Questions .NET indépendantes de la plateforme

ASP.NET

splattne
la source
8
Je connais des développeurs qui savent tout cela et ne peuvent toujours pas voir plus loin que le livre. L'esprit ouvert est très important, en plus, n'essayez pas d'obtenir trop de réponses détaillées, assurez-vous simplement qu'ils comprennent le concept.
Saif Khan
Je vieillis, Saif. Mais d'un autre côté, si vous ne connaissez pas les détails, vous ne pourrez pas appliquer correctement les "concepts".
splattne
2
Certaines questions sont vraiment stupides, comme quelle est la différence entre Debug et Release build. Oui, Visual Studio a prédéfini certaines configurations de build mais ce n'est pas une question indépendante de la plateforme. Quelqu'un qui compile par ligne de commande ou en utilisant Mono, pourrait ne pas avoir d'idée de quoi vous parlez.
lubos hasko
3
Êtes-vous capable de décrire des concepts qui prennent généralement 2 pages ou même un chapitre d'un livre, de manière articulée dans une situation d'entrevue. Je ne peux pas sans les répéter au préalable
Chris S
1
Essayez de ne pas demander aux gens de définir des termes. Vous vous retrouverez avec des majors CS qui devaient les mémoriser pour les tests, mais passer à côté de personnes qui savent réellement programmer. Je me souviens qu'on m'avait demandé une fois ce qu'était le "report". Je n'avais pas le premier indice, même si je le faisais 30 fois par jour à l'époque.
Jason Kester
94

Ce n'est peut-être pas ce que vous voulez entendre, mais je recommanderais de ne pas se concentrer sur les technologies étroites, mais sur les compétences générales en programmation et en résolution de problèmes. Les développeurs solides peuvent apprendre rapidement tout ce que vous voulez qu'ils fassent.

Par exemple, je ne suis pas un gars du Compact Framework, donc je pourrais échouer à votre entretien si vous aviez pris cette direction. Mais si je devais l'utiliser, je pourrais faire des recherches et me lancer.

Le livre de Joel, Smart and Gets Things Done , contient d'excellents conseils pour l'embauche de développeurs et il existe de grandes sections juteuses sur le type de questions à poser. Je le recommande fortement.

Brian MacKay
la source
Peut-être qu'une partie du processus d'embauche devrait être un problème dans Cardspace ou quelque chose qu'ils n'ont jamais examiné !!
Jennifer
Peut-être, mais il y a le problème de la recherche, donc je pense que cela pourrait être injuste. Je suis plus intéressé à voir comment ils pensent les problèmes et peut-être à les voir coder quelque chose d'abstrait afin que je puisse savoir s'ils parlent du code nativement ou non.
Brian MacKay
Si je pouvais choisir environ deux personnes qui ont toutes deux des compétences générales en programmation et en résolution de problèmes, pour des raisons pratiques, JE DOIS choisir celle qui possède les meilleures connaissances et expériences .NET.
splattne
Connaissance de .NET certes, mais en ce qui concerne les technologies plus étroites, je pense que vous pouvez aller avec le programmeur avec les compétences en résolution de problèmes.
Jennifer
5
Oui, nous devons tous connaître des tonnes de "technologies étroites". Mais pour chacun que nous connaissons, il y a un groupe que nous ne connaissons pas (généralement parce que nous n'en avons pas eu besoin). Je dis que vous ne voulez pas manquer un excellent développeur pour ne pas connaître SharePoint, car très bientôt, il pourrait être votre meilleur gars SharePoint.
Brian MacKay
66

Je pense que si j'interviewais quelqu'un qui avait une expérience LINQ, je lui demanderais peut - être simplement d'expliquer LINQ. S'ils peuvent expliquer l'exécution différée, le streaming, les interfaces IEnumerable / IEnumerator, foreach, les blocs d'itérateur, les arborescences d'expression (pour les points bonus, de toute façon), ils peuvent probablement faire face au reste. (Certes, ils pourraient être des développeurs "ok" et pas encore "obtenir" LINQ - je pense vraiment au cas où ils ont prétendu connaître suffisamment de LINQ pour en faire une question juste.)

Dans le passé, j'ai posé plusieurs des questions déjà énumérées, et quelques autres:

  • Différence entre les types de référence et de valeur
  • Passer par référence vs passer par valeur
  • IDisposable et finaliseurs
  • Chaînes, immuabilité, encodages de caractères
  • Point flottant
  • Délégués
  • Génériques
  • Types nullables
Jon Skeet
la source
1
Oui, je voulais voir ce genre de réponse. Bon candidat pour être accepté. Quelqu'un de mieux?
splattne
5
@splattne: ne soyez pas stupide, c'est une réponse de Jon Skeet, alors acceptez-la. C'est inévitable.
Steven A. Lowe
3
J'allais juste dire ... wt ... tu ne remets pas en question Skeet!
Saif Khan
1
C'est une bien meilleure réponse que celle acceptée. Il vous aide à comprendre si quelqu'un possède des connaissances approfondies dans un domaine de prétendue expertise tout en explorant les connaissances des fonctionnalités du langage qui couvrent une gamme assez large.
Mark Brittingham
1
Cette réponse bat le pas de la conception de votre propre liste liée, "analyse HTML avec regexp", ou "Que savez-vous de l'Assemblée, du GAC, etc ..." car elle traite des outils et des concepts que vous effectivement utiliser pendant le développement. Une connaissance approfondie de LINQ est également essentielle. J'ai vu de nombreux exemples sur ce site où les gens essaient de lancer leur propre version de Union Distinct et Concat pour les collections parce qu'ils ne comprennent pas LINQ.
Evan Plaice
42

Je suis avec les gars qui recherchent des capacités de résolution de problèmes plutôt que le genre de choses que vous pouvez rechercher et mémoriser à partir des 101 meilleures questions et réponses de l'interview .NET ".

Pour ne citer que l'exemple, j'ai tendance à «connaître» les choses que je dois utiliser au jour le jour. J'ai tendance à oublier (et plus tard à revoir) les choses que j'utilise rarement.

Si vous vouliez me faire trébucher dans une interview, ce serait très facile.

Néanmoins, j'ai architecturé et codé une grande partie de l'infrastructure d'un système qui utilise des couches Business Objects et Data identiques pour ses incarnations WinForms et ASP.NET, et notre base de code est suffisamment robuste et réutilisable pour que nous puissions prendre en charge et développer 20+ des versions du site Web configurées différemment, ainsi qu'un nombre croissant (actuellement 5) de l'application WinForms ...

... avec une équipe de développement de deux personnes.

J'avais l'habitude de travailler dans une équipe en tant que responsable technique, et mon travail impliquait beaucoup de recrutement et d'interview. Mon erreur la plus spectaculaire a été d'embaucher un gars qui en savait plus sur la technologie que nous utilisions que tous les autres ensemble, y compris moi, et je me considérais comme un expert. Il savait tout ...

... sauf comment écrire du code qui soit répondait aux exigences, soit pouvait être compris par n'importe qui sauf lui-même. Quand j'ai finalement persuadé le PM de ne pas renouveler son contrat, tout ce qu'il a écrit a dû être réécrit.

Structurez judicieusement vos entretiens ...

ChrisA
la source
1
C'est une observation vraiment intéressante. Nous avons eu la situation inverse: une petite clique de développeurs qui en savaient moins que d'autres mais qui ont convaincu la direction qu'ils en savaient plus. Ils ont proposé une classe d'abstraction de données qui, selon moi, était impossible (on m'a reproché de ne pas être un "joueur d'équipe").
Mark Brittingham
-continué - après 4 mois d'efforts de "travaux de mouffette", ils ont présenté à l'équipe ... leurs papiers de transfert à un autre département - et AUCUN code. Le reste de l'équipe a dû ramasser les morceaux.
Mark Brittingham
1
En bout de ligne, cependant: j'aime vraiment votre observation selon laquelle une connaissance spécifique des constructions de codage n'est pas une garantie d'une capacité à créer des logiciels qui répondent aux besoins des clients.
Mark Brittingham
34

Qui est Jon Skeet?

Steven A. Lowe
la source
11
Ou mieux: êtes-vous Jon Skeet? ;-)
splattne
c'est en fait une bonne question pour les positions C #. Étant donné que Jon Skeet possède désormais des recherches stackoverflow / google pour les liens C #. Si vous ne savez pas qui il est maintenant, vous êtes soit Jon Skeet, soit vous ne programmez pas en C #.
lubos hasko
2
Aucune offense à Jon Skeet - mais je pense que Rick Strahl a tendance à apparaître avec les réponses plus fréquemment pour les types de problèmes que je rencontre ..
Andrew Theken
1
@ [Andrew Theken]: Je jouerai les pourcentages sur celui-là ;-) google pour "Rick Strahl" rapporte 38 500 hits, "jon skeet" rapporte 144 000. De plus, Rick Strahl ne publie pas sur SO AFAIK.
Steven A. Lowe
1
les deux gars sont excellents dans ce qu'ils font ... notre gain.
GR7
33

Les bonnes questions qui m'ont été posées sont

  • Selon vous, qu'est-ce qui est bon à propos de .NET?
  • Selon vous, qu'est-ce qui est mauvais à propos de .NET?

Il serait intéressant de voir ce qu'un candidat proposerait et vous en apprendrez certainement beaucoup sur la façon dont il utilise le cadre.

qui
la source
18

Je rechercherais toujours les compétences non techniques moi-même - sans jeu de mots. Donc, une bonne conception OO, un développement piloté par les tests, un bon arrière-plan multilingue (programmation) et une intelligence générale globale (et faire avancer les choses, je suppose!).

Un développeur intelligent ne devrait pas avoir de difficulté à apprendre les technologies individuelles que vous avez besoin de connaître, même s'il ne les a jamais examinées auparavant.Je ne m'inquiéterais donc pas trop de questions spécifiques concernant le cadre WCF / compact et autres.

Je leur demanderais d'écrire du code - la meilleure façon de savoir ce qu'ils savent et comment ils fonctionnent. N'importe qui peut mémoriser la réponse à "Quelle est la différence entre un type de référence et un type de valeur?"

Jennifer
la source
2
Repérez. Poser des questions par cœur demande des ennuis. L'entreprise pour laquelle je travaille pose la vieille question technique, mais la plupart du temps c'est: j'ai ces problèmes, voici un tableau blanc, montre-moi comment tu les résoudrais. Effrayant mais efficace.
Chris Brooks
4
... mais si vous ne les résolvez pas comme l'intervieweur s'y attend, vous échouez.
gbjbaanb
1
@gbjbaanb parfois. Mais si c'est le cas, vous ne voudrez peut-être pas y travailler de toute façon. N'oubliez pas que vous interviewez également l'entreprise. J'ai connu quelques entreprises qui ont échoué à l'entretien!
Tony Ennis
13

Honnêtement?

"Qu'est-ce que .NET?"

S'ils peuvent vous donner une réponse claire sur ce qu'est .NET et ce qu'il n'est pas, comment il est utilisé, de quels éléments il est composé, etc. S'ils peuvent vous convaincre qu'ils savent ce que c'est, alors il y a de fortes chances qu'ils le sais assez bien.

Le fait est que beaucoup de gens ne savent pas vraiment ce qu'est .NET. Même ceux qui écrivent des programmes pour cela.

Erik Funkenbusch
la source
11

Aucun, vraiment. Il y a probablement des questions très simples auxquelles les gens les plus intelligents du monde ne connaissent pas les réponses. Non pas parce qu'ils sont durs, mais simplement parce qu'ils ne les ont tout simplement pas rencontrés. Vous devriez regarder l'ensemble du package et les compétences du développeur, pas s'il peut répondre à une question arbitraire.

Si la question est assez facile à répondre en une courte phrase ou deux, il est assez facile de le dire à quelqu'un qui ne le sait pas. Vous devez rechercher leur compréhension des concepts et de la capacité de raisonnement, et non leur capacité à répondre aux questions "chaque développeur .NET devrait être en mesure de répondre."

Gene Roberts
la source
10

Connaître la différence entre les types de référence et de valeur.

Sachez que les événements sont stockés en tant que références matérielles (c.-à-d. N'oubliez pas de désenregistrer les événements ou l'application perdra de la mémoire).

Les cordes sont immuables.

Brian Rasmussen
la source
6

Martin Fowler préfère les compétences en conception à la connaissance des plateformes . D'un autre côté, vous pouvez poser une question qui montrera la connaissance des modèles de conception et de la plateforme .NET comme ceci:

  • Nommez les modèles et principes de conception que vous connaissez et comment ils sont utilisés dans .NET Framework?
Dzmitry Huba
la source
4

Je suggère de vous renseigner sur les blogs qu'ils lisent régulièrement et sur les projets de programmation personnelle sur lesquels ils ont travaillé, car cela montrera une volonté d'apprendre et une passion pour la programmation.

Nicolas
la source
3

Voici quelques-uns que j'ai utilisés pour filtrer les programmeurs qui postulent pour des emplois en tant que programmeurs C #:

Quelle est la différence entre un type de référence et un type de valeur?

Expliquez l'interface IDisposable, quelle construction de langage C # l'exige et comment vous l'implémenteriez.

Quelle exception lèveriez-vous si un null est passé en argument à une méthode qui a un contrat qui n'autorise pas les null pour ce paramètre?

Mike Scott
la source
Mon code lève généralement une exception NullReferenceException.
Joshua
5
@Joshua, ArgumentNullException vous avez échoué.
Nicolas Dorier
3

"Lequel des ASP: quels contrôles utiliseriez-vous dans la production et pourquoi?"

Cela vous indiquera rapidement si votre sujet a déjà construit et entretenu un projet de grande taille assez longtemps pour être brûlé par DataGrids et LinkButtons, ou s'il est toujours dans la phase glisser / déposer "apprenez-vous en 21 jours".

(la réponse est asp: Repeater, asp: PlaceHolder, asp: Literal et asp: Content)

Jason Kester
la source
2

Qu'est-ce qu'un fil?

Qu'est-ce que le GC?

StingyJack
la source
2

C'est un peu une question variable, et pas vraiment à laquelle vous devriez pouvoir répondre complètement maintenant, mais à laquelle vous devriez pouvoir répondre le cas échéant:

"Qu'est-ce que le framework .NET offre pour accomplir la tâche X?"

Ou plus précisément:

"Le framework .NET inclut-il un objet qui fait X?"

Par exemple, j'ai récemment passé quelques heures à développer un objet optimisé pour stocker un tableau de booléens et à opérer dessus, comme faire un NOT par collection, OR, XOR, AND, définir toutes les valeurs, etc. Jusqu'à ce que j'aie fini d'écrire tous mes tests unitaires et de les peaufiner pour obtenir les meilleures performances possibles, j'ai réalisé que mon objet "BoolArray" existait déjà dans le framework .NET sous le nom "BitArray".

Il peut être difficile de répondre à cette question, car la meilleure réponse à propos de quel objet / assistant utiliser est souvent celle que vous ne connaissez pas ou ne comprenez pas complètement. Que le monde .NET serait merveilleux si tout le monde connaissait même le simple StringBuilder, un outil de base qui peut augmenter considérablement les performances.

Spodi
la source
2

Je proposerai quelques questions axées sur la compréhension des concepts de programmation utilisant dotnet comme

Quelle est la différence entre un environnement géré et non géré? Avantages et inconvénients du GC Avantages et inconvénients du JIT Si nous devons développer l'application X, pouvons-nous utiliser dotnet? Pourquoi? (cela identifiera comment il voit le dotnet)

Je suggère également d'écrire de petites méthodes et de lui demander de les réécrire avec de meilleures performances en utilisant de meilleures classes dotnet ou des méthodes standard. Écrivez également des méthodes incorrectes (en termes de toute) logique ou autre et demandez-lui de les corriger.

Ahmed Said
la source
2

Je suis fan des éléments suivants en plus de certaines des questions déjà mentionnées:

  • Qu'est-ce qu'un délégué?
  • Quel est le domaine d'application?
  • Quand utiliseriez-vous le mot-clé de verrouillage?
  • Les threads des classes de collection génériques de bibliothèque standard sont-ils sûrs?
  • Qu'est-ce qu'une méthode d'extension?
  • Quelle est la différence entre XmlDocument et XmlReader?
  • Comment lisez-vous les paramètres de configuration à partir du fichier de configuration de l'application?
segy
la source
2

C'est intéressant et au risque de recevoir ce vote négatif pour avoir, à mon avis, comme je suis né sourd, se voir poser une question comme celle-ci nécessiterait plus d'efforts pour communiquer personnellement mes pensées.

Pour être franc, je ne lirais vraiment pas trop les questions typiques, car le paradigme sous-jacent est « Dans quelle mesure pouvez-vous bien exprimer vos pensées et votre compréhension? ', c'est vraiment ce que recherche l'intervieweur. La communication est toujours ma plus grande faiblesse en raison de ma façon de fonctionner et peut être frustrée assez facilement.

Ce serait idéal d'avoir les connaissances et d'être du type tout savoir, mais malheureusement, il y a certaines choses que je ne sais pas, mais ne pas avoir peur si vous ne connaissez pas la réponse et l'admettre plutôt que de bluffer à travers. Si un enquêteur me posait une question comme l'une des précédentes, dont je ne serais pas sûr ou mal compris / mal interprété, je le dirais d'emblée, ce qui peut personnellement être embarrassant, mais j'ai appris à gérer cela.

Vous seriez surpris de voir combien de personnes pourraient effectivement gaucher et bluffer à travers lequel, à la fin de la journée, se faire prendre avec leur `` pantalon baissé '' métaphoriquement parlant.

Mes 2 cents, Cordialement, Tom.

t0mm13b
la source
2

Un peu plus:

  1. Cours partiels. Et ses limites?
  2. Classes scellées
  3. Comment effectuer la localisation dans .NET?
  4. Connectivité à la base de données
  5. Divers fichiers de configuration
  6. Délégués vs événements
  7. Accès DLL non géré
  8. Réflexions
  9. Classes génériques
  10. Le plus chaud dans .NET 3.5
  11. Cadres de tests unitaires que vous avez utilisés.
RameshVel
la source
2

Je ne poserais pas ces questions "savoir quelque chose du manuel", mais plutôt poser quelques trucs comme:

  • Que fait la boucle foreach en C # simple? (Attendant qu'il écrive une boucle d'itérateur.)
  • Qu'est-ce qu'un singleton?
  • Laissez-le / elle analyser une chaîne à Datetime (en s'attendant à ce qu'il utilise TryParse au lieu de try / catch)
  • Mettre en œuvre les modèles de singleton, de stratégie et de commande
  • Laissez-lui / elle refactoriser un morceau de code pour les tests. S'attendre à ce qu'il / elle éloigne les services externes de l'unité sous test et implémente son propre test-double du service (ne fournissant aucun cadre de simulation)

Ce ne sont pas sûrs à 100%, selon la personne que je peux leur demander:

  • laissez-le garder une méthode à partir d'une entrée nulle (attendez-vous à ce qu'il utilise plusieurs retours pour réduire l'imbrication)
  • comment fonctionne un initialiseur d'objet (s'attendant à ce qu'il écrive l'affectation thread-safe)

Je lui demanderais également comment il / elle a appris ses trucs et ce qu'il / elle lit (quels blogs, livres).

Tigraine
la source
1

Un peu plus:

Quelles sont les limites de la récupération de place.

Connaître les finaliseurs et IDisposable.

Soyez conscient du pool de threads et quand l'utiliser.

Si vous utilisez des applications GUI, sachez que l'interface graphique de Windows est monothread.

Utilisez foreach (je vois beaucoup de gens faire MoveNext, etc.)

Brian Rasmussen
la source
1
Je ne savais pas, alors j'ai recherché les limites de la collecte des ordures .
MSpeed
1

Je pense que cela ne devrait pas être que des questions, je connais quelques gars qui sont brillants lorsque vous les interviewez, mais une fois qu'ils arrivent à la vraie chose, ils sont trop perfectionnistes, je dirais qu'ils ne parviennent pas à coder la tâche misérablement.

J'ai été interviewé une fois et j'ai un peu aimé l'approche où le premier employeur m'a donné un questionnaire technique à remplir en 30 minutes. Si l'un réussit, il sera appelé pour un entretien d'une heure couvrant les questions de jugement de personnalité et de recherche de personnage ainsi que les jargons techniques.

Ensuite, on m'a demandé de développer une application Web de trois pages en 6 heures. Les contraintes imposées dans l'application couvraient intelligemment les principaux aspects du développement d'applications comme une petite ERD, Layerd Design, la cohérence de l'interface utilisateur, contrôlent des problèmes spécifiques tels que l'utilisation des boutons radio dans GridView et la récupération et l'affichage des types d'images de la base de données sur une page Web, le développement d'un algorithme, sécurité, cryptage, hachage, représentation et manipulation des données.

Le lendemain, ils ont suivi une discussion de 30 minutes sur l'application développée couvrant les zones de goulot d'étranglement des performances et les améliorations de la conception et des algorithmes utilisés. Et test facultatif d'une heure pour améliorer votre algorithme développé à l'étape précédente avec une condition spécifique.

Cela a donc pris beaucoup de temps, mais de cette façon, vous pouvez vous assurer que la personne que vous embauchez connaît au moins les concepts qui sont essentiels pour être un bon développeur.

S M Kamran
la source
0

Je préférerais lui poser un problème et lui demander de le résoudre en utilisant les fonctionnalités de .net que vous connaissez et pourquoi pensez-vous que c'est la meilleure solution.

Cela va casser presque toutes les capacités d'un candidat en termes de compétences techniques, analytiques et de résolution de problèmes ainsi que son approche pour résoudre un problème.

JPReddy
la source