Questions de LINQ pour les entrevues senior [clos]

16

Je prépare une section LINQ dans les questions d'entrevue pour les programmeurs seniors. Quelles sont les questions les plus intéressantes à inclure dans LINQ? Et pourquoi?

mBotros
la source

Réponses:

28

Certaines des choses que vous pourriez demander seraient.

  • Pourquoi le varmot-clé est utilisé et quand est-il le seul moyen d'obtenir le résultat d'une requête?
  • Qu'est-ce que l'exécution différée?
  • Expliquez la syntaxe d'expression de requête, la syntaxe fluide, les requêtes mixtes.
  • Que sont les requêtes interprétées?
  • Utilisation IQueryableet IEnumerableinterfaces.
  • Utilisation de let et intomot - clé, et comment ils aident à faire des requêtes progressives tout en conservant l'exécution différée
  • Que sont les arbres d'expression?


Mise à jour:

Pour des réponses détaillées, voir ce bel article d' Oleksii

Shekhar_Pro
la source
8
Grandes questions. Je pourrais être tenté de donner des exemples de code et de dire "qu'est-ce que cela fait?" car je ne suis pas totalement convaincu que vous devez savoir quel est le terme Fluent Syntax pour l'utiliser et le comprendre.
hmmm, et s'ils recherchent à l'avance ces sujets sur Google et les mémorisent, comment cette approche vous dit-elle qu'ils peuvent réellement faire n'importe quel LINQ du monde réel?
Darknight
alors comme BTyler l'a dit ci-dessus ... vous pouvez compléter les questions ci-dessus avec des exemples de code.
Shekhar_Pro
1
Ce gars a blogué sur les solutions à toutes ces questions: blog4work.com/?tag=/LINQ
Nick Larsen
Je viens de voir le post, beau travail :)
Shekhar_Pro
13

Demandez-leur de donner des exemples de moments où ils auraient tendance à ne pas utiliser LINQ et pourquoi, même si cela serait possible (et ReSharper le suggère avec enthousiasme).

David Neale
la source
6

Vous pouvez commencer mais demander quelles fonctionnalités de langage introduites en C # 3 sont nécessaires pour prendre en charge LINQ. Le candidat comprend-il comment des fonctionnalités telles que le mot-clé var ainsi que des types anonymes, des expressions lambda et des méthodes d'extension étaient nécessaires pour activer LINQ?

Steve
la source
Pour ma propre curiosité, pourquoi des types anonymes sont-ils nécessaires? Ils peuvent être utilisés pour des résultats sélectionnés par commodité, mais vous pouvez également définir vos propres classes avec des propriétés nommées, n'est-ce pas?
Rup
@Rup | C'est juste une question de commodité et un sucre syntaxique .. vous pouvez bien sûr créer des classes bien définies (de toute façon le compilateur le fait pour vous en arrière-plan). mais lorsque vous utilisez des requêtes LINQ, vous avez besoin instantanément d'un type pour contenir les résultats ... maintenant, cela ne semble pas productif de continuer à créer des classes pour chaque type et cela peut entraîner plus de code et difficile à maintenir si l'ensemble de résultats change plus tard.
Shekhar_Pro
Ce n'est pas correct. Les types anonymes sont requis pour les projections linq-to-Sql, par exemple pour sélectionner uniquement certaines colonnes d'une table / entité.
joniba
6

Que diriez-vous de quelques questions de codage, comme:

  • Donnez ensuite du code non LINQ qui serait mieux fait dans LINQ et demandez-leur de le traduire.
  • Donnez-leur un peu de LINQ et faites-les démêler et réécrire en C # simple (mieux encore, trouvez un exemple où la version non-LINQ est meilleure ou plus facile à comprendre)
  • Demandez-leur de résoudre un problème et de montrer avec / sans LINQ et demandez-leur d'expliquer ce qui est le mieux et pourquoi.

Les questions des manuels sont très bien (par exemple pourquoi utiliser var), mais pour vraiment savoir si elles comprennent, faites-les simplement écrire du code.

Steve
la source
4

Si vous cherchez une question à laquelle vous obtiendrez des réponses "intéressantes", vous pouvez leur demander pourquoi ils pensent que la plupart des exemples linq sont attribués en utilisant le mot-clé "var" sur le LHS ... il n'y a pas de bonne réponse et vous pourriez probablement obtenir une certaine compréhension du type de personne qu'ils sont à partir de ce qu'ils disent.

Mikey Hogarth
la source
3

Demandez-leur des arbres d'expression. Comment le linq se transforme en sql sur le serveur de base de données la différence entre les méthodes d'extension linq et les requêtes linq

Cela dépend de ce que vous essayez d'en retirer.


la source
1
  • quelles sont les situations dans lesquelles vous utiliseriez First et quand utiliser FirstOrDefault?

  • quel problème LINQ résout-il?

  • que se passe-t-il lorsque vous encapsulez la requête dans .ToList?

Tangurena
la source
permet une exécution différée.
linquize
réduire les chances d'utiliser la boucle for / foreach pour améliorer la lisibilité
linquize
0

Demandez-leur de créer un petit moteur de règles, en utilisant les règles Func [] {}. Chaque règle doit être vraie, le tableau remplaçant les instructions case ou if.

Je viens de commencer sur linq et lambdas mais je pense que c'est un bon test de résolution de problèmes et d'alphabétisation linq.

En plus des suggestions plus qualifiées ici.

Richard
la source