Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Сколько родительских классов может иметь производный класс?
Не больше двух 5 v Всегда один ® Любое количество Не больше одного
Что выведет на экран код:
static void Main() {
if (false)
{
int i = 1;
>
int i = 2;
Console.Writ e L i ne(i);
® v Код не скомпилируется
public abstract class A {
public string PublicPrintO { return Print Oj
>
protected virtual string Print() { return "A";
>
>
public class В : A { > public class С : В {
protected override string Print() { return "C";
>
>
Каков будет результат при выполнении следующего кода:
А ас = new С();
Console.WriteLine(ас.PublicPrint());
D У с
А
Ошибка компиляции
§) Ошибка выполнения
Ж Какими способами из перечисленных может быть перегружен метод в С#
П другой тип возвращаемого значения 0 другое имя метода [71 v другой тип параметров О v' другое количество параметров
V Скомпилируется ли следующий код?
public class CustomConvertor {
public static string ToDate(out this DateTime dt) {
return dt.ToShortDateString();
>
|>
Да
® ✓ Нет
Пояснение: He будет работать.
К Возможно ли иметь/создать статический индексатор в С#?
: ✓ Нет
® Да
#region Constructor
public Name(string name) {
this.Name = name;
}
#endregion
#region Properties
/*!*/ public string Name {
private set; get;
>
#endregion
#region Methods
static void Main(string[] args) {
/*2*/ Name n = new Name("Helo Wrold");
/*3*/ n.Dispose(); // освобождаем память.
>
#endregion >
>
I I Комментарии вида /* */ недопустимы
3 ^ Строка ГУ I Класс Name не может содержать свойство Name 0 Строка Г2*1 : ошибки в фразе "Helo Wrold" 3 * Строка ГУ! - вызов Dispose для переменной п невозможен.
' Что напечатает данный код:
class Test {
static void increment (int p) {
++p;
>
static void Main( ) {
int x = 8;
increment (x);
Операторы и операци
Console. Write Line (x++) ;
У
}
4011 / 7731
2425 / 7731
® v 8 9
10
858 / 7731
424 / 7731
Код не скомпилируется
Пояснение: Параметр х передается в метод по значению. Сначала произойдет вывод значения, а потом инкремент, таи как в данном случае используется постфиксный оператор
Ж Что напечатает следующий код:
int sum = в;
for (int i = 0; i < 3; i++) {
sum += i;
j >
Console.WriteLine("Sum of " + i + " numbers is " + sum);
(§) Sum of 3 numbers is 3 Sum of 2 numbers is 3 Sum of 3 numbers is 6 v Возникнет ошибка компиляции
Возникнет ошибка времени выполнения
Для инкапсуляции вы хотите определить автосвойство так, чтобы невозможно было вызвать сеттер Общие понятия за пределами класса, но геттер оставить доступным. В каком из заданных вариантов описано нужное свойство?
public int Value { get; set; } 86 / 4756
© v public int Value { get; private set; } 3260 / 4756
int Value { public get; private set; } 654 / 4756
private int Value { public get; set; } 299 / 4756
public int Value { get; } 434 / 4756
Что будет выведено на экран?
class Test {
static void Main(string[] args) {
int i = 1;
Console. WriteLine("i = {0}", i++);
>
® ✓ i = 1 i =2 i={0}1 i={0}2
код не скомпилируется
К Что будет выведено на консоль в результате выполнения следующего кода:
namespace ConsoleApplicationl t
class Program
|
static void Main(string[] args) {
Console. Write (Test. Foo (1) +Test. Foo ( 2)*Test. Foo ( 3) ) j Console.ReadLine();
}
>
class Test {
public static int Foo(int o) {
Console.Write(o); return o;
}
>
}
2317 ; ✓ 1237 3217
•<э Возникнет ошибка компиляции, тип int нужно привести к строке
К В каких строках кода допущены ошибки?
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
}
>
;>
И v 1 □>i 0 v з
0 4
И 5
Каким ключевым словом объявляется запечатанный класс (тот, который нельзя наследовать)?
Ваш ответ: (private 1
Правильные ответы: sealed
К Что напечатает следующий код:
static bool Method10
Console.WriteLine("in Method1"); return false;
static bool Method2()
Console.WriteLine("in Method2"); return true;
static void Main(string[] args)
if (Method!() & Method2()) {
Console.WriteLine("inside if");
>
J }
in Methodl in Method2
in Methodl in Method2 inside if
in Methodl
18 Какие из определений для абстрактных классов в С# являются корректными? Классы и объекты
В] |
В абстрактных классах нельзя определять поля |
1527 / 9144 |
□ |
Абстрактные классы не могут наследовать интерфейсы |
1355 / 9144 |
□ |
Абстрактные классы нельзя наследовать |
1030 / 9144 |
Пояснение: Нельзя создавать экземпляр абстрактного класса по определению абстрактного класса, Абстрактный класс может включать как абстрактные члены так и виртуальные - это не запрещено.
public abstract class A {
public string PublicPrint() { return Print();
>
protected virtual string Print() { return "A"j
>
}
public class В : A { } public class С : В {
protected override string Print() { return "C"j
>
|>
Каков будет результат при выполнении следующего кода
А ас = new С();
Console.WriteLine(ас.PublicPrint());
® V С
Ошибка выполнения Ошибка компиляции
К Какими способами правильно инициализировать двумерный массив? (Выберите все верные ^ варианты)
[71 ✓ int[,]k = {{2,-2},{3,-22},{0,4}}
Пояснение: int k[][] = new int [2][3], int[][] к = new int [2][3], int k[,] = new int [2,3] - неправильное объявление массива; int[][] к = new int[2][] - объявление ступенчатого массива, а не инициализация.
Что напечатает следующий код:
public static void Main() {
Int32 v = 5; Object о « vj v = 123;
Console.WriteLine(v + " + (Int32) o);
>
Возникнет ошибка приведения типов 123, 123 ® ✓ 123, 5 5,5
Скомпилируете» ли данный код?
internal sealed class SomeGenericClass<T> {
public static T SomeMethod() {
return new T();
>
|>
® да 3138 / 8650
V ✓ нет 5486 / 8650
Классы и объею
Пояснение: He (компилируется, т.к не указано ограничение (происходит вызов открытого конструктора без параметров, но не у всех ссылочных типов он есть). Для того, чтобы код (компилировался необходимо добавить ограничение, например:
Скомпилируется ли следующий фрагмент кода:
private void GetValues(int a,int b, out int c,out int d) {
d ■ с - a; с ■ a + b;
>
private void SomeMethod() {
int a; int b;
GetValues(l, 2, out a, out b);
|) _
Да
® ^ Нет
Пояснение: He скомпилируется, поскольку переменная с в выражении d - с - а должна быть сначала проинициализирована
К Как могут инициализироваться readonly поля экземпляра класса?
Г~1 с помощью свойств Г71 ✓ при объявлении
в instance методах в статических методах | | v в конструкторе Комментировать вопрос (всего: 1)
(^компилируется ли следующий код (как часть некоторого метода):
string[] str = new string[5]; try
str[4] = "anything"; catch (Exception e)
Console.Write Line(e.Message); catch (IndexOutOfRangeException e) Console.Write Line(e. Message);
® V Нет Да
Что будет выведено на консоль после выполнения следующего кода
static public void Main(string[] args)
{
int i = 1в;
string s = "Hello, world";
Console. WriteLine("i = " + i); Modifylnt(i);
Console. WriteLine("i = " + i);
Console. WriteLine("s = " + s);
ModifyString(s);
Console. WriteLine("s = " + s);
}
static void Modifylnt ( int i) {
i = 99;
}
static void ModifyString(string s) {
s = "Hello, I' ve been modified.";
}
f = 10
i = 10
s = Heto, world s = Heto, I've been modified.
® i -10 i = 99
s = Heto, world s = Heto, I've been modified.
✓ i = Ю i = 10
s = Heto, world s = Heto. world
i Какой будет результат компиляции и выполнения данного кода:
public static void Main(string[] args) {
int k = 1;
Console.WriteLine(k++ + ++k);
>
5 ^ 4 ® 5 2 3
public event Action C;
>
public static class Program {
public static void Main() {
Foo foo = new Foo();
foo.A += () => { }j // 1 foo.A(); // 2
foo.В += () => { }; 11 3 foo.BQj // 4
foo.С += () => { >; It 5 foo.CQ; // б
>
>
Г~1 Код компилируется успешно, в нём нет ошибок 0 1
ЙГ 2
0^3
ГГ 4
0 5
□ V 6
Ж Что выведет данный код?
static void Main(string[] args) {
string s; {
int s = 10;
Console.WriteLine(s);
>
l>
® 10
Пустую строку v Код не скомпилируется
Код скомпилируется, но во время исполнения возникнет Exception
К В какой кодировке хранятся символьные (char) переменные в С#?
✓ UTF-16 Windows1251 Win1252 UTF-4 KOI-8
' Каким будет результат выражения
(х == 5) && ((у == 8) && !(х == у))
если х и у предварительно объявлены как:
int х = 5; int у = 8;
® v true false
в выражении допущена синтаксическая ошибка 1 О
Можно ли разместить объекты разных типов в массиве (System.Array)?
®Vfla нет
К Укажите все правильные способы объявления массива в результате которых массив будет корректно инициализирован
[71 int[4] someArray; П У int[] someArray = new int[] {1,2,3,4};
Г71 V int[] someArray = new int[4] {1,2,3,4}; [71 int someArray[] - new int[4];
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
>
}
>
0 V 1 □ 2 □ ✓ 3 0 4 0 5
IS Что напечатает следующий код:
int sum = 0;
for (int i = 0; i < 3; i++) {
sum += i;
>
Console.WriteLine("Sum of " + i + " numbers is " + sum);
(§) Sum of 3 numbers is 3 Sum of 2 numbers is 3 Sum of 3 numbers is 6 ✓ Возникнет ошибка компиляции
Возникнет ошибка времени выполнения Комментировать вопрос (всего: 8)
* Отметьте все верные утверждения о классе SomeClass:
internal sealed class SomeClass {
public void SomeMethod() {
>
| >
G SomeClass является значимым типом (value-type) 387 / 8369
Пояснение: 1) SomeClass неявно наследует System.Object
Классы и объекты
К Выберите верные утверждения на счет наследования в С#
0 Класс может наследовать сколько угодно реализаций
0 Класс может наследовать только один интерфейс
Данный код скомпилируете успешно (как часть некоторого метода):
try
Console.WriteLine("TRY" ); throw new Exception("EXCEPTION");
catch (Exception)
Console.WriteLine("CATCH");
Нет ® v да
К Что напечатает следующий код:
static bool Methodic) {
Console.WriteLine("in Met hod1"); return false;
>
static bool Method2() {
Console.WriteLine("in Method2"); return true;
>
static void Main(string[] args) {
if (Methodl() && Method2()) {
Console.WriteLine("inside if");
>
>
® in Methodl in Method2
in Methodl in Method2 inside if
: v in Methodl
Пояснение: Правый операнд оператора ftft не нуждается в вычислении, так как Methodl вернул false.
К Выберите успешно компилируемые строки:
int i = "s"; //1
object о = 5; //2
object o2 = "123"; //3
object o3 = delegate() { return 0; > //4
Delegate d = delegate() { return 0; > //5 1
0^2
К Скомпилируете ли следующий код (как часть некоторого метода):
ArrayList list = new ArrayList()j list .Add(new ObjectO); list.Add(new Exception()); list.Add(new Random().Next(10))j list.Add(new ArrayList())j
✓ Да
@ Нет
К Два последовательных вызова GetHashCode у одного и того же объекта должны возвращать одно и то же значение.
5 * Да 15
@ Нет 3
Комментировать вопрос (всего: 4) Автс
* Какие строки приведут к ошибке компилляции этого кода если он является частью метода?
int jc = 1;
switch (k) {
case 6: //\
case 1: Console.WriteLine("Case Iм); //2 case 2: //3
default: Console.WriteLine("Default"); //4
>
0 1 235/677
Пояснение: 2. ВСЯ в конструкции switch не допускается проход (fall through) в следующий раздел без операторов goto case или goto default. В конце каждого раздела требуется наличие оператора break или другой передачи управления (return, throw, continue). Исключением являются пустые разделы (как 1 и 3). 4. Эти правила также относятся и к последнему разделу.
К в определении каких методов класса допущены ошибки?
public class Foo
{
public void Ml(int[] pi, int[] p2) { > public void N2(int[] plj params int[] p2) { } public void M3(params int[] pi, int[] p2) { } public void pa rams int[] pi, params int p2) { >
>
Пояснение: После параметра с ключевым словом params, дополнительные параметры не допускаются. Не допускается использование ключевого слова params в объявлении метода более одного раза http://msdn.microsoft.com/ru-ru/library/w5zay9db(VS.90).aspx
К Может л и этот тест пройти?
var а = new А();
a.GetType().GetField("B"] a.GetType().GetField("С";
Assert.Equal(a.b, a.c);
* ^ Да (§) нет
Пояснение: Может, если А • структура
>.SetValue(a, 83); ) .SetValue(a, 42);
К Какие из определений для абстрактных классов в С# являются корректными? классы i
Пояснение: Нельзя создавать экземпляр абстрактного класса по определению абстрактного класса, Абстрактный класс может включать как абстрактные члены так и виртуальные • это не запрещено.
К Какой конструктор называют конструктором типа?
■ ^ конструктор, отмеченный модификатором static ® конструктор, отмеченный модификатором internal конструктор, отмеченный модификатором protected конструктор, отмеченный модификатором private
конструктор, который не определяется явно - его J IT компилятор объявляет самостоятельно
К Укажите корректные примеры использования ключевого слова var для автоматического вывода типов:
0 У var mylNt = 1; 0 var dontKnowType;
Пояснение: Смотрим no правой части где явно можно вывести тип
Что будет выведено на экран?
class Test {
static void Main(string[] args) {
int i = 1;
Console.WriteLine("i = {0}", i++)j
>
I >
j V i = 1
i Щ 2 = {0}1 = {0}2 код не скомпилируется
public abstract class A
public virtual string Print(){return "A"j}
public class B:A
public virtual new string Print(){return "B";}
public class C:B
public override string Print(){return "C";}
Каков будет результат при выполнении следующего кода:
А ас = new С();
Console.WriteLine(ac.Print());
О A В
С
® Ошибка компиляции
К Будет ли компилироваться данный фрагмент кода?
try
{
FileStream F = new FileStream("myfile.txt"); string s = F.ReadLine();
>
catch (IOException) { >
finally
{
F.CloseQ;
| >
® Да j ' Нет
Пояснение: Компилятор ругнется на то, что переменная F не определена в месте вызова F.Closef)
* Чем отличаются следующие объявления переменной: 1.
doublet,] myDoubles;
2.
double[][] myOoubles;
v в первом случае объявляется обыкновенный двумерный массив. Во втором случае объявляется "рваный массив", т.е. массив массивов, где каждая строк массива может иметь свою длину. 522 / 7
(3) в первом случае объявляется "рваный массив", т.е. массив массивов, где каждая строка массива может иметь свою длину. Во втором случае объявляете обыкновенный двумерный массив. 63/7
Ничем не отличаются. 104 / 7
В первом случае объявление двумерного массива. Во втором трехмерного. 9/7
* Среди перечисленных конструкций С# укажите объявление метода
(§) string this [int i] {get {return "Name";}} string Name {get{return "Name";}} string Name; v sting GetName () {return "Name";} Комментировать вопрос (всего: 4)
К Что выведет на экран данный код?
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";
>
>
b
(3) in finally Somewhere in finally
Ошибка при компиляции
Э v in finally Original string
Original string
using System;
namespace Q {
class Name {
public string A {
private set; get;
>
private string В
{
public set; public get;
>
private string x;
public string С {
get { return x.ToString(); >
>
public string D {
set { x = value; > private get;
>
>
| >
0 ✓ С
К Что выведется на консоль:
using System;
class MainClass {
static void Main() {
int? i = null;
Console.WriteLine(i ?? Convert.Tolnt32(i.HasValue));
>
>
@ Код не скомпилируется
Код выдаст исключение NullReferenceException null j v О
Комментировать вопрос (всего: 1)
к
public abstract class A
public virtual string Print() { return "A"; }
Dublic class В : A
public override new string Print() { return "B"; }
public class С : В
public string Print() { return "C"; }
Каков будет результат при выполнении следующего кода:
А ас = new С();
Console.WriteLine(ac.Print());
(§) А 84/5
В 73/5
С 163/5
v Ошибка компиляции 235 / 5
Пояснение: Совместное использование модификатора new и модификатора переопределения в одном члене является недопустимым, поскольку два
Что будет выведено на консоль в результате выполнения следующего кода:
nanespace ConsoleApplicationl {
class Program
{
static void Main(string[] args) {
Console.Write(Test.Foo(l)+Test.Foo(2)*Test.Foo(3)); Console.ReadLine();
>
>
class Test {
public static int Foo(int o)
{
Console.Write(o); return o;
>
>
2317 V 1237 3217
Возникнет ошибка компиляции, тип int нужно привести к строке
Какое ключевое слово используется для прекращения выполнения конструкций switch, for, while?
Ваш ответ: (break Правильные ответы: break
Согласны ли вы с утверждением: у каждого объекта есть метод Finalize, который вызывается у этого объекта классы и объекты при сборке мусора?
Да 3837 / 8707
@ V Нет 4858 / 8707
Пояснение: В классе System. Object определён метод Finalize, но CLR его игнорирует, поэтому объекты всех классов, производных от Object (только если в них явно не определён метод Finalize), не считаются подлежащими завершению, т.е. метод Finalize при сборке мусора не вызывается для объектов этих классов.
К Что из перечисленного верно:
Что напечатает следующий код:
static bool Methodic)
{
Console.WriteLine("in Methodl"); return false;
>
static bool Method2() {
Console.WriteLine("in Method2"); return true;
}
static void Main(string[] args) \i
if (Methodl() & Method2Q) {
Console.WriteLine("inside if");
>
>
® * in Methodl in Method2
in Methodl in Method2 inside if
in Methodl
Скомпилируется ли следующий код:
class Program
{
private static int i;
static Program(int a)
{
this.i ■ a;
Console.WriteLine("In static constructor");
>
static void Main(string[] args) { >
§> Да Г v Нет
Скомпилируете ли данный фрагмент кода успешно?
private int GetID (string inputText) {
if (inputText != "")
return 1; else if (inputText == "") return 0;
| >
® Да Э v нет
^ Что произойдет в результате выполнения следующего кода:
class Test {
static void Main(string[] args) {
char[] vowels = {'a'j'e'j'i'j'o'j'u'}; for (int i = 1; i <= vowels.Length; i++) Console.Write(vowels[i] + " ");
>
>
a e i о u e iou
Возникнет ошибка компиляции a e i о
® ^ Код напечатает "e i о u", а дальше уже возникает ошибка времени выполнения 1
Пояснение: Нумерация элементов массива начинается с О. Для обхода всех символов массива необходимо организовать цикл таким образом: for (int i = 0; i < vowels.Length; i++) (строго меньше vowels.Length).
Масси!
В данном же случае возникнет ошибка IndexOutOfRangeException.
Что будет выведено на консоль в результате выполнения следующего кода:
namespace ConsoleApplicationl {
class Program
{
static void Main(string[] args) {
Console.Write(Test.Foo(l)+Test.Foo(2)*Test.Foo(3)); Console.Read L i ne();
>
>
class Test
{
public static int Foo(int o)
{
Console.Write(o); return o;
>
>
>
2317 D У 1237 3217
(§) Возникнет ошибка компиляции, тип int нужно привести к строке
^ В какой строке кода допущена ошибка:
int а = 0; int b ■ 1; if (а == b) а = а; if (a) b = а;
в третьей: нельзя присвоить переменной ее же значение @ ✓ в четвертой: условие должно возвращать логическое значение в этом коде нет ошибок
К Укажите имя класса, от которого наследуются все исключения.
Ваш ответ: (d
Правильные ответы: Exception,System.Exception public abstract class A {
public string PublicPrintO { return Print();
>
protected virtual string Print() { return "A";
>
>
public class В : A { } public class С : В {
protected override string Print() { return "C";
>
>
Каков будет результат при выполнении следующего кода:
А ас = new С();
Console.WriteLine(ас.PublicPrint());
© А ® / С
Ошибка выполнения
Ошибка компиляции
Какие действия необходимо и достаточно выполнить для того, чтобы программа компилировалась?
nanespace Test {
class TypeA {
class Туреб:TypeA {
public override void HethodA() { Console, wit eLine ( "ТуреБ" )j }
}
public virtual void HethodAQ { Console.writetine( "TypeA" )j }
class Program
{
static void tein(string[] args) {
туреА a = пей туреА(); TypeB b = леи TypeB();
}
}
}
Добавить в начале программы строчку "using ТуреА" ничего изменять не надо, программа и так компилируется Изменить модификатор доступа класса ТуреА на public □ v Изменить модификатор доступа класса ТуреВ на public
] v Изменить строчку "ТуреВ b = new ТуреВ ();" на "TypeA.TypeB b = new ТуреА. ТуреВ();"
* Что выведет данный код?
static void Main(string[] args) {
string s;
{
int s = 10;
Console.WriteLine(s);
>
>
Пустую строку ® 10 . v код не скомпилируете
Код скомпилируете, но во время исполнения возникнет Exception
* Скомпилируется ли следующий код (как часть некоторого метода):
string[] str = new string[5]; try
str[4] = "anything"; catch (Exception e)
Console.WriteLine(e.Message); catch (IndexOutOfRangeException e) Console.WriteLine(e.Message);
I f Нет ® Да
Пояснение: Код не компилируется.
Обработка исключений должна идти в восходящем порядке по иерархии исключений (от классов-детей к суперклассам).
Что будет напечатано в результате выполнения следующего кода?
class Program {
class А {
public virtual void Print() {
Console. WriteLine ("A: : Print");
}
}
class В : A {
public override void Print() {
Console. WriteLine ( " В: : Print" ) ;
}
}
class С : В {
public new void Print() { base.Print();
Console. WriteLine ( " С: : Print" ) ;
static void Main(string[] args) { A a s new A(); A b = new B(); Acs new C();
Console.ReadKcy();
}
}
Какие типы данных используются для хранения значений с плавающей запятой?
0 decimal (Decimal) 0 У float (Single)
Пояснение: float - является вещественным типом данных для хранения 32-bit значений и предназначен для хранения дробных чисел double - является вещественным типом данных для хранения 64-bit значений и также предназначен для хранения дробных чисел
шкоитмплоатк onnrw (огагп-
Согласны ли вы с утверждением: у каждого объекта есть метод Finalize, который вызывается у этого объекта при сборке мусора?
® * Нет Да
Что будет выведено на экран?
class Test {
static void Main(string[] args) {
int i = 1;
Console.WriteLine("i = {0}"., i++);
I > <§> У
>
= 1 = 2 = {0}1 = {0}2 код не скомпилируется
к
public abstract class A
public virtual string Print() { return "A"; }
public class В : A
public override new string Print() { return "B"; }
public class С : В
public string Print() { return "C"; }
Каков будет результат при выполнении следующего кода:
А ас = new С();
Console.WriteLine(ас.Print());
А 83
® В 73
С 162
© У Ошибка компиляции 235
Пояснение: Совместное использование модификатора new и модификатора переопределения в одном члене является недопустимым, поскольку два модификатора имеют взаимоисключающие значения.
К Что будет выведено на консоль при выполнении этого кода:
using System;
using System.Collections.ObjectModel;
using ByteCollectionl = System.Collections.ObjectModel.Collection<byte>;
namespace CollectionApplication {
class Program
{
class ByteCollection2 : Collection<byte> { >
static void Main(string[] args) {
Console.WriteLine(typeof(ByteCollectionl) == typeof(Collection<byte>)); Console.WriteLine(typeof(ByteCollection2) == typeof(Collection<byte>));
>
>
False
True
® True True
False
False
Возникнет ошибка компиляции
Э v True False
Можно ли объявить глобальную функцию в программе на С#?
Да
<§) ^ Нет
Я Каким будет результат выражения
(х == 5) && ((у == 8) && !(х == у))
если х и у предварительно объявлены как:
int х = 5; int у = 8;
" v true false
(3) в выражении допущена синтаксическая ошибка 1 О
ivoiwim npaonyiortv; ии омо/icn роииприплцпл Mciu^i
using System;
public static class stringExtension
{
public static string Reverse(super string s)
{
char(] msv s s.ToCharArray(); Array. Reverse( msv) ; return new string(msv);
у
}
using System;
public static class stringExtension
public static string Reverse(base string s)
{
char[] msv = s.ToCharArray (); Array. Reverse (msv) ; return new string(msv);
>
> ) ^
using System;
public static class stringExtension
{
public static string Reverse(this string s)
{
char[] msv = s.ToCharArray(); Array .Reverse(msv); return new string(msv);
>
}
Что напечатает следующий код:
static void Main(string[] args) { int a = 0; decimal b = 0; double с = 0.0;
Console.WriteLine(a == b); Console.WriteLine(a.Equals(b)); Console.WriteLine(a == c); Console.WriteLine(a.Equals(c)); Console.Read L i n e();
>
False
True False False
True
True True False
True
True True True
® v True False True False
Комментировать вопрос (всего: 7)
К Что будет выведено на консоль в результате выполнения следующего метода:
public void TestMethod() { int k = 1;
Console.WriteLine(k++ + ++k); Console.ReadLine();
I >
2 3
5 * 4
<§) Возникнет ошибка компиляции
с
Пояснение: Постинкремент k++ вернет 1 и увеличит к на 1, в результате преинкремент увеличит к=2 на 1 и сумма будет равна 4.
К Укажите все правильные способы объявления массива в результате которых массив будет корректно инициализирован
Какими способами правильно инициализировать двумерный массив? (Выберите все верные варианты)
Пояснение: int k[][] = new int [2][3], int[][] к = new int [2][3], int k[,J = new int [2,3] - неправильное объявление массива; int[][] к = new int[2][] - объявление ступенчатого массива, а не инициализация.
Будет ли компилироваться данный фрагмент кода?
try
{
FileStream F = new FileStream("myfile.txt"); string s = F.ReadLine();
>
catch (IOException) { >
finally
{
F.Close();
>
Да
<§) v нет
Пояснение: Компилятор ругнется на то, что переменная F не определена в месте вызова F.CloseQ
* Что напечатает следующий код:
class MyClass {
static void Main() {
int a = b = 2; Swap(a, b);
Console.WriteLine("a=" + a + b=" + b)j Console.Read Line();
>
private static void Swap(int a, int b)
{
int с = a; a = b; b = c;
}
>
Возникнет ошибка компиляции Возникнет ошибка времени выполнения ® а=2, Ь=1 ; ^ а=1, Ь=2
Скомпилируете^ ли следующий код (как часть некоторого метода):
string[] str = new string[5]; try
str[4] = "anything"; catch (Exception e)
Console.MriteLine(e.Message); catch (IndexOutOfRangeException e) Console.WriteLine(e.Message);
® v нет Да
Пояснение: Код не компилируется.
Обработка исключений должна идти в восходящем порядке по иерархии исключений (от классов-детей к суперклассам).
С# является регистрозависимым языком.
® ✓ да Нет
С компилируется л и следующий код:
class Program
{
private static int i;
static Program(int a)
{
this.i = a;
Console.MriteLine("In static constructor");
>
static void Main(string[] args) { >
Да
® * Нет
Пояснение: В коде две ошибки:
* Что будет выведено на консоль в результате выполнения программы
class Program {
static !Enumerable<char> GetLetters() {
yield return 'A'; yield return 'В'; yield return 'G'j
>
static void Main(string[] args) {
foreach(char ch in GetLettersQ) {
Console.Write(ch);
>
>
>
® Программа не скомпилируете 11(
Программа "зациклится" 71
j V ABC ЗЗЕ
A 51
AAA 45
Пояснение: Функция CetLettersf) создает перечисление по объектам типа char.
Оператор yield return показывает компилятору, какое значение возвращает итератор на текущей итерации. На следующей итерации выполнение продолжается со следующего оператора.
Подробнее здесь: http://msdn.microsoft.com/ru-ru/library/dscyy5s0.aspx
Что выведет на экран код:
static void Main() {
if (false) {
int i = 1;
>
int i = 2;
Console.WriteLine(i);
(§> ^ Код не скомпилируется
Скомпилируется ли данный код:
static void Main() {
int a = 16; int b = 20; byte с = a + b; Console.WriteLine(c);
>
® * Нет
Да
К Укажите все правильные способы объявления массива:
0 int кП;
0 int к[3]; ||| Щ] к;
□ ЩЗ] к; 0 ^ Щ] к = new int [3];
Среди перечисленных конструкций укажите объявление индексатора
® v string this [int i] {get {return "Name";}} string Name;
string Name {get{return "Name";}} sting GetName () { return "Name";}
Можно л и разместить объекты разных типов в массиве (System. Array)?
О да
@ нет ^ Можно ли объявить глобальную функцию в программе на С#?
Да
<§) V Нет
Кпмкдритипппатк Rnnnnr (вгргп- Л)
* Что будет напечатано в результате выполнения следующего кода?
class woatt* { class А {
Owblic virtual void {
CO*SOU .M^itC ( • A: * ) ;
>
>
class S : A {
0abliC OvCrtidt vOid WifttO { C0A£0l«.Wit6LiAft( " 6:
)
»
class С S e {
0wbliC *tw void M£«t() {
tasft.wlAtO;
COrt&Ol*.МГ it«L iA*t'СS/it");
>
>
static void RaiA(strt4eC] С
да* Ota А О;
A b • *tw 5 C); Ac* tt« C();
COASOl* . R«adK«y ( ) ;
)
)
Одмбиа to згле* комздггц**
® A:: Pry.:
8::Pf1rvt K:MK C:Pr%*
A::Mt 8::Prtot C:Pr*t
v A::Prmt 8::Rrtot
K6w«<w!voo8aTw вопрос (acefo: 6|
К Что будет выведено на консоль в результате выполнения следующего метода:
public void TestMethod() { int k - 1;
Console.WriteLine(k++ + ++k); Console.Read Line();
I >
2 3
5 V 4
(§) Возникнет ошибка компиляции
Пояснение: Постинкремент k++ вернет 1 и увеличит к на 1, в результате преинкремент увеличит к=2 на 1 и сумма будет равна 4.
Какие из перечисленных ключевых слов используются в конструкции "если"
then elseif ® ✓ if Else
Сколько раз выполнится тело следующего цикла:
int i » 0j
while (++i < 3) {
Console.Writ e(i);
>
код не скомпилируете
© * 2 3
К Будет ли выведена строка в результате выполненения следующего кода:
object а = 1; object b = 1;
if(b == a) {
Console.WriteLine("equal");
>
@ Да ^ Нет
К Можно л и разместить объекты разных типов в массиве (System. Array)?
О ^ да ® нет
К Какие модификаторы доступа из перечисленных по умолчанию даются классу, описанному в namespace? классы и объект! 0 public 2136 / 8353
0 |
private |
2797 / 8353 |
□ |
protected |
793 / 8353 |
0 V |
internal |
4354 / 8353 |
Пояснение: Невложенный класс - класс, который находится непосредственно в namespace. Такой класс может иметь 2 модификатора доступа - public и internal. По умолчанию класс имеет модификатор internal.
К Какие из строк вызовут ошибку компиляции?
Классы и объе>
□ 1
□ 2 0*3 □ ^ 4
1930 /938 3283 / 938 5565 / 938 4664 / 938
Пояснение: У Type есть метод GetType, который принимает в качестве параметра String. А у каждого типа из CLR есть метод CetType, но уже без параметров.
Ж Что из перечисленного верно:
7] v Переменные ссылочного типа размещаются в стеке потока и хранят адрес объекта в управляемой куче
Переменные ссылочного типа размещаются в стеке потока и хранят адрес объекта в неуправляемой куче П v Переменные значимого типа размещаются в стеке потока
Скомпилируется ли следующий код (как часть некоторого метода):
string[] str = new string[5]; try
str[4] = "anything"; catch (Exception e)
Console.WriteLine(e.Message); catch (IndexOutOfRangeException e) Console.WriteLine(e.Message);
® V нет Да
^ В какой строке кода допущена ошибка:
int а = 0; int b = 1; if (а == b) а = а; if (a) b ■ а;
в третьей: нельзя присвоить переменной ее же значение ® v в четвертой: условие должно возвращать логическое значение в этом коде нет ошибок
Что произойдет в результате выполнения следующего кода:
class Test {
MaccHBt
static void Main(string[] args) {
char[] vowels = {'а2лл'о','u'Jj for (int i = 1; i <= vowels.Length; i++) Console.Write(vowels[i] + " ")j
}
>
е i о и |
3 |
(§) v Код напечатает "е i о и", а дальше уже возникает ошибка времени выполнения |
11 |
Возникнет ошибка компиляции |
|
а е i о |
Пояснение: Нумерация элементов массива начинается с О. Для обхода всех символов массива необходимо организовать цикл таким образом:
К Данный код скомпилируется успешно (как часть некоторого метода):
try
Console.WriteLine("TRY"); throw new Exception("EXCEPTION");
catch (Exception)
Console.WriteLine("CATCH");
К Как могут инициализироваться readonly поля экземпляра класса?
public string PublicPrint() { return Print();
>
protected virtual string Print() { return "A";
>
>
public class В : A { > public class С : B {
protected override string Print() {
return "С";
>
}
Каков будет результат при выполнении следующего кода:
А ас = new С();
ш
** public abstract class A {
Console.WriteLine(ас.PublicPrint());
' С
® А
5951 / 9224
1053 /9224
1804/9224
379 / 9224
Ошибка компиляции Ошибка выполнения
Пояснение: Основное правило полиморфизма. Вызывается перегруженный метод определенный в объекте, экземпляр которого был создан. При этом в базовом классе метод должен быть помечен как virtual, а в классе наследнике он должен содержать override
Что напечатает следующий код:
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 с = a; a = b; b = c;
>
p
Возникнет ошибка времени выполнения <§) v а»1, Ь=2
Возникнет ошибка компиляции а=2, Ь=1
К Какие ошибки содержатся в представленном коде:
class Test {
static void f(ref int a, out int b)
{
a = 10 + b;
>
static void Main(string[] args)
{
int a;
int b - 5.C; f(ref a, out b);
>
>
0 v Перед вызовом метода f переменная а должна быть проинициализирована.
D ^ Переменная b должна быть проинициализирована целочисленным значением или не инициализирована вовсе
* Укажите имя класса, от которого наследуются все исключения.
Ваш ответ: (Extetnal
Правильные ответы: Exception,System.Exception
Сколько родительских классов может иметь производный класс? классы и ofoei
Любое количество 931 / 932
Не больше одного 2027 / 933
® v Всегда один 6227 / 932
Не больше двух 144 / 932
Пояснение: Всегда один. В С# нет множественного наследования, а любой объявленный класс без явного указания родительского класса автоматически становится производным от System.Object.
Сам System.Object не имеет родительского класса, но в вопросе спрашивается только о производных классах.
Что напечатает программа:
class Program
{
static bool SomeMethod() {
Console.WriteLine("Method was invoked"); return true;
Операторы и операции
>
static void Main(string[] args) {
if (true & false & SomeMethodO) {
Console.WriteLine("Inside IF operator");
>
>
664 / 6031
816 / 6031
77 / 6031
1395 / 6031
3059 / 6031
>
(§) Ошибка компиляции Method was invoked
Inside IF operator
Ошибка времени выполнения Ничего не напечатает
S Method was invoked
Пояснение: Операция ft в условном операторе позволяет полностью вычислить условие независимо от операндов, даже если очевидно, что результат не зависит от последующих операндов. Эта операция отличается от операции ftft тем, что полностью вычисляет выражение.
Укажите, какие свойства определены неверног
public class Foo { private int a; private int c;
public int A {
get { return a; > set { a = value; >
>
public int В {
get { return 0; >
>
public int С {
set { с = value; >
>
protected int D { get; set; > protected int E { get; private set; > protected int F { public get; set; >
>
gj_ A g_ В gj_ С gj_ D 0 E □ V F
К Лямбда-выражения на платформе .Net могут существовать в виде:
Комментировать вопрос (всего: 0)
Что будет выведено на консоль в результате выполнения кода?
public static void Foo(params string[] lines) {
foreach (string 1 in lines) { Console.Write(1);
>
>
public static void Main() {
string[] data = new string[] { "1"* "2", "3" };
Foo(data);
Foo("A", "C");
}
40 / 647
191 / 647
413 / 647
Возникнет ошибка времени выполнения ® Программа не компилируется : ✓ 123АВС
Пояснение: Foo • метод, принимающий произвольное количество строк в качестве параметров. Также не запрещено передавать в метод готовый массив строк
К Какими способами правильно инициализировать двумерный массив? (Выберите все верные варианты)
0 v int[,] к = {{2,-2},{3,-22},{0,4}}
Пояснение: int k[][] = new int [2][3], int[][] к = new int [2][3], int k[,] = new int [2,3] - неправильное объявление массива; int[][] к = new int[2][] - объявление ступенчатого массива, а не инициализация.
К Что напечатает следующий код:
static bool Methodic)
I {
Console.WriteLine("in Methodl"); return false;
>
static bool Method2() {
Console.WriteLine("in Method2"); return true;
>
static void Main(string[] args) {
if (Methodl() & Method2()) {
Console.WriteLine("inside if");
>
>
® in Methodl in Method2 inside if
У in Methodl in Method2
in Methodl
Пояснение: Оператор ft всегда вычисляет значение обоих операндов
Какие из перечисленных ключевых слов используются в конструкции "если":
elseif then ® Y if Else
В каких строках содержатся ошибки компиляции?
public class Foo
{
private double field;
public double A
{
get { return field + 16.0; > // 1
set { field = value - 1С.в; > //2
>
public int В { get; private set; } // 3
public static class Program {
public static void Main() {
Foo f = new Foo();
double a = f.A; //4 int b = f.B; // 5
f.B = 10; // 6
>
>
□ 1 □ 2
К Что будет выведено на консоль в результате выполнения следующего кода:
namespace ConsoleApplicationl {
class Program {
static void Main(string[] args) {
Console.WriteLine(Test.Foo().ToString()); Console.Read Line();
>
>
class Test {
public static int Foo() {
return null;
>
>
>
пустая строка @ NULL
System. Null ■ v Возникнет ошибка компиляции
К Напишите название функции, которая является точкой входа в любую программу на С#.
Ваш ответ: fviod Main Правильные ответы: Main
Согласны ли вы с утверждением: у каждого объекта есть метод Finalize, который вызывается у этого объекта классы и объекты при сборке мусора?
® ✓ Нет 4863 / 8712
Да 3837/8712
Пояснение: В классе System.Object определён метод Finalize, но CLR его игнорирует, поэтому объекты всех классов, производных от Object (только если в них явно не определён метод Finalize), не считаются подлежащими завершению, т.е. метод Finalize при сборке мусора не вызывается для о6"ьектпов этих классов.
К Укажите ошибки в коде:
using SystM; nmespace Q
Л
class Кие
<
«region Constructor
public U»e( string nine) i
this .'ISO- = пане;
>
aendregion
«region Properties
/"1"/ public string Usoe {
private set;
)
«endregion
«region Methods
static void Hain(strinjf] args) {
fZ'f Mane n « пей Uane(*Helo wrold");
/'t'/ n.Oispose(); // ©евобахввеи пенять.
)
«endregion
>
12
комментарии вида /* V недопустимо!
Строка /*2*/ : ошибки в фразе "Heto Wrokf
Пояснение: /**/ • вполне себе комментарии
Hello world является строковым выражением, его синтаксис не проверяется*) класс не может содержать членов с именем, совпадающим с именем самого класса. Dispose не объявлен.
Какие ошибки содержатся в представленном коде:
class Test i
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);
>
>
G * В методе f переменная b должна быть инициализирована до ее использования
П * Перед вызовом метода f переменная а должна быть проинициализирована. О Метод f должен быть объявлен как public
К Что будет выведено на консоль в результате выполнения следующего кода:
namespace ConsoleApplicationl {
class Program {
static void Main(string[] args) {
string @string = "ABC"; Console.Write L ine(string);
Console.ReadLine();
>
>
>
v Возникнет ошибка компиляции System. String Пустая строка © ABC
Ш Что напечатает следующий код:
static bool Methodl()
Console.WriteLine("in Method1" ) ; return false;
static bool Method2()
Console.WriteLine("in Method2"); return true;
static void Main(string[] args)
if (Methodl() && Method2()) {
Console.WriteLine ( " inside if " );
>
j >
in Methodl in Method2
✓ in Methodl
(§) in Methodl in Methodl inside if
Пояснение: Правый операнд оператора ftft не нуждается в вычислении, так как Methodl вернул false.
18 Можно ли в конструктор передать параметр с ключевым словом ref?
I f Да ® Нет
К Какими способами из перечисленных может быть перегружен метод в С#?
[71 другой тип возвращаемого значения П v другое количество параметров П v другой тип параметров Г71 другое имя метода
^ Что напечатает следующий код:
class MyClass
I
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 с = a; a = b; b = c;
>
>
Возникнет ошибка времени выполнения а=2, b=1 <§) v а=1, Ь=2
Возникнет ошибка компиляции
* Какое ключевое слово используется для прекращения выполнения конструкций switch, for, while?
Ваш ответ: [break Правильные ответы: break
Что будет выведено на консоль в результате выполнения следующего метода: |
Операторы и опер< |
public void TestMethodQ { int k = 1; Console. WriteLine (k++ + ++k); |
|
Console. ReadLineQ; > |
|
2 |
117 / 33 |
<§) 3 |
871 / 33 |
5 ✓ 4 |
2026 / 33 |
Пояснение: Постинкремент к++ вернет 1 и увеличит к на 1, в результате преинкремент увеличит к-2 на 1 и сумма будет равна 4.
Ш Какие из следующих модификаторов валидны в С#?
П v internal Г~1 external П у/ private П ✓ public
[71 protected external Г71 v protected internal
К Укажите имя класса, от которого наследуются все исключения.
Ваш ответ: [Exeption,System. Exeptio] Правильные ответы: Exception,System.Exception
t Скомпилируется ли данный фрагмент кода успешно?
private int GetID (string inputText) {
if (inputText ! = "")
return 1; else if (inputText == "") return 0j
I >
Да
® v Нет
Что напечатает следующий код:
class MyClass {
static void Main() {
int a = 1, b = 2; change(ref a, ref b);
Console.WriteLine("a=" + a + b=" + b); Console.Read Line();
}
private static void change(ref int a, ref int b)
{
int с = a; a « b; b = c;
>
>
a=1, b=2
® 4 a=2, b=1
Возникнет ошибка компиляции Возникнет ошибка времени выполнения
Ш Дана переменная Операторы и от
float пит;
Как можно проинициализировать num , чтобы код
if (num == num)
Console.WriteLine("Equal");
else
Console.WriteLine("Not equal");
Выдал результат Not equal
f71 Такой вариант невозможен 2069 /
Пояснение: В результате действия оператора 0 / 0. OF получается результат, который не является числом (NAN • not a number), поэтому выражение (пит == пит) нельзя рассматривать с логической точки зрения
К Какие модификаторы доступа из перечисленных по умолчанию даются классу, описанному в Классы и об
namespace?
Пояснение: Невложенный класс - класс, который находится непосредственно в namespace. Такой класс может иметь 2 модификатора доступа • public и internal. По умолчанию класс имеет модификатор internal.
Скомпилируется ли следующий код (как часть некоторого метода):
string[] str = new string[5]; try
str[4] = "anything"; catch (Exception e)
Console.WriteLine(e. Message); catch (IndexOutOfRangeException e) Console.WriteLine(e. Message);
Да
<§> v Нет
Пояснение: Код не компилируется.
Обработка исключений должна идти в восходящем порядке по иерархии исключений (от классов-детей к суперклассам).
К Укажите все правильные способы объявления массива:
И int k[]; 0 int k[3];
[3 ✓ int[] k = new int [3];
К Укажите все правильные способы объявления массива в результате которых массив будет корректно инициализирован
int someArray[] = new int[4]; П int[] someArray = {1,2,3,4}; [Zl ^ int[] someArray = new int[] {1,2,3,4}; Г7| У int[] someArray = new int[4]; I7l int[4] someArray; СИ int[] someAoay = new int[4] {1,2,3,4};
К Что выведет на консоль следующая программа:
using System;
namespace TestCS { class Program {
public delegate void MethodDelegate(string param);
private void privateMethod(string str) { Console. Write ( str );
>
public void GetMeth(out MethodDelegate md) { md = privateMethod;
>
static void Main(string[] args) { MethodDelegate myMethod; Program program » new ProgramQ; program.GetMeth(out myMethod); myMethod("Hello")j Console. Write ( M_world" ); Console. ReadKey ();
}
}
>
HeUo ® _worid : v HeUo.wortd
Ошибка времени выполнения
Ш Задано классы:
class А { int х; } class В : А { int у; >
Какие фрагменты кода выполнятся успешно?
0 ✓ Object а = new В(); В b = a as В;
Object а = new А(); Object b = (В)а;
Ш Что будет выведено в результате работы программы?
#if DEBUG
Console.WriteLine("DEBUG");
«else
Console.WriteLine("RELEASE");
«endif
Возникнет ошибка компиляции, т.к. С# не поддерживает директивы препроцессора (§) Возникнет ошибка во временя выполнения
v При компиляции в debug моде будет выведено "DEBUG", а при release - "RELEASE"(если определенны эти константы)
Пояснение: Ctt поддерживает директивы препроцессора
Ш Что напечатает следующим код:
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 с = a j a = b; b = c;
>
>
® a=1, b=2 ✓ a=2, b=1
Возникнет ошибка компиляции Возникнет ошибка времени выполнения
К Укажите все правильные способы объявления массива в результате которых массив будет корректно инициализирован
0 ■У int[] someAnay = new int[] {1,2,3,4}; fTl ✓ int[] someAnay - new int[4] {1,2,3,4}; ^Jl V int[] someAnay = new intJ4]; □ v int[] someAnay - {1,2,3,4}; П int[4] someAnay;
int someAnay[] = new int[4];
* A::Print B:: Print B:: Print
2 Да ® Нет
Пояснение: В блоке catch не обязательно указывать идентификатор исключения