Le test d'interview de programmation C # redouté - un conseil? [fermé]

21

J'ai un éventuel emploi C # dev aligné mais avant de pouvoir interviewer, je dois passer un test avec l'agence pour l'emploi.

Maintenant, même si je suis un développeur senior avec plus de 10 ans d'expérience en programmation et plus de 3 de ces années avec c #, je n'attends vraiment pas ce test avec impatience et je pense qu'il y a de fortes chances que j'échoue.

D'après mon expérience, ces tests sont imprévisibles et vous demandent des choses que vous utilisez rarement dans des situations de travail quotidiennes.

J'ai besoin de vos meilleurs conseils sur ce que je devrais réviser - un bon livre ou un bon site Web par exemple. J'ai moins d'une semaine pour me préparer et il est essentiel que je passe ça.

Merci d'avance.

EDIT: Pour justifier davantage mes préoccupations concernant l'écriture de tels tests - Réfléchissez à la question suivante:

12) Un événement est:

   a) The result of a users action - correct answer
   b) The esult of a party
   c) code to force users action

La réponse correcte selon le test est A, mais depuis que je fais du développement SOA (souvent lorsque les événements peuvent être basés sur des événements système (pas sur les actions de l'utilisateur), je suis sûr à 100% qu'un événement ne doit pas être piloté par une action de l'utilisateur. C'était aussi une question C # (pas une question ASP.net). D'après ma compréhension, je n'ai pas vraiment trouvé de réponse correcte, mais B semble être le meilleur du lot (si la définition de partie est: toute entité qui peut déclencher un événement. Ce genre de questions me fait peur.

JL01
la source
4
Si vous êtes un «développeur senior» et que vous utilisez C # au jour le jour depuis trois ans, ça devrait aller. Ces tests sont normalement destinés à éliminer les personnes qui ne connaissent pas la langue ou ses usages. Si vous l'utilisez quotidiennement depuis 3 ans, vous devriez avoir rencontré presque tous les pièges d'un test donné.
George Stocker
11
@GeorgeStocker - en fait, j'ai dû passer certains de ces tests (visant davantage le framework .NET complet) et ils étaient très détaillés. Je les ai trouvés assez difficiles, car ils sont d'abord allés dans des domaines du cadre (comme WCF) où je n'avais tout simplement pas beaucoup d'expérience, et vous deviez savoir des choses comme l'option de configuration que vous utiliseriez dans un fichier .config pour activer une option obscure. C'était des trucs que vous vous donneriez rarement la peine de mémoriser, car vous ne les utiliseriez probablement qu'une seule fois et sur Google. J'ai trouvé l'expérience un peu frustrante.
Scott Whitlock
7
Oh, et une des questions que je me suis trompée était, "dans VB.NET, quel est le mot-clé utilisé pour déclarer une structure? A) struct b) Struct c) structure d) Structure". Je pensais "intellisense le sait donc je n'ai pas à le faire!" Maintenant, bien sûr, la réponse est gravée dans ma mémoire.
Scott Whitlock
17
@ScottWhitlock: Il n'y a aucun moyen de vous préparer adéquatement à une interview mal conçue. À un moment donné, vous devez avoir confiance qu'ils sont suffisamment compétents pour poser des questions et juger en fonction des domaines dans lesquels vous prétendez vous spécialiser, ainsi que de certaines capacités conceptuelles. Si ce n'est pas le cas, vous auriez probablement un temps misérable à travailler pour eux de toute façon.
Aaronaught
2
S'agit-il d'un test de langage C # ou d'un test .NET Framework?
Fourmis

Réponses:

24

Bien que quelque peu ancien, ce blog peut vous être utile: ce que les grands développeurs .NET devraient savoir (Plus de questions d'entrevue .NET)

Tous ceux qui écrivent du code

  • Décrivez la différence entre un thread et un processus?
  • Qu'est-ce qu'un service Windows et en quoi son cycle de vie diffère-t-il d'un EXE "standard"?
  • Quelle est la quantité maximale de mémoire qu'un processus unique sur Windows peut traiter? Est-ce différent de la mémoire virtuelle maximale du système? Comment cela affecterait-il la conception d'un système?
  • Quelle est la différence entre un EXE et une DLL?
  • Qu'est-ce que le typage fort par rapport au typage faible? Quel est préféré? Pourquoi?
  • Le produit de Corillian est un «conteneur de composants». Nommez au moins 3 conteneurs de composants livrés avec la famille Windows Server.
  • Qu'est-ce qu'un PID? En quoi est-il utile lors du dépannage d'un système?
  • Combien de processus peuvent écouter sur un seul port TCP / IP?
  • Qu'est-ce que le GAC? Quel problème résout-il?

Développeur .NET de niveau intermédiaire

  • Décrivez la différence entre la programmation orientée interface, orientée objet et orientée aspect.
  • Décrivez ce qu'est une interface et en quoi elle diffère d'une classe.
  • Qu'est-ce que la réflexion?
  • Quelle est la différence entre XML Web Services utilisant ASMX et .NET Remoting utilisant SOAP?
  • Le système de types est-il représenté par XmlSchema et le CLS est-il isomorphe?
  • Conceptuellement, quelle est la différence entre une liaison anticipée et une liaison tardive?
  • Est-ce que Assembly.Load est une référence statique ou dynamique?
  • Quand l'utilisation de Assembly.LoadFrom ou Assembly.LoadFile serait-elle appropriée?
  • Qu'est-ce qu'un nom qualifié d'assemblage? Est-ce un nom de fichier? En quoi est-ce différent?
  • Est-ce valable? Assembly.Load ("foo.dll");
  • En quoi un assemblage fortement nommé est-il différent d'un assemblage qui n'est pas fortement nommé?
  • DateTimes peut-il être nul?
  • Qu'est-ce que le JIT? Qu'est-ce que NGEN? Quels sont les limites et les avantages de chacun?
  • Comment le garbage collector générationnel dans le .NET CLR gère-t-il la durée de vie des objets? Qu'est-ce que la finalisation non déterministe?
  • Quelle est la différence entre Finalize () et Dispose ()?
  • En quoi le modèle using () est-il utile? Qu'est-ce que IDisposable? Comment prend-il en charge la finalisation déterministe?
  • Que fait cette ligne de commande utile? liste des tâches / m "mscor *"
  • Quelle est la différence entre in-proc et out-of-proc?
  • Quelle technologie permet une communication hors processus dans .NET?
  • Lorsque vous exécutez un composant dans ASP.NET, dans quel processus s'exécute-t-il sous Windows XP? Windows 2000? Windows 2003?

Développeurs / architectes seniors

  • Quel est le problème avec une ligne comme celle-ci? DateTime.Parse (myString);
  • Que sont les PDB? Où doivent-ils être situés pour que le débogage fonctionne?
  • Qu'est-ce que la complexité cyclomatique et pourquoi est-elle importante?
  • Écrivez un verrou standard () plus une «double vérification» pour créer une section critique autour d'un accès variable.
  • Qu'est-ce que FullTrust? Les assemblages GAC ont-ils FullTrust?
  • Quel avantage votre code reçoit-il si vous le décorez d'attributs nécessitant des autorisations de sécurité spécifiques?
  • Qu'est-ce que cela fait? gacutil / l | trouver / i "Corillian"
  • Qu'est-ce que cela fait? sn -t foo.dll
  • Quels ports doivent être ouverts pour DCOM sur un pare-feu? À quoi sert le port 135?
  • Contraste OOP et SOA. Quels sont les principes de chacun?
  • Comment fonctionne le XmlSerializer? De quelles autorisations ACL un processus l'utilisant a-t-il besoin?
  • Pourquoi catch (Exception) est-il presque toujours une mauvaise idée?
  • Quelle est la différence entre Debug.Write et Trace.Write? Quand faut-il utiliser chacun?
  • Quelle est la différence entre une version Debug et Release? Y a-t-il une différence de vitesse importante? Pourquoi ou pourquoi pas?
  • Le JIT se produit-il par assemblage ou par méthode? Comment cela affecte-t-il l'ensemble de travail?
  • Comparez-vous l'utilisation d'une classe de base abstraite avec une interface?
  • Quelle est la différence entre a.Equals (b) et a == b?
  • Dans le contexte d'une comparaison, qu'est-ce que l'identité d'objet contre l'équivalence d'objet?
  • Comment effectuer une copie complète dans .NET?
  • Expliquez la réflexion actuelle sur IClonable.
  • Qu'est-ce que la boxe?
  • La chaîne est-elle un type de valeur ou un type de référence?
  • Quelle est la signification du modèle "PropertySpecified" utilisé par XmlSerializer? Quel problème tente-t-il de résoudre?
  • Pourquoi les paramètres sont-ils une mauvaise idée dans .NET? Sont-ils?
  • Les attributs peuvent-ils être placés sur des paramètres spécifiques d'une méthode? Pourquoi est-ce utile?

Développeurs de composants C #

  • Juxtaposez l'utilisation du remplacement avec new. Qu'est-ce que l'observation?
  • Expliquez l'utilisation de virtuel, scellé, prioritaire et abstrait.
  • Expliquez l'importance et l'utilisation de chaque composant de cette chaîne: Foo.Bar, Version = 2.0.205.0, Culture = neutral, PublicKeyToken = 593777ae2d274679d
  • Expliquez les différences entre public, protégé, privé et interne.
  • Quels avantages tirez-vous de l'utilisation d'un assemblage d'interopérabilité primaire (PIA)?
  • Par quel mécanisme NUnit sait-il quelles méthodes tester?
  • Quelle est la différence entre: catch (Exception e) {throw e;} et catch (Exception e) {throw;}
  • Quelle est la différence entre typeof (foo) et myFoo.GetType ()?
  • Expliquez ce qui se passe dans le premier constructeur: public class c {public c (string a): this () {;}; public c () {;}} Comment cette construction est-elle utile?
  • Qu'est- ce que c'est ? Peut-il être utilisé dans une méthode statique?

Développeurs ASP.NET (UI)

  • Décrivez comment un formulaire POST basé sur un navigateur devient un événement côté serveur comme Button1_OnClick ...
Konamiman
la source
1
Toutes les réponses énumérées ici étaient utiles et bonnes, mais j'ai parcouru toutes les questions de votre liste (cela m'a pris 4 heures) et j'ai écrit un échantillon de test en ligne et réussi. J'encourage tout développeur .net à répondre à ces questions au moins une fois et à vous assurer que vous comprenez les réponses et à obtenir les 2e et 3e opinions. Beaucoup de gens répondent aux questions (trouvées sur Google), mais beaucoup de réponses ne sont parfois pas concises, voire fausses. Donc sois prudent. Vérifiez les réponses que vous trouvez.
JL01
2
Bon lien! Je suis surpris du nombre de ceux que je connaissais. this.Ego ++;
Justin Self
@justnS: La même chose m'est arrivée quand j'ai découvert le post. :-)
Konamiman
Je suis allé pour une interview il y a quelques semaines, et ils m'ont fait imprimer ceci pour que je puisse répondre. qui pour moi, a réfléchi sur l'intervieweur.
dbones
1
Quand ajouterez-vous les réponses? ;)
Thijs van Dien
10

Va t'en, Renée

J'ai passé des tests comme celui-ci plusieurs fois. Maintenant je m'éloigne. Les tests mesurent les bits les plus triviaux de connaissances en programmation. Voulez-vous travailler pour quelqu'un qui pense que ces tests sont un bon moyen d'évaluer les programmeurs? Je ne.

Kevin Cline
la source
1
Ils constituent un bon moyen en tant que norme minimale , c'est-à-dire une condition nécessaire , mais pas suffisante .
Sklivvz
4
@Sklivvz: peut-être, si c'étaient de bons tests. La plupart des tests commerciaux sont des exercices stupides dans des anecdotes: "Quelle classe utiliseriez-vous pour lire un fichier texte?" Un bon développeur peut être en mesure de parler pendant dix minutes sur les différences entre les flux d'octets et les flux de caractères, et les détails des encodages UTF, et il manque toujours cette question. Lorsque l'information est facilement accessible, il est inutile de la mémoriser.
Kevin Cline
2
Je suis d'accord avec Kevin. Il y a trop d'informations non pertinentes pour votre travail qui peuvent être dans les tests. C'est pourquoi ils ont inventé Google et IntelliSense - lorsque nous avons besoin de réponses, nous les trouvons, selon la nécessité de l'utiliser
ADNow
2
Cela dépend du test. Il y a des tests dont je m'éloignerais, mais il y a aussi des tests qui sont bons. Nous avons un simple test de 3 questions de programmation. La première question est d'écrire une simple application C #. Le second demande d'écrire 5 requêtes SQL simples. La troisième est une question à laquelle il est impossible de répondre sans que le candidat ne demande plus d'informations. Les première et deuxième questions excluent les programmeurs complètement incompétents. Cela nous fait gagner du temps d'interviewer des gens qui ne valent pas notre temps. La troisième question nous donne un aperçu de la façon dont un programmeur aborde la résolution de problèmes. Trucs très précieux.
Pete
8

J'étais dans une situation comme la vôtre l'année dernière. Cela faisait si longtemps que je participais à une interview que je redoutais. J'ai fait une recherche de questions d'entrevue C # et trouvé plusieurs sites (beaucoup d'entre eux répertoriés par les autres affiches) et je les ai étudiés. À ma grande surprise, 90% des interviews provenaient de ces mêmes sites, mot pour mot . Je suppose que les intervieweurs utilisent également Google pour trouver des questions :)

Système hors service
la source
6

Je suis totalement d'accord avec vous sur:

les tests sont imprévisibles et vous demandent des choses que vous utilisez rarement dans des situations de travail quotidiennes.

..mais ils font partie du processus, donc nous ne pouvons rien y faire. Je suis quelque chose comme vous avec environ 10 ans d'expérience dont environ 5 en .NET C #. J'ai trouvé ceux-ci que ces deux très bons livres:

C # en profondeur

C # en bref

devrait couvrir tout ce que vous devez savoir sur C #. Le reste est vos propres compétences et compétences que vous acquérez sur des technologies spécifiques basées sur C # comme ASP.NET, etc.

TheBoyan
la source
3
mais ils font partie du processus, donc nous ne pouvons vraiment rien y faire. Que diriez-vous de préconiser de ne pas avoir de tests de programmation stupides sur votre lieu de travail dans le cadre du processus d'embauche? Les processus d'embauche doivent montrer votre compétence, pas que vous puissiez mémoriser des anecdotes obscures.
joshin4colours
@ joshin4colours - c'est pourquoi je crois en la bonne vieille conversation sur l'interview ... ils sont cependant bons pour l'élimination
TheBoyan
2
En fait, j'ai interviewé l' auteur d'un des livres et je l'ai rejeté ...
Sklivvz
3

Ces tests font de plus en plus partie de la présélection des candidats par les cabinets de recrutement professionnels et certaines entreprises. Ils sont conçus pour donner aux intervieweurs non techniques un moyen d'évaluer les capacités techniques d'une personne. Cependant, ce ne sont essentiellement que des tests triviaux qui ne diront rien de significatif sur les capacités d'un programmeur autre que d'éliminer ceux qui ne savent vraiment rien. Malheureusement, certaines entreprises / recruteurs accordent beaucoup trop d'importance à ces résultats.

La façon d'étudier pour eux est de trouver des sites de questions d'entrevue, des sites légitimes et non ceux qui essaient de vous vendre les réponses, plâtrés avec des publicités contextuelles ou d'autres bêtises, et fourrez les réponses. De cette façon, vous obtiendrez un score décent et franchirez l'obstacle. Si l'entreprise accorde trop d'importance à ces résultats, elle n'est probablement pas la meilleure entreprise pour laquelle travailler.

jfrankcarr
la source
2

Si c'est un test de l'agence pour l'emploi, ça ne devrait pas être si difficile. Ce n'est pas comme s'ils avaient des spécialistes linguistiques pour développer le test. Très probablement, ils ne feront que copier / coller des questions à partir d'un site Web.

Tant que vous savez comment fonctionne le framework en général, et les espaces de noms / bibliothèques les plus courants pour les tâches, les éléments que vous devez utiliser pour certaines tâches, vous devriez être bon.

silverCORE
la source
2

Avec les tests d'entretien, beaucoup dépend de la culture d'entreprise et du créateur du test. S'ils ont l'intention de poser des questions obscures et d'essayer de vous faire trébucher, je passerais à une autre entreprise ou agence qui est plus intéressée par des personnes de haute qualité qui sont intelligentes et peuvent faire le travail.

Cela dit, comme vous utilisez c # dans votre travail de jour, je concentrerais vos efforts de résolution de problèmes et de logique et moins sur le côté apprentissage des livres.

Le projet Euler est un excellent endroit pour pratiquer et perfectionner des compétences qui sont probablement devenues un peu rouillées.

SetiSeeker
la source