May 23, 2018

Программирование (Объектно-ориентированное программирование (Язык C#)

Программирование (Объектно-ориентированное программирование (Язык C#)

1.​ Что является точкой входа в программу на языке C#?

Статическая процедура Main() или класс, содержащий статическую процедуру с именем Main. В любом случае, main() точно должен присутствовать.

2.​ Что отличает консольное приложение на языке C# от приложения Windows Forms?

Например, не используется библиотека System.Windows.Forms, отстуствует GUI. Ну чем ДОС отличается от винды, йопт.

3.​ Какое имя логического типа данных может использоваться в программах C#?

System.Boolean или bool, скорее всего bool.

4.​ Что возвращает оператор new в языке C#?

Ссылку на созданный объект, или участок памяти с новым объектом или как-то так.

5.​ Что означает ключевое слово this в языке C#?

Ключевое слово this ссылается на текущий экземпляр класса, а также используется в качестве модификатора первого параметра метода расширения (вторая часть предложения не ясна и вряд ли будет).

6.​ Каким будет значение p1.X после выполнения следующего кода C#?

Point p1 = new Point (10,10); Point p2 = p1; p2.X =26;

10

7.​ Каким действием можно освободить память приложения от конкретного экземпляра класса C#?

Присвоить объекту значение NULL или воспользоваться методом Dispose(), скорее всего второе

8.​ Каким образом можно передать аргументы x, y из конструктора конструктору базового класса в С#?

С помощью ключевого слова base:

MyClass(x,y):base(x,y){...}

9.​ Какой оператор цикла отсутствует в языке С#?

Присутствуют:

for

foreach

do while (возможно по отдельности или вместе )

10.​ Какое отличие структуры от класса в С#?

Главные отличия – не участвуют в наследовании, не имеют ссылочной семантики (то есть передаются по значению а не по ссылке )

11.​ Сколько аргументов должен получать конструктор структуры языка С#?

Конструктор по умолчанию – ни одного, остальные – сколько угодно.

12.​ Какое выражение создаёт экземпляр (объект) класса X на языке C#?

X var = new X (…);

13.​ Каков размер переменной типа float в языке C#?

32 бита или 4 байта

14.​ Какой метод не входит в состав класса object в языке C#?

Входят:

Equals

Finalize

GetHashCode

GetType

MemberwiseClone

ReferenceEquals

ToString

15.​ Каков доступ по умолчанию к полям структуры (struct) в языке C#?

private - сомнительно

16.​ Для чего не используется ключевое слово this в языке C#?

Используется оно:

- Для квалификации элементов, скрытых одинаковыми именами

- Для передачи другим методам объекта в качестве параметра

- Для объявления индексаторов

Возможно не используется для обращения к статическим функциям-членам

17.​ С помощью какого модификатора в языке C# можно переопределить виртуальную функцию в производном классе?

override

18.​ Какое свойство характеризует абстрактный класс в языке C#?

Создавать экземпляры абстрактного класса нельзя. Абстрактный класс в объектно-ориентированном программировании — класс, содержащий хотя бы один абстрактный метод. Абстрактный метод не реализуется для класса, в котором описан, однако должен быть реализован для его неабстрактных потомков.

19.​ Чем интерфейс отличается от класса в языке C#?

Интерфейс - это частный случай класса. Интерфейс представляет собой полностью абстрактный класс, все методы которого абстрактны. В отличие от класса интерфейс не может содержать полей.

20. Что означает ключевое слово try в языке C#?

Инструкция try-catch состоит из блока try, за которым следует одно или несколько предложений catch, в которых определяются обработчики для различных исключений.

Блок try содержит защищаемый код, в котором могут происходить исключения.

21.​ Возможен ли в языке C# доступ в методе производного класса к унаследованным из базового класса полям?

Из производного класса можно получить доступ к открытым ( public ), защищенным ( protected ), внутренним ( internal ) и защищенным внутренним ( protected internal ) членам базового класса. Хотя производный класс и наследует закрытые члены базового класса, он не может получить доступ к этим членам. Однако все эти закрытые члены все же присутствуют в производном классе и могут выполнять ту же работу, что и в самом базовом классе.

22.​ Какой тип объекта ошибки может передаваться оператору throw в языке C#?

Любые типы исключения, наследуемые от класса System.Exception

23.​ Что произойдёт, если не будет найден обработчик для сгенерированного программой исключения?

Произойдет подъем по стеку вызовов, и поиск обработчиков в методе, вызвавшем метод, который выкинул исключение. Если и в нём нет, тогда поиск будет подниматься всё выше и выше, пока не дойдёт до процедуры Main(). Если и там нет, то активируется стандантный обработчик, прерывающий работу программы с соответствующим сообщением.

Если проще – вызовется системный обработчик, программа выдаст окно с ошибкой.

24.​ Можно ли использовать указатели в программах на языке C#?

Только в блоках небезопасного кода.

25.​ В каком случае через ссылку на объект класса С# доступен для вызова метод ToString?

Скорее всего если ссылка инициализирована ( не NULL ).

26.​ Если формальный аргумент метода объявлен как экземпляр класса X, то какого типа в языке C# может быть фактический аргумент при вызове метода?

По идее – X, или наследуемый от него.

27.​ Можно ли передать доступ к некоторой структуре в вызываемый метод по ссылке?

Да, если использовать ключевое слово ref.

28.​ Какие данные не относятся к пользовательским типам языка C# (то есть, к типам, определяемым программистами)?

Относятся:

byte

sbyte

int

uint

short

ushort

long

ulong

float

double

char

bool

object

string

decimal

29.​ Если присваивание переменных x = y допустимо, то допустимо ли обратное присваивание в языке C#?

Если присваиваем значимый тип - всегда, иначе только если y и x - объекты одного класса, либо в классе x указано неявное приведение к y.

30.​ Для каких типов данных в языке C# базовым является тип object?

Для всех.

31.​ Какой тип не относится к ссылочным типам языка C#?

Относятся:

class

interface

delegate

dynamic

object

string

Скорее всего правильным ответом будет struct – структура или int, float, double...

32.​ При каком условии возможно без явных преобразований присваивание y = x в языке C#?

Если одинаковые типы или класс y - базовый для x( x – потомок y ) или в классе x указано неявное приведение к y.

33.​ Если метод вызывается в языке C# через ссылочную переменную, каким он может быть?

Любым, кроме статического

34.​ На каком уровне можно объявлять именованный метод в языке C#?

На уровне класса

35.​ Что задаёт ключевое слово ref в языке C#?

Передача параметров по ссылке

36.​ Где могут использоваться статические поля классов в языке C#?

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

37.​ Какие права доступа задают модификаторы доступа internal и protected в языке C#?

internal - переменная доступна из модуля текущего проекта (сборки), классы могут быть не родственны

protected - доступ из текущего класса и его потомков

38.​ Что делает оператор % в языке C#?

Операция "%" определена над всеми арифметическими типами и возвращает остаток от деления нацело.

39.​ Укажите корректный способ объявления переменной массива в C#.

int[] array3;

array3 = new int[] { 1, 3, 5, 7, 9 };

40.​ Какая операция в языке C# доступна только в блоках небезопасного кода?

Арифметические операции с указателями (* и &).

41.​ Что будет выведено при выполнении следующего кода C#?

int a = 511; byte b = 7; b = a + 5; Console.WriteLine(b);

Он не скомпилируется - a и b разной размерности,

42.​ Какое ограничение накладывается в языке C# на метод - обработчик события?

Должно быть 2 аргумента - object (ссылка на вызвавший объект) и тип (либо производный от него) EventArgs, возвращает void, например void OnClick(object ob, EventArgs e)

43.​ Какой код в C# корректно создаст экземпляр класса X и ссылающуюся на него переменную x?

X x = new X(…);

44.​ Могут ли в языке C# использоваться указатели?

Только в небезопасном unsafe коде.

45.​ Какое ключевое слово в языке C# не относится к модификаторам переменных?

Относятся:

static

,

readonly

const

46. Что задаёт ключевое слово out в языке C#?

Аргумент, передаваемый через out, допускается не инициализировать; out рассчитан на получение результатов.

47.​ Какое ключевое слово в С# не относится к механизму обработки исключительных ситуаций?

Относятся:

try

catch

throw

finally

48.​ Каким образом можно вызвать статический public метод класса X в языке C#?

X.MyStaticPublicMethod();

49.​ Что задаёт ключевое слово default в языке C#?

Ключевое слово default может использоваться в инструкции switch или в универсальном коде:

Инструкция switch: определяет метку по умолчанию.

Универсальный код: определяет значение параметра типа по умолчанию. Это будет значение NULL для ссылочных типов и ноль для типов значения.

50.​ Какое ключевое слово в C# не относится к модификаторам прав доступа?

Относятся:

public

private

internal

protected

51.​ Как присвоить значение переменной b типа bool переменной n типа int?

В C# не существует преобразования между типом bool и другими типами. Но можно воспользоваться тем, что значение false эквивалентно нулю, а значение true — ненулевым значениям.

52.​ Где используется в языке C# ключевое слово value?

Value - значение, передаваемое как аргумент в свойствах внутри акцессора set

53.​ В каком контексте в C# используется ключевое слово continue?

Переход к следующей итерации цикла (в цикле)

54.​ Экземпляры каких типов могут быть элементами стандартных массивов языка C#?

Не могут быть экземпляры статических типов, делегатов (это не тип) и пр. ключевых слов

55.​ Что задаёт оператор catch в языке C#?

Обработчик исключения.

Инструкция try-catch состоит из блока try, за которым следует одно или несколько предложений catch, в которых определяются обработчики для различных исключений. При возникновении исключения среда CLR ищет оператор catch, который обрабатывает это исключение. Если выполняющийся в данный момент метод не содержит такого блока catch, то среда CLR рассматривает метод, который вызвал текущий метод, и т. д. по стеку вызовов. Если блок catch не найден, то среда CLR отображает пользователю сообщение о необработанном исключении и останавливает выполнение программы.