29 votes

Quelles connaissances en C# dois-je avoir ?

Une question très ouverte. Je programme en C# depuis 5 mois. 5 derniers mois en réalisant de petits projets que j'ai avec succès.

Aujourd'hui, j'ai passé un entretien pour un poste en C#. La 1ère question était "Parlez-moi de la boxe". Compte tenu de mon expérience, je n'avais aucune idée de ce que ce type voulait dire. Inutile de dire que l'entretien l'entretien ne s'est pas très bien passé. Les autres questions étaient : "Pourquoi n'est-il pas recommandé d'utiliser une liste de tableaux d'int. ce que vous savez sur le threading", etc.

Je ne veux pas que cela se reproduise, alors j'ai l'intention de passer du temps à lire (et à m'exercer) sur C#. de passer du temps à lire (et à m'exercer) davantage sur C#. I Je comprends que la meilleure façon d'apprendre est de coder mais mais coder ne m'aurait pas vraiment aidé à répondre à la question sur le sur la "boxe", par exemple.

Je ne vous demande pas de répondre aux questions techniques ci-dessus. En fait, je connais maintenant leur réponse car je suis allé directement sur Google après l'entretien et c'est ainsi que j'ai réalisé que mes connaissances en connaissances en C# sont quelque peu limitées.

Ma question est la suivante : à votre avis, quelles sont les connaissances que devrait avoir tout développeur C# devrait avoir ? Idéalement, il serait préférable que vous puissiez catégoriser (connaissances de base que tout le monde devrait avoir sans exception exception, connaissances avancées, connaissances expertes, etc.) Il n'est pas nécessaire d'entrer dans les détails. Faire des recherches sur ce que vous énumérez sera sera un bon exercice pour moi.

Gracias.

14voto

Joel Coehoorn Points 190579

Je m'attendrais à ce que quelqu'un qui cherche un emploi professionnel en C# soit au courant :

  • Génériques et collections génériques
  • Interfaces (généralités)
  • Interfaces (spécifiques), à savoir -
    • IDisposable : comment il est intégré dans le langage et pourquoi
    • IEnumerable : y compris les méthodes d'extension courantes, les blocs d'itérateurs et l'exécution différée.
  • Vue d'ensemble de la sérialisation dans .Net (vous ne l'avez peut-être pas fait, mais vous comprenez ce que c'est et vous savez où chercher dans l'hiérarchie des espaces de noms et dans la documentation).
  • Aperçu de Xml dans .Net (comme la sérialisation)
  • Aperçu des concepts de threading (comme xml/sérialisation). Points bonus pour avoir compris pourquoi la plupart des collections ne sont pas thread-safe.
  • Avoir utilisé des délégués anonymes / lambdas dans au moins un projet, et donc avoir une idée de base des fermetures.
  • Vous êtes à l'aise pour expliquer les concepts de base d'au moins un des logiciels winforms, wpf, webforms ou MVC.
  • Être capable de répondre à certaines facile des questions sur des classes communes spécifiques de la BCL .Net : notamment de System.Data (pensez aux requêtes paramétrées !) et de System.IO (filestreams, path).
  • Collecte des déchets : quand faut-il appeler GC.Collect (indice : pratiquement jamais) et pourquoi ?

10voto

Andrew Hare Points 159332

8voto

schar Points 854

Mon expérience personnelle d'il y a longtemps, lorsque j'étais à l'école.

Je suis allé voir mon père au travail dans une banque. À l'époque, la majeure partie de sa journée consistait à s'occuper des comptes et à s'assurer que tout fonctionnait. Ce que j'ai vu, c'est qu'il essayait de compter/calculer de grands nombres et de calculer (additions/multiplications de base...).

Après l'avoir remarqué, je lui ai demandé : Papa, si tout ce que tu dois faire, ce sont des additions et des multiplications de base, pourquoi te donner la peine d'étudier jusqu'au diplôme ?

Sa réponse a été la suivante : Même si vous n'êtes pas obligé d'utiliser toutes les connaissances que vous avez acquises, ces connaissances vous aideraient à prendre des décisions éclairées.

Pour en venir à votre question : Bien que vous ne soyez pas obligé d'utiliser l'ensemble des concepts, le fait de savoir qu'ils existent vous aiderait à prendre de bonnes décisions lorsque vous codez.

Ma suggestion, comme les autres, est d'essayer de passer un peu de temps sur stackoverflow chaque jour.

Bonne chance.

6voto

kyoryu Points 8281

Un bon interlocuteur ne va pas vous cuisiner sur des futilités. C'est pourquoi nous avons Google. Un bon intervieweur va trouver des domaines que vous ne connaissez pas et vous poser des questions à ce sujet, car c'est le meilleur endroit pour découvrir comment vous réagissez lorsque vous êtes confronté à quelque chose que vous ne maîtrisez pas.

Le meilleur conseil que je puisse donner pour les entretiens est de ne pas trop se soucier des détails techniques. Dans un entretien, concentrez-vous plutôt sur les aptitudes à résoudre les problèmes. Si vous ne savez pas quelque chose, n'essayez pas de le cacher, admettez-le simplement. Si vous pensez savoir, vous pouvez dire "Je ne suis pas sûr, mais je pense que c'est ça". Ne soyez pas non plus déconcerté - à ce moment-là, votre interlocuteur vous donnera généralement un indice. Il ne s'agit pas seulement de vous donner la réponse, c'est une autre partie du test : il s'agit de voir si, après avoir reçu un coup de pouce dans la bonne direction, vous pouvez extrapoler à partir de là.

Pour les questions sur la boxe, les listes de tableaux et les nombres entiers, si je vous interrogeais et que vous ne compreniez pas la boxe, je vous donnerais une description de base de ce que fait la boxe. Puis je vous demanderais, en sachant ce que je viens de vous dire, pourquoi vous pensez qu'utiliser des ints dans une ArrayList peut être une mauvaise idée.

Dans tout entretien, il est important de se concentrer sur les exigences, le résultat souhaité et les conditions limites ou cas limites. Comme la plupart des questions d'entretien de programmation tombent dans la catégorie "écrivez cette méthode", assurez-vous que les points suivants sont corrects :

1) Les entrées de la méthode 2) Les résultats attendus de la méthode 3) Les cas limites et marginaux.

Cela semble ridiculement basique, mais il est étonnant de voir combien de développeurs, même expérimentés, ne prennent pas la peine de penser à ces choses. Le code résout un problème - si vous ne comprenez pas correctement le problème, vous ne pouvez pas le résoudre correctement.

2voto

User Points 13983

Vous pouvez trouver beaucoup de choses dans ce fil :

Bonnes questions d'entretien C# pour un poste de développeur senior

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