- Практикум по программированию на C# 2
- Контрольные мероприятия
- Итоговый тест
Изучите нижеприведенный код. Что будет выведено в консоль?
class Program
{
static void Main(string[] args)
{
Dictionary<char, Person> people = new Dictionary<char, Person>();
people.Add('b', new Person() { Name = "Bill" });
people.Add('t', new Person() { Name = "Tom" });
people.Add('j', new Person() { Name = "John" });
foreach (char c in people.Keys) Console.WriteLine(c);
}
}
class Person
{
public string Name { get; set; }
}
b
t
j
b - Bill
t - Tom
j - John
Bill
Tom
John
j - John
t - Tom
b - Bill
Внимательно изучите код и выберите верные утверждения.
class Program
{
static void Main(string[] args)
{ Test();
Console.ReadLine();
}
private static void Test()
{ Person p=null;
try
{ p = new Person();
}
finally
{ if (p != null) p.Dispose();
}
}
}
public class Person : IDisposable
{
public string Name { get; set; }
public void Dispose()
{ Console.Beep();
Console.WriteLine("Disposed");
}
}
Интерфейс IDisposable объявляет один единственный метод Dispose, в котором при реализации интерфейса в классе должно происходить освобождение неуправляемых ресурсов
Метод Dispose позволяет в любой момент времени вызвать освобождение связанных ресурсов
Конструкция try... finally используется при вызове метода Dispose, так как она гарантирует, что даже в случае возникновения исключения произойдет освобождение ресурсов в методе Dispose
После завершения метода Test и удаления из стека ссылки на объект Person в куче происходит немедленная очистка памяти и вызов деструктора
После завершения метода Test и, соответственно, удаления из стека ссылки на объект Person в куче может не последовать немедленного вызова деструктора
Внимательно изучите код, представленный ниже, и выберите верное утверждение.
var numbers = new List<int> { 6, 2, 8, 3 };
int sum = numbers.Aggregate(func: (result, item) => result + item);
Приведен пример выражения запроса LINQ для вычисления среднего значения элементов, соответствующих указанному предикату
Присвоит переменной sum значение 19
Выбрасывает InvalidOperationException
В этом примере используется перегрузка метода Aggregate только с одним параметром func. В параметр func передается лямбда-выражение (анонимный метод), которое складывает числа
Внимательно изучите представленный код. Выберите верные ответы.
var list = new List<string> { "1", "88888888", "333", "8" };
int maxLength = (from x in list select x.Length).Max();
Получит максимальную длину строки с помощью селектора
Присвоит переменной maxLength значение 88888888
Вернет максимальное число из элементов в коллекции
Вернет null, если коллекция содержит только нулевые значения
Присвоит переменной maxLength значение 8
Выберите утверждение, справедливое для понятия «класс исключения ArgumentException».
Возникает, когда значение аргумента выходит за пределы диапазона допустимых значений
Нет верных утверждений
Возникает, когда ненулевой аргумент, переданный методу, недопустим
Возникает, когда целое значение делится на ноль
Ознакомьтесь с приведенным ниже фрагментом кода и укажите верный ответ.
public class Program
{
public static void Main()
{
SortedList<int,string> numberNames = new SortedList<int,string>()
{
{3, "Three"},
{5, "Five"},
{1, "One"}
};
foreach(KeyValuePair<int, string> kvp in numberNames)
Console.WriteLine("value: {1}", kvp.Value );
}
}
В консоль будет выведено следующее сообщение:
value: One
value: Three
value: Five
Runtime exception
В консоль будет выведено следующее сообщение:
key: 1, value: One
key: 2, value: Two
key: 3, value: Three
key: 4, value: Four
key: 5, value: Five
key: 6, value: Six
В консоль будет выведено следующее сообщение:
key: 1, value: One
key: 3, value: Three
key: 5, value: Five
Установите соответствие между методом класса File и его описанием.
GetAccessControl |
· Получает объект FileSecurity, который инкапсулирует записи списка управления доступом (ACL) для указанного файла |
Exists |
· Определяет, существует ли указанный файл |
Encrypt |
· Шифрует файл, чтобы его могла расшифровать только учетная запись, использованная для шифрования файла |
Move |
· Перемещает указанный файл в новое место, предоставляя возможность указать новое имя файла |
- Перемещает указанный файл в новое место, предоставляя возможность указать новое имя файла
- Получает объект FileSecurity, который инкапсулирует записи списка управления доступом (ACL) для указанного файла
- Определяет, существует ли указанный файл
- Шифрует файл, чтобы его могла расшифровать только учетная запись, использованная для шифрования файла
Изучите представленный код и выберите верный ответ.
public class Program
{
public static void Main()
{
var cities = new Dictionary<string, string>(){
{"UK", "London, Manchester, Birmingham"},
{"USA", "Chicago, New York, Washington"},
{"India", "Mumbai, New Delhi, Pune"}
};
Console.WriteLine(cities["France"]);
}
}
Runtime exception: ArgumentOutOfRangeException
В консоль будет выведено сообщение:
London, Manchester, Birmingham
В консоль будет выведено сообщение:
Mumbai, New Delhi, Pune
В консоль будет выведено сообщение:
Chicago, New York, Washington
Внимательно изучите код и выберите верные утверждения.
class IntroToLINQ
{
static void Main()
{ int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };
var numQuery =
from num in numbers
where (num % 2) == 0
select num;
foreach (int num in numQuery)
{ Console.Write("{0,1} ", num);
}
}
}
Переменная запроса numQuery является IEnumerable<int>
В консоль будет выведено:
0 1 3 5
В консоль будет выведено:
0 2 4 6
В качестве источника данных используется массив целых чисел
Внимательно изучите представленный код и выберите верный вариант ответа.
public class Program
{
public static void Main()
{
var cities = new Dictionary<string, string>(){
{"UK", "London, Manchester, Birmingham"},
{"USA", "Chicago, New York, Washington"},
{"India", "Mumbai, New Delhi, Pune"}
};
Console.WriteLine(cities["USA"]);
}
}
В консоль будет выведено сообщение:
Mumbai, New Delhi, Pune
В консоль будет выведено сообщение:
Chicago, New York, Washington
Runtime exception: ArgumentOutOfRangeException
В консоль будет выведено сообщение:
London, Manchester, Birmingham
Изучите фрагмент кода и выберите верные утверждения.
public class ThrowTestB
{ static void Main()
{ try
{ TryCast();
}
catch (Exception ex)
{ Console.WriteLine("Catching the {0} exception triggers the finally block.", ex.GetType());
throw;
}
}
public static void TryCast()
{ int i = 123;
string s = "Some string";
object obj = s;
try
{ i = (int)obj;
Console.WriteLine("WriteLine at the end of the try block.");
}
finally
{ Console.WriteLine("\nIn the finally block in TryCast, i = {0}.\n", i);
}
}
}
Выберите один или несколько ответов:
Catching the exception triggers the finally block
В консоль будет выведено сообщение:
In the finally block in TryCast, i = 123.
Catching the System.InvalidCastException exception triggers the finally block
Возникнет необработанное исключение:
System.InvalidCastException: Unable to cast object of type 'System.String' to type 'System.Int32'
В консоль будет выведено сообщение:
WriteLine at the end of the try block.
Execution of the finally block after an unhandled
error depends on how the exception unwind operation is triggered.
i = 243
Изучите код, представленный ниже. Укажите верные утверждения.
var list = new List<int> { 1, 8, 3, 2 };
double result = list.Average();
Вычисляет среднее значение для элементов коллекции целого типа, тип результата – целое
Вычисляет среднее значение для элементов коллекции целого типа, тип результата – вещественный
Присвоит переменной result значение 3
Присвоит переменной result значение 3.5
Соотнесите метод класса ArrayList с его описанием.
void Insert(int index, object value) |
· Вставляет в список по индексу index объект value |
int LastIndexOf(object value) |
· Возвращает индекс последнего вхождения в списке объекта value |
int IndexOf(object value) |
· Возвращает индекс элемента value |
ArrayList GetRange(int index, int count) |
· Возвращает новый список ArrayList, который содержит count элементов текущего списка, начиная с индекса index |
void InsertRange(int index, ICollection col) |
· Вставляет в список, начиная с индекса index, коллекцию ICollection |
- Вставляет в список, начиная с индекса index, коллекцию ICollection
- Возвращает новый список ArrayList, который содержит count элементов текущего списка, начиная с индекса index
- Вставляет в список по индексу index объект value
- Возвращает индекс элемента value
- Возвращает индекс последнего вхождения в списке объекта value
Дан код. Что будет выведено в консоль?
class Program
{
static void Main(string[] args)
{
Dictionary<int, string> countries = new Dictionary<int, string>(5);
countries.Add(1, "Russia");
countries.Add(3, "Great Britain");
countries.Add(2, "USA");
countries.Add(4, "France");
countries.Add(5, "China");
foreach (KeyValuePair<int, string> keyValue in countries)
{
Console.WriteLine(keyValue.Value);
}
}
}
1
3
2
4
5
Russia
Great Britain
USA
France
China
Russia
USA
Great Britain
France
China
1 - Russia
3 - Great Britain
2 - USA
4 - France
5 - China
Внимательно изучите код и укажите верный ответ.
public class Program
{
public static void Main()
{
var arlist1 = new ArrayList();
var arlist2 = new ArrayList(){1, "Summer", " ", true, 6.5, null};
arlist1.AddRange(arlist2);
for(int i = 0; i< arlist1.Count; i++) Console.WriteLine(arlist1[i]);
}
}
В консоль будет выведено следующее сообщение:
1
Summer
True
6.5
В консоль будет выведено следующее сообщение:
1
Summer
True
6.5
null
Возникнет ошибка времени выполнения
Возникнет ошибка времени компиляции
Ознакомьтесь с кодом, представленным ниже.
string[] people = { "Tom", "Bob", "Sam", "Kate", "Alice" };
string[] peopleRange3 = people[^3..^1];
Выберите верный результат.
Sam, Kate, Bob, Alice
Sam, Kate
Bob, Sam
Sam, Alice
Выберите верное утверждение для понятия «метод OpenRead класса FileInfo».
Выберите один ответ:
Расшифровывает файл, который был зашифрован текущей учетной записью с помощью метода шифрования
Создает FileStream только для чтения
Получает объект FileSecurity, который инкапсулирует записи списка управления доступом (ACL) для указанного файла
Перемещает указанный файл в новое место, предоставляя возможность указать новое имя файла
Изучите код и укажите верное утверждение.
File.Move(@"C:\DummyFile.txt", @"D:\DummyFile.txt");
В данном примере указанный файл копируется в другое место
В данном примере проверяется, существует ли указанный файл в определенном месте
В примере указанный файл перемещается в другое место
В примере возвращается время последней записи в файл
Изучите фрагмент кода, представленный ниже, и выберите верное утверждение.
object o2 = null;
try
{ int i2 = (int)o2;
}
Переменной i2 будет присвоено значение null
Переменной i2 будет присвоено значение 0
Возникнет синтаксическая ошибка
Будет вызвано исключение NullReferenceException
Изучите фрагмент кода. Укажите верные утверждения.
class Program
{
delegate int Operation(int x, int y);
static void Main(string[] args)
{ Operation del = Multiply;
result = del(4, 5);
Console.WriteLine(result);
}
private static int Add(int x, int y)
{ return x+y;
}
private static int Multiply (int x, int y)
{ return x * y;
}
}
В консоль будет выведено сообщение:
9
Делегату Operation соответствует любой метод, который возвращает значение типа int и принимает два параметра типа int
Делегат Operation возвращает значение типа int и имеет два параметра типа int
В консоль будет выведено сообщение:
20
Ниже представлен код. Что будет выведено в консоль?
class Program
{
static void Main(string[] args)
{
Queue<Person> persons = new Queue<Person>();
persons.Enqueue(new Person() { Name = "Tom" });
persons.Enqueue(new Person() { Name = "Bill" });
persons.Enqueue(new Person() { Name = "John" });
Console.WriteLine("Сейчас в очереди {0} человек", persons.Count);
}
}
Сейчас в очереди {0} человек
Сейчас в очереди Tom человек
Возникнет ошибка
Сейчас в очереди 3 человек
Внимательно изучите фрагмент кода и укажите верный ответ.
int[] nums = new int[4];
try
{ for (int i = 0; i < 5; i++)
{ nums[i] = i;
Console.WriteLine("nums[{0}]: {1}", i, nums[i]);
}
}
catch (DivideByZeroException)
{ Console.WriteLine("Индекс вышел за границы массива!");
}
В консоль будет выведено следующее сообщение, и программа аварийно завершит свою работу:
nums[0]: 0
nums[1]: 1
nums[2]: 2
nums[3]: 3
В консоль будет выведено сообщение:
nums[0]: 0
nums[1]: 1
nums[2]: 2
nums[3]: 3
Индекс вышел за границы массива!
В консоль будет выведено сообщение:
nums[0]: 0
nums[1]: 1
nums[2]: 2
nums[3]: 3
nums[4]: 4
В консоль будет выведено сообщение:
Индекс вышел за границы массива!
Внимательно изучите фрагмент кода и выберите верные утверждения.
class Program
{
delegate int Operation(int x, int y);
static void Main(string[] args)
{ Operation del = Add;
int result = del(4,5);
Console.WriteLine(result);
}
private static int Add(int x, int y)
{ return x+y;
}
private static int Multiply (int x, int y)
{ return x * y;
}
}
Делегату Operation соответствует любой метод, который возвращает значение типа int и принимает два параметра типа int
Делегат Operation возвращает значение типа int и имеет два параметра типа int
В консоль будет выведено сообщение:
9
В консоль будет выведено сообщение:
20
Внимательно изучите код.
public static void Main()
{
Queue<string> strQ = new Queue<string>();
strQ.Enqueue("H");
strQ.Enqueue("e");
strQ.Enqueue("l");
strQ.Enqueue("l");
strQ.Enqueue("o");
Console.WriteLine("Total elements: {0}", strQ.Count);
if(strQ.Count > 0){
Console.WriteLine(strQ.Peek());
Console.WriteLine(strQ.Peek());
Console.WriteLine(strQ.Peek());
}
Console.WriteLine("Total elements: {0}", strQ.Count);
}
Что будет выведено в консоль?
Total elements: 0
e
e
e
Total elements: 0
Total elements: 5
H
e
l
Total elements: 5
Total elements: 5
HHH
Total elements: 5
Total elements: 5
H
H
H
Total elements: 5
Изучите представленный ниже код и выберите верные утверждения.
var customerLastNames = _customers.Where(cust => cust.Age > 25).
Select(cust => cust.LastName);
В примере применяется метод расширения Select, указывающий, что должно быть возвращено только свойство LastName
Метод расширения Where применяется к массиву customers для выполнения фильтрации; он возвращает объект IEnumerable, содержащий только записи, соответствующие условию. Возвращаемые записи включают все поля объекта Customer
В примере показано использование метода расширения Where для возвращения коллекции фамилий клиентов, которым более 25 лет
Если выполнить попытку вызвать метод расширения Where после метода расширения Select, запрос будет компилироваться без ошибок
Изучите представленный код. Укажите верные ответы.
var list = new List<string> { "88888888", "22", "666666", "333" };
int minLength = (from x in list select x.Length).Min();
Присвоит переменной minLength значение 2
Вернет null, если коллекция содержит только нулевые значения
Вернет минимальное число из элементов в коллекции
Получит минимальную длину строки с помощью селектора
Присвоит переменной minLength значение 3
Выберите верные утверждения для понятия «сборщик мусора».
Выберите один или несколько ответов:
Когда сборщик мусора работает, другие потоки приложения прекращают работать, поскольку сборщик мусора может перемещать объекты в памяти и должен обновить указатели на правильные адреса для перемещенных объектов
Любые объекты, которые требуют финализации, перемещаются в структуру данных, поддерживаемую сборщиком мусора и называемую очередью объектов, доступных для финализации (freachable queue). Freachable-очередь хранит указатели на объекты, требующие завершения до восстановления их ресурсов
Сборщик мусора освобождает ресурсы и память для объектов, хранящихся в куче
Сборщик мусора отмечает недостижимые объекты; объекты считаются недостижимыми, если не доказано иное
Ознакомьтесь с кодом и выберите верное утверждение.
class Account
{
static void Main(string[] args)
{ Account acc = new Account(100);
acc.Put(20);
Console.WriteLine($"Сумма на счете: {acc.Sum}");
acc.Take(70);
Console.WriteLine($"Сумма на счете: {acc.Sum}");
acc.Take(180);
Console.WriteLine($"Сумма на счете: {acc.Sum}");
Console.Read();
}
public Account(int sum)
{ Sum = sum;
}
public int Sum { get; private set; }
public void Put(int sum)
{ Sum += sum;
}
public void Take(int sum)
{if (Sum >= sum) Sum -= sum;
}
}
В консоль будет выведено сообщение:
Сумма на счете: 120
Сумма на счете: 30
Сумма на счете: -80
В консоль будет выведено сообщение:
Сумма на счете: 120
Сумма на счете: 30
Сумма на счете: 100
В консоль будет выведено сообщение:
Сумма на счете: 120
Сумма на счете: 50
Сумма на счете: 50
В консоль будет выведено сообщение:
Сумма на счете: 120
Сумма на счете: 30
Сумма на счете: 80
Изучите приведенный ниже код и выберите верные утверждения.
class Program
{
static void Main(string[] args)
{ Test();
Console.ReadLine();
}
private static void Test()
{ using Person tom = new Person { Name = "Tom" };
using Person bob = new Person { Name = "Bob" };
Console.WriteLine($"Person1: {tom.Name} Person2: {bob.Name}");
Console.WriteLine("Конец метода Test");
}
}
public class Person : IDisposable
{
public string Name { get; set; }
public void Dispose()
{
Console.WriteLine("Disposed");
}
}
В консоль будет выведено сообщение:
Person1: Tom Person2: Bob
Disposed
Disposed
Конец метода Test
В консоль будет выведено сообщение:
Person1: Tom Person2: Bob
Конец метода Test
Disposed
Disposed
В консоль будет выведено сообщение:
Person1: Tom Person2: Bob
Disposed
Конец метода Test
В консоль будет выведено сообщение:
Person1: Tom Person2: Bob
Конец метода Test
Изучите код и укажите верный ответ.
int result1 = Math.Sign(15);
int result2 = Math.Sign(-5);
0
0
-5
15
15
-5
1
-1
Все массивы в C# построены на основе класса Array из пространства имен System. Установите соответствие между названием метода и его описанием.
Статический метод Find() |
· Находит элемент, который удовлетворяет определенному условию |
Статический метод Exists() |
· Проверяет, содержит ли массив определенный элемент |
Статический метод BinarySearch() |
· Выполняет бинарный поиск в отсортированном массиве |
Статический метод Copy() |
· Копирует часть одного массива в другой массив |
Статический метод Clear() |
· Очищает массив, устанавливая для всех его элементов значение по умолчанию |
- Копирует часть одного массива в другой массив
- Очищает массив, устанавливая для всех его элементов значение по умолчанию
- Находит элемент, который удовлетворяет определенному условию
- Выполняет бинарный поиск в отсортированном массиве
- Проверяет, содержит ли массив определенный элемент
Изучите код и выберите верное утверждение.
File.WriteAllText(@"C:\DummyFile.txt", "This is File testing");
В данном примере показана перезапись текста в файл
В данном примере показано чтение текста из файла
В данном примере добавляется строка в файл
В данном примере добавляется несколько текстовых строк в указанный файл
Ознакомьтесь с приведенным ниже фрагментом кода и укажите верный ответ.
ArrayList arList = new ArrayList() { 1, null, "Bill", 300, " ", 4.5f, 300, };
arList.Remove(null);
arList.RemoveAt(4);
arList.RemoveRange(0, 2);
foreach (var item in arList) Console.WriteLine(item);
В консоль будет выведено следующее сообщение:
1
Bill
300
300
В консоль будет выведено сообщение:
1
Bill
300
4.5
300
В консоль будет выведено следующее сообщение:
300
300
В консоль будет выведено сообщение:
300
4.5
300
В консоль будет выведено сообщение:
Bill
300
4.5
300
Класс ObservableCollection
Выберите один или несколько ответов:
находится в пространстве имен System.Collections.ObjectModel
представляет список однотипных объектов
определяет событие CollectionChanged, подписавшись на которое можно обработать любые изменения коллекции
представляет обычную очередь, работающую по алгоритму FIFO
Изучите код, представленный ниже, и выберите верное утверждение.
public abstract class Example
{
public sealed abstract void m1();
public abstract void m2();
}
Разрешено объявлять абстрактный метод статическим
Возникнет ошибка взаимодействия
Статический член 'Example.m1 ()' может быть помечен как переопределенный, виртуальный или абстрактный
'Example.m1 ()' не может быть sealed, т. к. это не переопределение
Внимательно изучите фрагмент кода и выберите верный ответ.
static void Main()
{ checked
{ a = 12;
b = 7;
result = (byte)(a * b);
Console.WriteLine("Проверенный на переполнение результат: " + result);
}
catch (OverflowException exc)
{ Console.WriteLine(exc.Message); }
В консоль будет выведено сообщение:
Arithmetic operation resulted in an overflow
В консоль будет выведено сообщение:
Непроверенный на переполнение результат: 113
В консоль будет выведено сообщение:
Проверенный на переполнение результат: 84
В консоль будет выведено сообщение:
Непроверенный на переполнение результат: 1
Внимательно изучите данный код. Выберите верный ответ.
public class Program
{
public static void Main()
{
SortedList<int,string> numberNames = new SortedList<int,string>()
{
{3, "Three"},
{1, "One"},
{2, "Two"}
};
Console.WriteLine(numberNames[1]);
}
}
В консоль будет выведено следующее сообщение:
Three
В консоль будет выведено следующее сообщение:
One
Runtime KeyNotFoundException
В консоль будет выведено сообщение:
Two
Ознакомьтесь с приведенным ниже фрагментом кода и выберите верный ответ.
public static void Main()
{
ArrayList arlist1 = new ArrayList() {100, 200, 600 };
ArrayList arlist2 = new ArrayList() {300, 400, 500};
arlist1.InsertRange(2, arlist2);
foreach(var item in arlist1) Console.Write(item + ", ");
}
В консоль будет выведено следующее сообщение:
300, 400, 500, 100, 200, 600,
В консоль будет выведено следующее сообщение:
100
200
600
300
400
500
В консоль будет выведено сообщение:
100, 200, 600, 300, 400, 500,
В консоль будет выведено следующее сообщение:
100
200
300
400
500
600
В консоль будет выведено сообщение:
100, 200, 300, 400, 500, 600,
Внимательно изучите код и выберите верное утверждение.
class Program
{
delegate void Message();
static void Main(string[] args)
{ Message mes1 = Hello;
mes1 += HowAreYou;
mes1();
Console.Read();
}
private static void Hello()
{ Console.WriteLine("Hello");
}
private static string HowAreYou()
{ Console.WriteLine("How are you?");
}
}
Возникнет ошибка времени выполнения
В консоль будет выведено сообщение:
How are you?
В консоль будет выведено сообщение:
Hello
В консоль будет выведено сообщение:
Hello
How are you?
Возникнет ошибка компиляции
Внимательно изучите код и выберите верное утверждение.
class Program
{
delegate void MessageHandler(string message);
static void Main(string[] args)
{
MessageHandler handler = delegate
{
Console.WriteLine("анонимный метод");
};
handler("hello world!");
Console.Read();
}
}
В консоль будет выведено сообщение:
hello world!
В консоль будет выведено сообщение:
анонимный метод
hello world!
В консоль будет выведено сообщение:
анонимный метод
Возникнет ошибка компиляции
Отзывы
Отзывов пока нет.