Обработка исключительных ситуаций




7.1

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

static void Main(string[] args)

{

int x=9,y;

float z;

{

try

{

y = 0;

z = x / y;

}

catch

{

y = 3;

z = x / y;

}

}

 

Console.WriteLine("z="+z);

Console.ReadKey();

 

}

на экран будет выведено

(1)

1) z=3

2) z=0

3) 0

4) Возникнет ошибка при компиляции

7.2

class Program

{

static void Main(string[] args)

{

try

{

int value = int.Parse("test exception");

}

catch (Exception e)

{

throw e; // Здесь ли, по мнению CLR, расположено начало исключения?

}

}

}

(1)

1) Да

2) Нет

3) В данном коде вообще нет исключений

 

7.3

Правильно сгенерировать исключение в С# можно следующим способом

(2)

1) throw Exception(“Exception”);

2) throw new Exception(“Exception”);

3) throw “Exception”;

 

7.4

Данный код скомпилируется успешно (как часть некоторого метода)?

try

{

Console.WriteLine("TRY");

throw new Exception("EXCEPTION");

}

catch (Exception)

{

Console.WriteLine("CATCH");

}

(3)

1) Нет, т.к. в операторе try допущена ошибка

2) Нет, т.к. оператора throw не существует

3) Да

7.5

Скомпилируется ли следующий код (как часть некоторого метода):

string[] str = new string[5];

try

{

str[5] = "anything";

}

catch (Exception e)

{

Console.WriteLine(e.Message);

}

catch (IndexOutOfRangeException e)

{

Console.WriteLine(e.Message);

}

(2)

1) Да

2) Нет, т.к. нельзя использовать оператор catch больше одного раза

3) Нет, т.к. первая конструкция catch уже перехватывает все исключения

 

7.6

Укажите имя класса, от которого наследуются все исключения.

(Exception; System.Exception)

7.7

Будет ли выполнен блок finally, если не было сгенерировано исключение?

(1)

1) Да

2) Нет

3) возможны оба варианта

7.8

Сколько блоков catch можно выполнить для одного оператора try?

(1)

1) 1

2) 2

3) 3

4) сколько угодно много

7.9

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

try {

Console.WriteLine("Hello ");

return;

}

finally { Console.WriteLine("Goodbye "); }

Console.WriteLine("world!");

На экран будет выведено

(1)

1) Hello

Goodbye

2) Hello

world

3) Goodbye

world

4) Hello

7.10

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

try {

Console.WriteLine("Hello ");

Thread.CurrentThread.Abort();

}

finally { Console.WriteLine("Goodbye "); }

Console.WriteLine("world!");

На экран будет выведено

(1)

1) Hello

Goodbye

2) Hello

world

3) Goodbye

world

4) Hello

7.11

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

try {

Console.WriteLine("Hello ");

System.Environment.Exit(0);

}

finally { Console.WriteLine("Goodbye "); }

Console.WriteLine("world!");

На экран будет выведено

(4)

1) Hello

Goodbye

2) Hello

world

3) Goodbye

world

4) Hello

7.12

Исключения используются для обработки..... ситуаций

(1)

1) ошибочных

2) стандартных

3) шаблонных

4) логических

7.13

Исключения в.NET являются потомком класса

(1)

1) Exception

2) Error

3) Try

4) Catch

5) Finally

6) Throw

7.14

Для обработки исключительных ситуаций используются конструкции

(1;2)

1) try/catch

2) try/catch/finally

3) foreach/in

4) if/else

5) get/catch

7.15

После выполнения программного кода переменная i будет содержать значение

int i=0,j=2,k=4;

try{ i=j+1/(k-j*2);}

catch{ i=2;}

(4)

1) 2

2) 0

3) 4

4) 1

5) 3

7.16

После выполнения программного кода переменная i будет содержать значение

int i=0,j=2,k=4;

try{ i=j+1/((k++)-j*2);}

catch{ i=2;}

(1)

1) 2

2) 0

3) 4

4) 1

5) 3

7.17

После выполнения программного кода переменная i будет содержать значение

int i=0,j=2,k=4;

try{ i=j+1/((++k)-j*2);}

catch{ i=2;}

(5)

1) 2

2) 0

3) 4

4) 1

5) 3

7.18

После выполнения программного кода переменная s будет содержать значение

string s="Пусто";

try{ s="Пример"; throw new Exception("Ошибка");}

catch(Exception e){ s=e.Message;}

(3)

1) “Пусто”

2) “Пример”

3) “Ошибка”

4) e.Message

7.19

Для выбрасывания исключения используется оператор

(3)

1) catch

2) finally

3) throw

4) new

7.20

Исключения обнаруживаются и обрабатываются в операторе

(1)

1) try

2) break

3) goto

4) create

7.21

(3)

Когда будет вызываться блок finally?

1) После отработки блока catch

2) После отработки блока try

3) В любом случае либо по отработке блока catch, либо блока try

 

Классы

8.1

Введите название класса, который является базовым для всех классов.(Object)

 

8.2

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

class Test

{

static void change(ref int x, ref int y)

{

int z = x;

x = y;

y = z;

}

 

static void Main()

{

int x = 0, y = 3;

change(ref x, ref y);

Console.Write("x=" + x + ", y=" + y);

Console.ReadLine();

}

}

на экран будет выведено

(4)

1) Возникнет ошибка при компиляции

2) Возникнет ошибка при выполнении

3) x=0, y=3

4) x=3, y=0

 

8.3

Отметьте свойства абстрактных классов в С#, которые являются корректными. (1,2)

1) Абстрактные классы нельзя наследовать

2) В абстрактных классах нельзя определять поля

3) Абстрактные классы не могут наследовать интерфейсы

4) Абстрактный класс может включать как абстрактные члены, так и виртуальные

 

8.4

Класс в C# может иметь(3)

1) одного потомка и одного предка

2) одного потомка и нескольких предков

3) одного предка и произвольное количество потомков

4) несколько предков и произвольное количество потомков

 

8.5

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

static void Main(string[] args)

{

string s;

{

int s = 10;

Console.WriteLine(s);

}

}

на экран будет выведено

(4)

1) Возникнет ошибка при выполнении

2) 10

3) Пустую строку

4) Возникнет ошибка при компиляции

8.6

Выберите верные утверждения (2;6)

1) Класс может наследовать лишь один интерфейс

2) Класс может наследовать множество интерфейсов

3) Класс не может наследовать интерфейсы

4) Класс не может наследовать реализацию

5) Класс может наследовать множество реализаций

6) Класс может наследовать лишь одну реализацию

8.7

Можно ли передать в конструктор параметр с ключевым словом ref?(2)

1) нет

2) да

3) такого слова не существует в C#

8.8

Свойства и методы для работы с массивами содержит класс(4)

1) System.Math

2) System.Object

3) System.Console

4) System.Array

 

8.9

Для организации ввода-вывода данных служат методы класса(3)

1) System.Math

2) System.Object

3) System.Console

4) System.Array

 

8.10

Класс System.Exeption содержит(1)

1) свойства, с помощью которых можно получить информацию об исключении

2) свойства и методы для работы с массивами

3) свойства и методы для работы со строками

4) методы, для осуществления ввода-вывода

 

8.11

Для организации доступа к полям класса служат(2)

1) методы

2) свойства

3) конструкторы

4) деструкторы

 

8.12

Отметьте все верные утверждения о классе SomeClass:

internal sealed class SomeClass

{

public void SomeMethod()

{

}

}

(1;5;6)

1) у SomeClass не может быть наследников

2) экземпляр SomeClass нельзя создать вызовом new SomeClass(), так как у класса не определен открытый конструктор без параметров

3) SomeClass является значимым типом (value-type)

4) SomeClass может использоваться внешними сборками

5) SomeClass наследуется от System.Object

6) SomeClass доступен для использования только внутри сборки, в которой он определён

7) SomeClass могут наследовать другие классы

 

8.14

Выберите модификаторы, валидные в C#

(2;3;4;6)

1) protected external

2) public

3) protected internal

4) internal

5) external

6) private

 

8.15

Чтобы классе компилировался, в нем нужно сделать следующие изменения в

public class Foo {

private int[] a = new int[10];

private Dictionary<string, int> b;

private int[] c = new int[100];

 

public int this[int i] { // 1

get { return a[i]; }

set { a[i] = value; }

}

 

public int this[string id] { // 2

get { return b[id]; }

set { b[id] = value; }

}

 

public int this[int i, int j] { // 3

get { return c[i*10 + j]; }

set { c[i*10 + j] = value; }

}

}

(4)

1) Убрать определение индексатора 1

2) Убрать определение индексатора 2

3) Убрать определение индексатора 3

4) Ничего убирать не надо, в коде нет ошибок компиляции

8.16

Переменные, описанные внутри метода класса, называются

(3)

1) глобальные

2) классовые

3) локальные

4) переменные метода

8.17

Поля readonly экземпляра класса могут инициализироваться

(2;4)

1) с помощью свойств

2) в конструкторе

3) в instance методах

4) при объявлении

5) в статических методах

8.18

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

static bool Method1()

{

Console.WriteLine("in Method1");

return false;

}

static bool Method2()

{

Console.WriteLine("in Method2");

return true;

}

static void Main(string[] args)

{

if (Method1() && Method2())

{

Console.WriteLine("inside if");

}

}

на экран будет выведено

(2)

1) in Method1
in Method2
inside if

2) in Method1

3) in Method1
in Method2

8.19

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

class Program

{

static void Main(string[] args)

{

Console.WriteLine(Foo("Original string"));

}

 

public static string Foo(string str)

{

try

{

return str;

}

finally

{

Console.WriteLine("In finally");

str = "Somewhere in finally";

}

}

}

на экран будет выведено

(1)

1) In finally
Original string

2) In finally
Somewhere in finally

3) Original string

4) Ошибка при компиляции

 

8.20

Конструктором типа называют

(5)

1) конструктор, отмеченный модификатором internal

2) конструктор, отмеченный модификатором private

3) конструктор, который не определяется явно - его JIT компилятор объявляет самостоятельно

4) конструктор, отмеченный модификатором protected

5) конструктор, отмеченный модификатором static

8.21

Выберите верные утверждения

(2;3)

1) Класс не может наследовать интерфейсы

2) Класс может наследовать только одну реализацию

3) Класс может наследовать сколько угодно интерфейсов

4) Класс не может наследовать реализацию

5) Класс может наследовать только один интерфейс

6) Класс может наследовать сколько угодно реализаций

8.22

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

class Test

{

static void increment(int p)

{

++p;

}

static void Main()

{

int x = 8;

increment(x);

Console.WriteLine(x++);

}

}

на экран будет выведено

(1)

1) 8

2) 9

3) 10

4) Код не скомпилируется

 

8.23

По умолчанию классу, описанному в namespace дается модификатор доступа

(Выберите все верные ответы)

(4)

1) public

2) private

3) protected

4) internal

5) Ни один из перечисленных

8.24

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

class MyClass

{

static void Main()

{

int a = 1, b = 2;

change(ref a, ref b);

Console.WriteLine("a=" + a + ", b=" + b);

Console.ReadLine();

}

 

private static void change(ref int a, ref int b)

{

int c = a;

a = b;

b = c;

}

}

на экран будет выведено

(1)

1) a=1, b=2

2) a=2, b=1

3) Возникнет ошибка компиляции

4) Возникнет ошибка времени выполнения

8.25

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

static bool Method1()

{

Console.WriteLine("in Method1");

return false;

}

static bool Method2()

{

Console.WriteLine("in Method2");

return true;

}

static void Main(string[] args)

{

if (Method1() & Method2())

{

Console.WriteLine("inside if");

}

}

на экран будет выведено

(3)

1) in Method1

2) in Method1
in Method2
inside if

3) in Method1
in Method2

8.26

Производный класс может иметь … родительских классов

(2)

1) Любое количество

2) Не больше одного

3) Всегда один

4) Не больше двух

8.27

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

public static void Foo(params string[] lines)

{

foreach (string l in lines) {

Console.Write(l);

}

}

 

public static void Main()

{

string[] data = new string[] { "1", "2", "3" };

Foo(data);

Foo("A", "B", "C");

}

на экран будет выведено

(2)

1) Программа не компилируется

2) 123ABC

3) Возникнет ошибка времени выполнения

4) 123

 

8.28

Статические конструкторы классов в C# вызываются

(1)

1) Один раз при первом создании экземпляра класса или при первом обращении к статическим членам класса

2) После каждого обращения к статическим полям, методам и свойствам

3) Строгий порядок вызова не определен

4) Статических конструкторов в C# нет

 

8.29

Перехватить добавление и удаление делегата из события можно следующим образом

(2)

1) Такая возможность не предусмотрена

2) Для этого существуют специальные ключевые слова add и remove

3) Использовать ключевые слова get и set

4) Переопределить операторы + и – для делегата

 

8.30

public class Player

{

public Player(int score)

{

this.score = score;

Console.WriteLine(score);

}

public int score;

}

public class Game {

public static Player player = new Player(10);

 

static Game() {

player = new Player(20);

}

}

// …Метод Main()

Game game = new Game();

После выполнения кода на экран будет выведено …

Значение поля Game.player.score будет равно …

(3)

1) Будет выведено 10, затем 20, а поле score равно 10

2) Будет выведено 20, затем 10, а поле score равно 20

3) Будет выведено 10, затем 20, а поле score равно 20

4) Нельзя сказать – строго не определен приоритет вызова

5) Произойдет ошибка времени выполнения

8.31

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

public class Author: Attribute

{

public Author(string name)

{

Console.WriteLine(name);

}

}

[Author("Daniel Pols")]

class Program

{

static void Main(string[] args)

{

}

}

на экран будет выведено

(4)

1) На консоль будет выведено “Daniel Pols”

2) Ошибка при компиляции кода: строка Console.WriteLine(name);

3) Ошибка при компиляции кода: строка [Author("Daniel Pols")]

4) На консоль ничего не будет выведено

8.32

Есть ли ошибка в коде, и если да, то какая?

public class Base

{

public const string Id = "123-982-232";

public static readonly string Date = "12/03/2010";

}

public class Derive: Base

{

public void ShowId()

{

Console.WriteLine(Id);

}

public void ShowDate()

{

Console.WriteLine(Date);

}

}

(1)

1) Ошибок нет, Id и Date доступны из класса Derive

2) Константные поля не наследуются, то есть поле Id не доступно из класса Derive

3) Статические, доступные только для чтения поля не наследуются, то есть поле Date не доступно из класса Derive

4) Доступные только для чтения уже статичны, поэтому слово static лишнее при описании поля Date

8.33

Константы и доступные только для чтения поля отличаются

(2)

1) Ничем не отличаются

2) Константы инициализируются во время компиляции, доступные только для чтения поля - во время выполнения

3) Доступные только для чтения поля инициализируются во время компиляции, константы - во время выполнения

4) Константы можно изменять, а доступные только для чтения поля нет

8.34

implicit оператор, преобразующий объект класса Widget в int, правильно объявить следующим образом

(4)

1) public static implicit int(Widget widget) { }

2) public implicit operator int(Widget widget) { }

3) public static operator int(Widget widget) { }

4) public static implicit operator int(Widget widget) { }

8.35

Какие ошибки допущены в классе?

private class Money

{

public virtual abstract void Transfer();

public abstract Money Exchange();

public abstract decimal Value

{

get;

set;

}

}

(1;3;4)

1) Нельзя использовать private для классов

2) Свойство Value не может быть помечено abstract

3) Метод Transfer() не может быть одновременно помечен как виртуальный и абстрактный

4) В объявлении класса пропущено ключевое слово abstract

 

8.36

Выберите правильные объявления метода с корректным использованием ключевого слова params

(2;4)

1) public void Foo(params double[] array, double valume) { }

2) public void Foo(double volume, params double[] array) { }

3) public void Foo(params int[] intArray, params double[] doubleArray) { }

4) public void Foo(params double[] array) { }

5) public void Foo(params object[] objectArray, params int[] intArray) { }

8.37

public abstract class A

{

public virtual string Print() { return "A"; }

}

 

public class B: A

{

public override string Print() { return "B"; }

}

 

public class C: B

{

public new string Print() { return "C"; }

}

При выполнении следующего кода

 

A ac = new C();

Console.WriteLine(ac.Print());

 

будет получен результат

(2)

1) A

2) B

3) C

4) Ошибка компиляции

8.38

В представленном коде содержатся следующие ошибки

class Test

{

static void f(ref int a, out int b)

{

a = 10 + b;

}

 

static void Main(string[] args)

{

int a;

int b = 5.0;

f(ref a, out b);

}

}

(2;3;4;5)

1) В этом коде нет ошибок

2) В методе f переменная b должна быть инициализирована до ее использования

3) Перед вызовом метода f переменная а должна быть проинициализирована.

4) В методе f необходимо обязательно присвоить значение переменной b

5) Переменная b должна быть проинициализирована целочисленным значением или не инициализирована вовсе

6) Метод f должен содержать конструкцию return

7) Метод f должен быть объявлен как public

 

8.39

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

class Program

{

static bool SomeMethod()

{

Console.WriteLine("Method was invoked");

return true;

}

static void Main(string[] args)

{

if (true & false & SomeMethod())

{

Console.WriteLine("Inside IF operator");

}

}

}

на экран будет выведено

(1)

1) Method was invoked

2) Ничего не напечатает

3) Ошибка времени выполнения

4) Method was invoked Inside IF operator

5) Ошибка компиляции

8.40

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

class MyClass

{

static void Main()

{

int a = 1, b = 2;

Swap(a, b);

Console.WriteLine("a=" + a + ", b=" + b);

Console.ReadLine();

}

 

private static void Swap(int a, int b)

{

int c = a;

a = b;

b = c;

}

}

на экран будет выведено

(4)

1) Возникнет ошибка времени выполнения

2) Возникнет ошибка компиляции

3) a=2, b=1

4) a=1, b=2

8.41

Скомпилируется ли следующий код:

class Program

{

private static int I;

static Program(int a)

{

this.i = a;

Console.WriteLine(“In static constructor”);

}

static void Main(string[] args) { }

}

(2)

1) Да

2) Нет, т.к. статический конструктор не должен иметь параметров

3) Нет, т.к. переменная i объявлена неверно

8.42

Выберите допустимые прототипы метода Main.

(1;2;5;6)

1) static void Main() { }

2) static int Main() { }

3) unsafe static void Main(int argc, char* argv[]) { }

4) static void main() { }

5) static void Main(string[] args) { }

6) static int main() { }

7) static int Main(string[] args) { }

 

 

Интерфейсы

 

9.1

Для интерфейса могут быть указаны следующие из перечисленных спецификаторов (1, 5, 6)

1) public

2) static

3) sealed

4) abstract

5) protected

6) private

 

9.2

Выберите имя стандартного интерфейса.Net (3)

1) IGet

2) IPresent

3) IComparable

4) IAmmo

 

9.3

Реализация интерфейса IComparable позволяет (1)

1) Задавать метод сравнения объектов по принципу больше или меньше

2) Клонировать объекты

3) Просматривать содержимое объекта с помощью циклов

4) Удалять объекты

 

9.4.

При объявлении всех интерфейсов используется ключевое слово …

(interface)

 

9.5

Один и тот же интерфейс могут реализовать … классов (3)

1) 2

2) 1

3) сколько угодно

4) 4

 

9.6

Один класс может реализовать … интерфейсов (1)

1) Сколько угодно

2) Ни одного

3) 1

4) 2

 

9.7

Может ли интерфейс задаваться в списке предков какого-либо класса? (1)

1) Да

2) Нет, т.к интерфейс не может быть предком класса

3) Нет, т.к. наследование в C# вообще невозможно

 

 

9.8

Чтобы коллекцию можно было использовать в цикле foreach, она должна удовлетворять условию

(4)

1) реализовывать интерфейс IForeachable

2) реализовывать интерфейс IDisposable

3) реализовывать интерфейс IComparable

4) реализовывать интерфейс IEnumerable

 

9.9

Какие ошибки присутствуют в следующем коде?

public interface IWidget {

void Draw();

}

public interface IControl: IWidget {

void Move(int x, int y);

}

public class Widget: IWidget {

public void Draw() { }

}

public class Control: Widget, IControl {

public void Move(int x, int y) { }

}

(2)

1) В Control не реализован метод Draw()

2) Ошибок нет

3) Нельзя одновременно наследоваться от Widget, который реализует IWidget, и реализовывать IControl, который наследуется от Iwidget

4) Тела методов Move() и Draw() не должны оставаться пустыми

 

9.10

При компиляции проекта, где используется класс, структура, интерфейс или перечисление, помеченное атрибутом Obsolete, произойдет

(2)

1) Произойдет ошибка компиляции, и проект не будет собран

2) Будет выведено предупреждение о том, что данный тип устарел, но сборка будет создана

3) Сборка будет создана, но при запуске произойдет ошибка времени выполнения

4) Атрибут Obsolete никак не влияет на компиляцию

5) Нет нужного варианта ответа

 

9.11

При Binary сериализации объекта widget произойдет

public interface IWidget

{

int Index

{ get;

set;

}

}

[Serializable]

public class Widget: IWidget

{

private int index;

public int Index

{ get { return index; }

set { index = value; }

}

}

// Метод Main()

IWidget widget = new Widget();

widget.Index = 10;

using (FileStream writer = new FileStream("data.dat", FileMode.Truncate))

{

BinaryFormatter serializer = new BinaryFormatter ();

serializer.Serialize(writer, widget);

}

(1)

1) Объект widget будет успешно сериализован

2) Будет вызвано исключение NotSupportedException с сообщением, что нельзя сериализовать интерфейс Iwidget

3) Ошибка времени компиляции: для сериализации нужно использовать не StreamWriter, а только BinaryWriter

4) Ошибка времени исполнения: класс Widget должен быть помечен атрибутом BinarySerializable, а не Serializable

5) Ошибка времени исполнения: интерфейс IWidget должен быть помечен атрибутом Serializable

 

9.12

Укажите строки кода, в которых допущены ошибки

using System;

namespace Inheritance

{

class A { }

interface Inner { }

struct S: A, Inner //1

{

int num = 10; //2

public S() //3

{

}

static S() //4

{

}

}

class Program

{

static void Main(string[] args)

{

S obj = new S(); //5

}

}

}

(1;2;3)

1) 1

2) 2

3) 3

4) 4

5) 5

 

9.13

Укажите, какие методы не скомпилируются:

interface ISample<T> where T: struct

{

T? Get();

}

 

interface ISample2<T> where T: new()

{

T Get();

}

 

//Метод №1

static T? GetData<T>(T? data) where T: struct, ISample<T>

{

if (data == null)

return default(T);

if (data!= null)

return new T();

return data.Get();

}

 

//Метод №2

static T GetData<T>(T data) where T: struct

{

if (data == null)

return default(T);

if (data!= null)

return new T();

return (T)data;

}

 

//Метод №3

static T GetData<T>(T? data) where T: struct, new()

{

if (data == null)

return default(T);

if (data!= null)

return new T();

return (T)data;

}

(4)

1) 1

2) 2

3) 3

4) Все три метода не скомпилируются

5) 2 и 3

6) 1 и 3

 

9.14

Все методы, свойства и события интерфейса в языке C# являются по умолчанию
(1)

1) public
2) private
3) protected
4) internal
5) static

 

9.15

Тип, определяющий набор методов и свойств без реализации, и используемый для определения классов со сходной функциональностью, это

(2)

1) класс

2) интерфейс

3) делегат

4) событие исключение

 

9.16

При определении интерфейса в языке C# используется ключевое слово

(1)

1) interface

2) class

3) struct

4) using

 

9.17

Укажите элементы, которые может содержать интерфейс в языке C#

(1;2;4)

1) методы

2) свойства

3) поля

4) события

 

9.18

Класс может реализовывать

(2)

1)только один интерфейс

2) несколько интерфейсов

3) не более трех интерфейсов

2.19

Наследование интерфейса

(3)

1) запрещено

2) разрешено только от одного интерфейса

3) разрешено множественное наследование интерфейсов

9.20

Ни один интерфейс не может быть описан без (1)

1) Ключевого слова interface

2) Атрибутов

3) Спецификаторов

4) Объявления предков

 

9.21

Выберите правильные утверждения отличия интерфейсов от абстрактных классов (4, 6)

1) Интерфейсы могут иметь члены, наследуемые производным классом, а абстрактные классы – нет.

2) Интерфейсы разрешают создавать непосредственные экземпляры, а абстрактные классы – нет.

3) Абстрактные классы могут иметь сколько угодно классов-предков, а интерфейсы – только один.

4) Абстрактные классы могут иметь как абстрактные члены, так и не абстрактные, когда интерфейсы могут иметь только первые.

5) У них нет отличий – это одно и то же

6) Члены абстрактных классов могут быть защищенными, а члены интерфейсов – только общедоступные.

 

9.22

В своем описании интерфейс может содержать (4)

1) Константы

2) Поля

3) Деструкторы

4) Методы

 

9.23

Укажите компоненты, которые содержит описание данного интерфейса

(1,3,5,6)

public interface IClone: ICloneable

{

void Clone();

}

1) Ключевое слово

2) Атрибут

3) Спецификатор

4) Описание потомка

5) Описание предка

6) Метод

 

9.24

Укажите спецификатор доступа, который по умолчанию имеют элементы интерфейса.

(public)

 

9.25

Если класс имеет в списке предков несколько интерфейсов, должен ли он при этом определять все их методы?

(2)

1) нет

2) да

3) достаточно определить всего один метод

 

9.26

Может ли реализация интерфейса в каком-нибудь классе выполнена частично (без определения некоторых методов интерфейса)?

(3)

1)Да, достаточно определить всего один метод

2) Да, достаточно определить только статические методы

3) Нет

 

9.27

Все методы, которые описаны в интерфейсе, должны быть

(3)

1) Защищенными

2) Закрытыми

3) Открытыми

4) В интерфейсе нельзя описывать методы

 

9.28

Укажите строку, в которой допущена ошибка.

4)

1) public interface ICloni: ICloneable

2) internal interface ICloni: ICloneable

3) protected interface ICloni: ICloneable

4) static interface ICloni: ICloneable

 

9.29

Можно ли создавать экземпляр интерфейса? (1)

1) Нет

2) Да

3) Да, но только если он является предком класса

 

9.30

При обработке данного кода произойдет

protected interface Cloni: ICloneable

{

void Clone()

{

Console.WriteLine("Производится клонирование объектов");

}

}

(2)

1) Будет выдана ошибка: интерфейс не может иметь спецификатор protected

2) Будет выдана ошибка: члены интерфейса не могут иметь определения

3) Будет выдана ошибка: интерфейс не может иметь предков

4) Будет выдана ошибка: в производном интерфейсе нельзя определять новые члены

 

9.31

Тело интерфейса может состоять из

(1,2,4,5)

1) абстрактные методы

2) шаблоны свойств

3) деструкторы

4) индексаторы

5) события

6) поля

 

9.32

Если результат выполнения бинарной операции is равен false, то…

(2)

1) объект можно преобразовать к заданному типу

2) объект нельзя преобразовать к заданному типу

3) объекты принадлежат к разным типам данных

4) объекты нельзя сравнивать между собой

 

9.33

Операции is и as отличаются друг от друга следующим

(3)

1) is преобразовывает объект к заданному типу, а as позволяет узнать, можно ли выполнить такое преобразование

2) is формирует значение null, если преобразование невозможно, а as выдает логическое значение false.

3) as преобразовывает объект к заданному типу, а is позволяет узнать, можно ли выполнить такое преобразование

4) эти операции эквивалентны

 

9.34

Можно ли использовать интерфейс, описанный спецификатором private в качестве базового для интерфейса, описанного спецификатором public? (2)

1) да

2) нет

3) да, если он статический

 

9.35

При переопределении в интерфейсе-потомке элемента из базового класса с такой же сигнатурой для сокрытия элемента базового класса используется спецификатор… (1)

1) new

2) public

3) private

4) abstract

 

9.36

Перебор элементов массива с помощью цикла foreach возможна благодаря тому, что в них реализованы интерфейсы: (2, 4)

1) IComparable

2) IEnumerator

3) ICloneable

4) IEnumerable

5) IGet

6) IComparer

 

9.37

Укажите элемент, который не задается в стандартном интерфейсе IEnumerator (3)

1) Current

2) MoveNext

3) Read

4) Reset

 

9.38

Реализовать объект, поддерживающий интерфейс IDisposable, должен метод (1)

1) Dispose()

2) Clone()

3) Clear()

4) Hide()

9.39

Интерфейс, предназначенный для создания соединения с источником данных

(1)

1) IDbConnection

2) IDbDataAdapter

3) IDbSQLServer

4) IDbCommand

5) IDbDataset

 

Структурные данные

10.1

В качестве параметров классы-прототипы имеют

(1)

1) Типы данных

2) константы

3) функции

4) переменные

 

 

10.2

Напишите название класса, в котором реализуется массив, динамически изменяющий свой размер. (ArrayList)

 

10.3

Выберите элементы, которые нельзя пометить атрибутом.

(6)

1) Классы

2) Методы

3) Структуры

4) Возвращаемые значения

5) Интерфейсы

6) Все перечисленное можно пометить атрибутом

10.4

Перечислите возможности структуры (value-типов).

(1;2;6;7;8)

1) Реализация интерфейсов

2) Boxing и Unboxing

3) Множественное наследование

4) Наследование от классов

5) Переопределение конструктора по умолчанию

6) Определение статического конструктора

7) Определение индексатора

8) Использование событий

10.5

Среди перечисленных конструкций укажите объявление индексатора

(1)

1) string this [int i] {get {return “Name”;}}

2) string Name;

3) string Name {get{return “Name”;}}

4) sting GetName () { return “Name”;}

10.6

После выполнения следующего кода функцией Test() будет возвращено значение

struct C

{

public int i;

}

 

class A

{

Func<int> Closure(C c)

{

return () => c.i + 5;

}

 

public int Test()

{

C v = new C();

v.i = 1;

Func<int> closure = Closure(v);

v.i = 10;

return closure();

}

}

(2)

1) 15

2) 6

3) 10

4) Код не компилируется

10.7

Структуры от классов отличаются следующим

(3)

1) У структур не может быть методов

2) У структур не может быть полей

3) Значения типа структура передаются по значению, а не по ссылке

4) Значения типа структура передаются по ссылке, а не по значению

10.8

Хеш – таблица представляет собой(4)

1) Частный случай однонаправленного списка

2) Конечная совокупность однотипных величин в виде двумерного массива

3) Динамическая структура данных, состоящая из узлов и ребер

4) Массив, доступ к элементам которого осуществляется не по номеру, а по некоторому ключу.

 

10.9

Укажите основные пространства имен, в которых описано большинство классов для работы с абстрактными структурами данных (1,4,5)

1) System.Collections

2) System.Data

3) System.Xml

4) System.Specialized

5) System.Collections.Generic

6) System.Linq

 

10.10

Укажите интерфейс пространства имен System.Collections, который поддерживает методы удаления, добавления и индексирования элементов в списке объектов (2)

1) IDictionary

2) IList

3) IHashCodeProvider

4) IDictionaryEnumerator

 

10.11

Коллекция ArrayList представляет из себя (4)

1) Компактный массив для хранения битовых значений

2) Хеш-таблицу

3) Очередь

4) Массив, динамически изменяющий свой размер

 

10.12

Доступ к элементам коллекции SortedList осуществляется (3)

1) По индексу

2) По ключу

3) По ключу или по индексу

4) К элементам данной коллекции доступ запрещен по определению

 

10.13

Элемент Add класса ArrayList является (1)

1) Методом

2) Свойством

3) Событием

4) Полем

 

10.14

В параметризованной коллекции, для которой объявлен определенный тип элементов, можно хранить (2)

1) элементы любых классов

2) элементы базового и производных классов

3) только элементы базового класса

4) в коллекциях нельзя хранить элементы, так как коллекции абстрактны

 

10.15

Укажите интерфейсы в пространстве имен System.Collections, которые предоставляют базовые функциональные возможности для коллекций (2,4,5)

1) IComparable

2) IEnumerable

3) ICloneable

4) ICollection

5) IList

6) IComparer

10.16

Для реализации обратных вызовов в.NET применяются

(1)

1) делегаты

2) события

3) структуры

4) индексаторы

5) свойства

10.17

Для объявления делегата используется следующий синтаксис

(1)

1) delegate тип делегат(аргументы);

2) тип делегат(аргументы);

3) тип делегат(аргументы) as delegate;

10.18

Тип, определяющий набор методов и свойств без реализации, и используемый для определения классов со сходной функциональностью, это

(2)

1) класс

2) интерфейс

3) делегат

4) событие

5) структура

10.19

Ссылочным типом данных в С# не является тип
(2)
1) Классы
2) Структуры
3) Делегаты
4) Интерфейсы

10.20

После ключевого слова using необходимо указывать

(3)

1) Объект

2) Класс

3) Пространство имён

4) Структуру

10.21

Значения перечислений должны иметь тип

(2)

1) int

2) char

3) string

4) decimal

10.22

Выберите правильные объявления метода с корректным использованием ключевого слова params:

(2;4)

1) public void Foo(params double[] array, double valume) { }

2) public void Foo(double volume, params double[] array) { }

3) public void Foo(params int[] intArray, params double[] doubleArray) { }

4) public void Foo(params double[] array) { }

5) public void Foo(params object[] objectArray, params int[] intArray) { }

10.23

Чем отличается перечисление State от перечисления StateFlags, помеченного атрибутом Flags, и что будет выведено на консоль при выполнении следующего кода:

public enum State

{

ToolBox,

Menu,

StatusBar

}

[Flags]

public enum StateFlags

{

ToolBox,

Menu,

StatusBar

}

class Program

{

static void Main(string[] args)

{

Console.WriteLine(State.Menu | State.StatusBar);

Console.WriteLine(StateFlags.Menu | StateFlags.StatusBar);

}

}

(3)

1) Будет выведено «3» и «3». StateFlags и State в любом случае нельзя использовать как битовые поля

2) Будет выведено «Menu, StatusBar» и «Menu, StatusBar». Как State, так и StateFlags можно использовать как битовые поля

3) Будет выведено «3» и «Menu, StatusBar». Только перечисления, помеченные атрибутом Flags, можно использовать как битовые поля

4) Будет выведено «Menu, StatusBar» и «3». StateFlags нельзя использовать как битовое поле, в отличие от State

5) Код не откомпилируется

10.24

Для того чтобы код успешно скомпилировался, необходимо удалить строки

struct My

{

int x = 20; // 1

double y; // 2

public static int z = 100; // 3

}

(1)

1) 1

2) 2

3) 3

10.25



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: