четверг, 26 декабря 2013 г.

LINQ Quiz

Пройдите этот короткий тест и проверьте свои знания по LINQ.


Во всех примерах импортированы следующие пространства имен:
using System;
using System.Linq;
using System.Data.Linq;
using System.Xml.Linq;
using System.Collections;
а так же предполагается, что массив colors определён следующим образом:
string[] colors = { "green", "brown", "blue", "red" };
Поехали!


Вопрос 1. Что будет результатом следующего выражения?

colors.Max (c => c.Length)
(A) 5
(B) green
(С) brown
(D) ошибка компиляции
(E) выброс исключения

Вопрос 2. Что будет в результате выполнения следующего выражения?

colors.OrderBy (c => c.Length).Single()
(A) 3
(B) red
(С) ошибка компиляции
(D) выброс исключения

Вопрос 3. Результат какого типа возвращает следующий запрос?

var query =
  from c in colors
  where c.Length > 3
  orderby c.Length
  select c;
(A) int
(B) string
(С) IEnumerable<int>
(D) IEnumerable<string>
(E) IQueryable<int>
(F) IQueryable<string>

Вопрос 4. Что будет в результате выполнения следующего кода?

var query =
  from c in colors
  where c.Length == colors.Max (c => c.Length)
  select c;

foreach (var element in query)
  Console.WriteLine (element);
Массив colors = { «green», «brown», «blue», «red» }

(A) green затем brown
(B) 5 затем 5
(С) ошибка компиляции
(D) выброс исключения

Вопрос 5. Допустим мы сделали запрос из предыдущего вопроса синтаксически корректным, сколько раз будет вычислен подзапрос Max во время перечисления результата?


(A) один
(B) два
(С) три
(D) четыре

Вопрос 6. Что будет в результате выполнения следующего кода?

var list = new List<string> (colors);
IEnumerable<string> query = list.Where (c => c.Length == 3);
list.Remove ("red");

Console.WriteLine (query.Count());
(A) 0
(B) 1
(С) 2
(D) выброс исключения

Вопрос 7. Что будет выведено на консоль в результате выполнения следующего кода?


string[ ] colors = { «green», «brown», «blue», «red» }
var query = colors.Where (c => c.Contains ("e"));
query = query.Where  (c => c.Contains ("n"));

Console.WriteLine (query.Count());
(A) 1
(B) 2
(С) 3
(D) 4

Вопрос 8. Что будет выведено на консоль в результате выполнения следующего кода?

string s  = "e";
var query = colors.Where (c => c.Contains (s));

s = "n";
query = query.Where  (c => c.Contains (s));

Console.WriteLine (query.Count());
(A) 1
(B) 2
(С) 3
(D) 4

Вопрос 9. Каким образом компилятор разрешает оператор let в следующем запросе?

from c in colors
let middle = c.Substring (1, c.Length - 2)
where middle.Contains ("e")
select middle
(A) преобразует его в вызов метода Enumerable.Let
(B) преобразует middle в c.Substring (1, c.Length — 2) в where и select 
(С) выполняет проекцию в временный анонимный тип

Вопрос 10. Компилятор преобразует запрос содержащий несколько генераторов (оператор from) в:


(A) Несколько вызовов Select
(B) SelectMany
(С) Join

Вопрос 11. Какой (ие) тип (ы) соединений (SQL JOIN) может выполнять LINQ to SQL запрос содержащий несколько from (или SelectMany)?


I. Внутреннее соединение (Inner joins)
II. Левое внешнее соединение (Left outer joins)
III. Полное внешнее соединение (Full outer joins)
IV. Внутреннее соединение не по равенству (Non-equi inner joins)
V. Внешнее соединение не по равенству (Non-equi outer joins)

Вопрос 12. Какой (ие) тип (ы) соединений (SQL JOIN) может выполнять LINQ to SQL запрос содержащий join?


I. Внутреннее соединение (Inner joins)
II. Левое внешнее соединение (Left outer joins)
III. Полное внешнее соединение (Full outer joins)
IV. Внутреннее соединение не по равенству (Non-equi inner joins)
V. Внешнее соединение не по равенству (Non-equi outer joins)

Вопрос 13. В каких местах LINQ to SQL запрос может включать вызов пользовательского метода?


(A) только в Where
(B) только в финальной проекции
(С) в любом месте запроса 
(D) нигде

Вопрос 14. Для того чтобы в LINQ to SQL свойство ассоциации автоматически заполнялось наряду с сущностью, вам необходимо сделать:


(A) установить значение свойства DelayLoaded в false в Association атрибуте
(B) установить значение свойства EagerLoad в true в Association атрибуте
(С) использовать экземпляр класса DataLoadOptions и вызвать метод AssociateWith
(D) использовать экземпляр класса DataLoadOptions и вызвать метод LoadWith

Вопрос 15. Что распечатает следующий код?

var city = new XElement ("city", "Seattle");

var customer1 = new XElement ("customer", city);
var customer2 = new XElement ("customer", city);

city.SetValue ("London");
Console.WriteLine (customer2.Element ("city").Value);
(A) Seattle
(B) London
(С) произойдет выброс исключения

Вопрос 16. Какое пространство имен будет у внутреннего элемента name?

XNamespace ns = "http://albahari.com/linqquiz";

var x =
 new XElement (ns + "customer",
    new XElement ("name", "Bloggs")
  );
(A) "" (пустая строка)
(B) «albahari.com/linqquiz»
(С) «name»

Вопрос 17. Включается ли XML-объявление в результирующий XML файл, когда вы вызываете метод Save у объектов XElement или XDocument для того чтобы записать его содержимое в файл?


(A) всегда
(B) никогда
(С) только если предоставлен экземпляр класса XDeclaration

Ссылка на оригинал: http://www.albahari.com/nutshell/linqquiz.aspx

5 комментариев:

  1. Предлагаю писать Ваши ответы на вопросы и обсуждать их. А следующим постом я опубликую верные ответы с пояснениями!

    ОтветитьУдалить
  2. Этот комментарий был удален автором.

    ОтветитьУдалить
  3. автор, тебе уже есть 20?

    ОтветитьУдалить
  4. Вопрос 4. Ответ не C, а A. Возможно всвязи с изменением стандарта c#.

    ОтветитьУдалить