Questions good.NET développeur devrait être en mesure de répondre? [fermé]

mon entreprise est sur le point d'embaucher 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 norme minimale pour voir si les candidats sont expérimentés. Donc, ma question Est:

Quelles sont les questions pensez-vous d'un bon .NET programmeur être en mesure de répondre ?

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

alt text

*mise à jour: nous voulons préciser que nous ne testons pas seulement 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.

246
demandé sur splattne 2008-12-13 20:47:33
la source

25 ответов

questions de base comprennent:

je pense qu'il est généralement utile de demander à vos candidats de remplir un exercice de codage simple tels que:

  • écrivez votre propre classe de liste liée sans utiliser les classes intégrées.
  • écrivez votre propre classe hashtable sans utiliser les classes intégrées.
  • Écrire une classe qui représente un arbre binaire. Écrivez une méthode qui traverse tous les noeuds de l'arbre.
  • Écrire une méthode pour effectuer une recherche binaire sur un tableau sans l'aide de méthodes intégrées.
  • dessinez un schéma de base de données pour un blog. Chaque utilisateur a seulement un blog, chaque blog a de nombreuses catégories, chaque catégorie A de nombreux postes, et chaque poste peut appartenir à plus d'une catégorie. Demandez à votre candidat d'écrire des questions pour extraire des informations spécifiques.

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

  • (événement les gestionnaires) Créer une classe avec un gestionnaire d'événements personnalisés, créer une autre classe qui se raccorde sur le gestionnaire d'événements personnalisés.
  • (XML) chargez un document XML et sélectionnez tous les noeuds avec les propriétés x, y et Z.
  • (programmation fonctionnelle) crée une fonction qui accepte une autre fonction comme paramètre. Une fonction Map ou Fold fonctionne très bien pour cela.
  • (Réflexion) Écrire une fonction qui détermine si une classe a un particulier attribut.
  • (Regex) écrire une expression régulière qui supprime toutes les balises d'un bloc de HTML.

aucune de ces questions ne sont particulièrement difficiles pour un programmeur Compétent C# à répondre, et ils devraient vous donner une bonne idée de vos candidats forces particulières. Vous pouvez également vouloir travailler dans quelques questions / échantillon de code qui font usage de modèles de conception spécifiques.

[Modifier pour la clarification] :

semble que beaucoup de gens ne comprennent pas pourquoi je pose ce genre de questions. Permettez-moi d'aborder quelques commentaires des gens (Je ne cite pas directement, mais en paraphrasant plutôt):


Q: quand a-t-on utilisé pour la dernière fois des substances volatiles ou des références faibles?

A: quand je donne des interviews techniques, je regarde pour voir si une personne comprend les caractéristiques de haut niveau et de bas niveau .NET. Les substances Volatiles et les références faibles sont deux caractéristiques de bas niveau fournies par .NET -- même si ces caractéristiques ne sont pas utilisées souvent 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 des compilateurs changent l'exactitude du code, comment les threads gardent des copies locales des état qui peut être hors de synchronisation à tout moment, et est minimalement conscient de 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 collecteur d'ordures et comment il décide quand libérer la mémoire. Bien sûr, vous pouvez demander aux candidats "comment fonctionne un ramasseur d'ordures", mais demander des références faibles obtient une réponse beaucoup mieux, plus réfléchie.

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


Q: pourquoi quelqu'un devrait-il mettre en œuvre sa propre liste de mots-clés ou de liens?

A: Je n'insinue pas que la classe du dictionnaire est inférieure ou que les gens devraient rouler leurs propres table de hachage. C'est une question de base qui teste si une personne a une minimum compréhension des infrastructures de données. C'est ce que testent ces questions: Un minimum de compréhension.

vous en apprendrez plus sur ces hashtables et listes de liens le premier jour des Structures de données 101. Si quelqu'un ne peut pas écrire un hashtable ou une liste liée à partir de zéro, alors ils ont un énorme lacune dans leurs connaissances techniques.


Q: pourquoi ces questions sont-elles si crues?

A: parce que le titre de ce thread est " questions every good.net developer should know". Chaque développeur. net commence sa carrière en écrivant des applications crud, et 90% de toutes les personnes de développement d'applications font pour vivre est concerné par les applications de ligne-of-business.

je pense que les questions de test de l'une des personnes la connaissance des applications de ligne-of-business est appropriée dans la plupart des cas, sauf si vous êtes à la recherche de développeurs dans des créneaux très spécifiques, tels que le développement de compilateur, le développement de jeu-moteur, théorème-proving, traitement d'image, etc.

171
répondu Juliet 2017-05-23 15:18:14
la source

j'ai trouvé ces listes sur Scott Hanselman 's blog :

voici ce que je pense sont les questions les plus importantes de ces postes divisés en catégories. J'ai édité et ré-arrangé. Heureusement pour la plupart de ces questions il y a déjà une bonne réponse sur le débordement de la pile. Il suffit de suivre les liens (je vais les mettre à jour tous les ASAP) .

indépendant de la Plateforme .NET des questions

ASP.NET

135
répondu splattne 2017-05-23 15:03:07
la source

ce n'est peut-être pas ce que vous voulez entendre, mais je recommande 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 ce que vous voulez qu'ils fassent rapidement.

Je, par exemple, ne suis pas un gars de cadre Compact, donc je pourrais échouer votre interview si vous êtes allé dans cette direction. Mais si j'avais besoin de l'utiliser, je pourrais faire des recherches et me lancer.

de Joel livre, Smart et obtient des choses faites , a de grands conseils pour l'embauche de devs et il ya de grandes sections juteuses sur le genre de questions à poser. Je le recommande fortement.

94
répondu Brian MacKay 2008-12-13 21:04:20
la source

je pense que si j'interviewais quelqu'un qui a de l'expérience avec LINQ, je pourrais peut-être juste leur demander d'expliquer LINQ. S'ils peuvent expliquer l'exécution différée, le streaming, les interfaces IEnumerable/IEnumerator, foreach, les blocs itérateurs, les arbres d'expression (pour les points bonus, de toute façon) alors ils peuvent probablement faire face au reste. (Certes, ils pourraient être des développeurs "ok" et pas" get " LINQ encore - je pense vraiment au cas où ils ont déclaré savoir assez 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
  • Passage par référence vs passage par valeur
  • IDisposable et les finaliseurs
  • cordes, immutabilité, codages de caractères
  • à virgule Flottante
  • délégués
  • génériques
  • types Nullables
66
répondu Jon Skeet 2008-12-13 21:25:23
la source

je suis avec les gars qui sont à la recherche pour les capacités de résolution de problèmes plutôt que le genre de chose que vous pouvez regarder et mémoriser à partir de '101 top.net QS d'entrevue et As".

juste pour me citer en exemple, j'ai tendance à "savoir" les choses que je dois utiliser de jour en jour. J'ai tendance à oublier (et plus tard je dois revoir) des choses que j'utilise rarement.

Si vous vouliez voyage m'dans une interview, il serait très facile.

Néanmoins, j'ai construit et codé une grande partie de l'infrastructure d'un système qui utilise des objets commerciaux et des couches de données identiques pour ses WinForms et ASP.NET incarnations, et notre base de codes est assez robuste et réutilisable pour nous permettre de supporter et de développer plus de 20 versions configurées différemment du site web, ainsi qu'un nombre croissant (actuellement 5) de L'application WinForms...

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

j'avais l'habitude de travailler dans une équipe en tant que responsable technique, et mon travail a nécessité pas mal de recrutement et d'entrevues. Mon erreur la plus spectaculaire a été d'engager un gars qui en savait plus sur la technologie que nous utilisions que tous les autres ensemble, y compris moi, et je me suis compté comme un expert. Il savait tout...

... sauf comment écrire un code qui soit répondait aux exigences, ou pourrait être compris par n'importe qui sauf lui-même. Quand j'ai fini par convaincre le premier ministre de ne pas renouveler son mandat, contrat, tout ce qu'il a écrit a dû être réécrit.

structurez vos interviews avec sagesse...

42
répondu ChrisA 2008-12-13 21:14:36
la source

qui est Jon Skeet?

34
répondu Steven A. Lowe 2008-12-13 23:08:01
la source

les bonnes questions qu'on m'a posées sont

  • Que pensez-vous est bon a propos de .NET?
  • Que pensez-vous est mauvais a propos de .NET?

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

33
répondu qui 2009-03-16 20:11:16
la source

je cherchais toujours les compétences douces moi - même-pas de jeu de mots prévu. Donc bon design OO, développement piloté par test, un bon fond multilingue (programmation) lingual et tout autour de l'intelligence générale (et faire-choses faites-ness 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'ils ne les ont jamais regardées avant - donc je ne m'inquiéterais pas trop de questions spécifiques autour WCF / compact framework et similaires.

je leur dirais d'écrire un code - meilleure façon de découvrir 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?

18
répondu Jennifer 2008-12-13 20:59:34
la source

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... Si ils peuvent vous convaincre qu'ils savent ce que c'est, alors les chances sont qu'ils connaissent assez bien.

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

13
répondu Erik Funkenbusch 2009-02-26 09:12:13
la source

aucun, vraiment. Il y a probablement des questions très simples auxquelles les personnes les plus intelligentes dans le monde ne connaissent pas les réponses. Pas parce qu'ils sont durs, mais simplement parce qu'ils ne l'ont pas rencontré. Vous devriez regarder l'ensemble du paquet et la compétence du développeur, pas s'ils peuvent répondre à une question arbitraire.

si la question est assez facile à répondre dans une courte phrase ou deux, il est assez facile de dire à quelqu'un qui ne savoir. Vous devriez être à la recherche de leur compréhension des concepts et de la capacité de raisonnement, pas leur capacité à répondre aux questions "chaque développeur.net devrait être en mesure de répondre."

11
répondu Gene Roberts 2008-12-30 02:31:12
la source

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

savoir que les événements sont stockés comme des références dures (i.e. se rappeler aux événements unregister ou l'application fuira la mémoire).

Les cordes

sont immuables.

10
répondu Brian Rasmussen 2009-09-01 13:54:17
la source

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

  • Nom de modèles de conception et des principes que vous savez et comment ils sont utilisés .NET Framework?
6
répondu Dzmitry Huba 2008-12-14 00:10:16
la source

je suggère de s'enquérir des blogs qu'ils lisent régulièrement et des projets de programmation personnelle sur lesquels ils ont travaillé car cela témoignera d'une volonté d'apprendre et d'une passion pour la programmation.

4
répondu Nicholas 2008-12-15 15:43:16
la source

En voici quelques-uns que j'ai utilisés pour filtrer les programmeurs postulant pour des emplois de 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 lanceriez-vous si un null est passé comme argument à une méthode qui a un contrat qui ne permet pas nulls pour ce paramètre?

3
répondu Mike Scott 2008-12-13 20:54:36
la source

"ce Qui de l'ASP:quel contrôle avez-vous songé à utiliser dans la production, et pourquoi?"

qui vous dira rapidement si votre sujet a déjà construit et maintenu un grand projet assez longtemps pour être brûlé par des datagrids et des LinkButtons, ou s'il est toujours dans la phase Drag/Drop" teach yourself in 21 days".

(la réponse est asp:Repeater, asp:espace Réservé, asp:Littéral, et asp:Content)

3
répondu Jason Kester 2009-04-11 15:33:51
la source

Qu'est-ce qu'un fil?

Qu'est-ce que le GC?

2
répondu StingyJack 2008-12-13 20:57:19
la source

C'est un peu d'une variable en question, et pas vraiment que vous devriez être en mesure de répondre complètement maintenant, mais vous devriez être en mesure de répondre, le cas échéant:

"Que la .NET framework offre pour obtenir tâche X fait?"

ou plus précisément:

"le .NET framework inclure un objet qui n'est X?"

par exemple, j'ai récemment passé quelques heures à développer un objet qui est optimisé pour stocker un tableau de booléens et de fonctionner sur elle, comme faire une collection-Sage pas, ou, XOR, et, définir toutes les valeurs, etc. Ce n'est qu'après avoir terminé d'écrire tous les tests de mon unité et de les peaufiner pour la meilleure performance possible que j'ai réalisé que mon objet "BoolArray" existait déjà dans le framework .NET sous le nom de "BitArray".

cela peut être un difficile à répondre car la meilleure réponse sur ce que l'objet / helpers à utiliser est celui que vous ne savez pas ou entièrement comprendre. Comme le monde. net serait merveilleux si tout le monde connaissait même le StringBuilder simple, un outil de base qui peut augmenter la performance des quantités significatives.

2
répondu Spodi 2008-12-13 23:59:18
la source

je proposerai quelques questions portent sur la compréhension des concepts de la programmation à l'aide de dotnet comme

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

je suggère aussi d'écrire de petites méthodes et de lui demander de les réécrire avec une meilleure performance en utilisant de meilleures classes dotnet ou de façon standard. Ecrivez aussi les méthodes d'inccorrect (en termes de n'importe quel) logique ou quoi que ce soit et demandez-lui de les corriger.

2
répondu Ahmed Said 2009-01-14 16:39:19
la source

je suis fan de ce qui suit en plus de certaines des questions déjà mentionnées:

  • Qu'est-ce qu'un délégué?
  • Quel est le domaine app?
  • quand utiliseriez-vous le mot clé lock?
  • Sont de la bibliothèque standard générique classes de collection "thread-safe"?
  • Qu'est-ce qu'une méthode d'extension?
  • Quelle est la différence entre XmlDocument et XmlReader ?
  • Comment lire dans les paramètres de configuration du fichier de configuration de l'application?
2
répondu segy 2009-05-16 13:01:25
la source

c'est intéressant, et au risque d'obtenir cette baisse-voté pour mettre à mon avis, Comme je suis né sourd, être posé une question comme cela exigerait plus d'effort dans la communication de mes pensées de ma part personnellement.

pour être Franc, Je ne voudrais vraiment pas lire trop de questions typiques, car le paradigme sous-jacent est à quel point pouvez-vous exprimer vos pensées et votre compréhension? ", c'est vraiment ce que l'interviewer à la recherche pour. Communiquer est toujours ma plus grande faiblesse en raison de la façon dont je suis et peut être frustré assez facilement.

il serait idéal d'avoir le savoir et d'être du type savoir-tout, mais malheureusement, il y a certaines choses que je ne sais pas, mais ne pas avoir peur si vous ne savez pas la réponse et l'admettre plutôt que de bluffer à travers elle. Si un intervieweur me posait une question comme celle ci-dessus, je ne serais pas sûr de ou mal-comprendre/mal-interpréter la question, je le dirais à l'avance, ce qui peut être personnellement embarrassant, mais ont appris à gérer cela.

vous seriez surpris de voir combien d'entre eux s'agiteraient et blufferaient à travers et finiraient par se faire attraper avec leur "pantalon baissé" métaphoriquement parlant.

mes 2cents, Meilleures salutations, Tom.

2
répondu t0mm13b 2010-01-23 19:43:03
la source

un peu plus:

  1. classes partielles. Et de ses limites?
  2. classes scellées
  3. comment la localisation peut-elle être faite dans .NET?
  4. connectivité des bases 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. "151930920 le plus chaud".NET 3.5
  11. les cadres de test D'Unité que vous avez utilisés.
2
répondu RameshVel 2010-06-19 00:33:54
la source

Je ne pose pas ces questions" savoir quelque chose du manuel", mais plutôt des bricolages comme:

  • Ce qui fait la boucle foreach ne dans la plaine du C#? (S'attendant à ce qu'il écrive une boucle itératrice.)
  • qu'est-ce qu'un singleton?
  • lui permettre d'analyser une Chaîne de type Datetime (s'attendant à lui/elle de l'utilisation TryParse au lieu de try/catch)
  • mettre en œuvre les modèles singleton, stratégie et de commande
  • laissez-le / sa refaire un morceau de code pour l'essai. S'attendre à ce qu'il/elle soustraie les services externes de L'unité à L'essai et mette en œuvre son propre Test-double du service (ne fournissant pas de cadre de moquerie)

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

  • qu'il / elle protège une méthode de null input (en s'attendant à ce qu'il/elle utilise des retours multiples pour réduire la nidification)
  • comment un initialiseur d'objet de travail (s'Attendant à lui pour écrire le thread-safe, la cession)

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

2
répondu Tigraine 2010-06-19 01:09:49
la source

un peu plus:

Quelles sont les limites de la collecte des ordures.

connaît les finaliseurs et IDisposable.

être conscient de la piscine de fil et quand l'utiliser.

si vous faites des applications GUI - soyez conscient que L'interface GUI de Windows est filetée simple.

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

1
répondu Brian Rasmussen 2008-12-13 20:59:48
la source

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

j'ai déjà été interviewé et j'ai aimé l'approche où le premier employeur m'a donné un questionnaire technique à remplir en 30 minutes. Si l'un d'eux réussit, il sera convoqué pour un entretien d'une heure portant sur le jugement de la personnalité. et des questions de recherche de caractère plus des jargons techniques.

alors on m'a demandé de développer une application web de trois pages en 6 heures. Les contraintes imposées dans l'application couvrait intelligemment l'aspect majeur du développement d'application comme une petite ERD, Layerd conception, la cohérence de L'interface utilisateur, contrôle des problèmes spécifiques comme l'utilisation de boutons Radio dans GridView et la récupération et l'affichage des types d'image de DB sur une page web, un développement d'algorithme, la sécurité, le cryptage, le hachage, les données représentation et manipulation.

puis, le lendemain, ils ont suivi une discussion de 30 minutes sur l'application développée couvrant les domaines de performance goulot d'étranglement et les améliorations sur la conception et les algorithmes utilisés. Et 1 heure de test optionnel pour améliorer votre algorithme développé dans l'étape précédente avec une condition spécifique.

donc cela a pris beaucoup de temps mais de cette façon vous pouvez vous assurer que la personne que vous embauchez connaît au moins ces concepts qui sont essentiel pour un bon développeur.

1
répondu S M Kamran 2010-01-23 11:18:43
la source

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

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

0
répondu JPReddy 2010-08-13 16:49:47
la source

Autres questions sur .net