Вы находитесь на странице: 1из 9

ТЕСТ

1. Какая разница между объектом и классом?

 Класс - это исходный код, а объект - скомпилированный и выполняемый код


 Класс описывает категорию, к которой могут либо принадлежать, либо не
принадлежать объекты данного класса
 Класс может иметь много экземпляров, а объект - один или ни одного
 Класс может инстанциировать объекты, а сам объект - нет
 Объект - это экземпляр класса

2. Какие конструкторы и в какой последовательности будут выполнены для данной


иерархии классов при создании экземпляра класса C++ (двоеточие в описании
класса означает наследование)?

class A { };
class B : public A { };
class C : public B { };

 C
 C, B, A
 A, B, C
 A
 Ничего из перечисленного

3. Почему в некоторых языках программирования отказываются от поддержки


множественного наследования (имеется в виду наследование реализации)?

 Из-за неоднозначности выбора поведения, в случае если суперклассы некоторого


класса содержат методы с одинаковыми сигнатурами
 Поддержка множественное наследования ведет к большим потерям
производительности, так как для каждого класса необходимо держать сильно-
ветвящуюся иерархию его предков
 Множественное наследование невозможно реализовать с помощью таблицы
виртуальных функций, поэтому требуются другие намного более сложные
алгоритмы
 Множественное наследование практически никогда не используется, в отличии от
обычного наследования от одного класса

4. Какая разница между идентичностью (identity) и равенством (equality) объектов в


ООП?

 Идентичность означает, что у объектов есть общий неабстрактный предок, а


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

5. Каким будет значение переменной i после выполнения данного фрагмента кода на


C#:

int i = 1;
for (int in = 0; in <= 5; in++) ++i;

 5
 6
 7
 в коде есть синтаксическая ошибка

6. Какой результат выполнения данного кода на C#?

public class C
{
private static void DoIt(string s)
{
System.Console.WriteLine("String");
}
private static void DoIt<T>(T t)
{
System.Console.WriteLine("Everything else");
}
public static void Main(string[] args)
{
Object obj = "Hello";
DoIt("Hello!");
DoIt<string>("Hello!");
DoIt(obj);
Console.ReadLine();
}
}

 String
String
String
 Everything else
Everything else
String
 String
Everything else
String
 Everything else
String
String
 String
Everything else
Everything else
 String
String
Everything else
 Everything else
Everything else
Everything else

7. Какой из ответов на C# задает обобщенный класс унаследованный от Dictionary<,>


с именем MyDictionary, у которого ключи ограниченны значимыми типами, а
значения – ссылочными?

 using MyDictionary = System.Collections.Generic.Dictionary<,>;


 public class MyDictionary<TKey, TValue> : Dictionary<TKey, TValue> where TKey :
Int32 {}
 public class MyDictionary<TKey, TValue> : Dictionary<TKey, TValue>
where TKey : struct
where TValue : class {}
 public class MyDictionary<TKey, TValue> : Dictionary<TKey, TValue>
where TKey : ValueType
where TValue : Object {}
 using MyDictionary = System.Collections.Generic.Dictionary;

8. Укажите все возможные варианты вывода на консоль следующего кода на C#:

class Parent {
~Parent() {
System.Console.WriteLine("Parent");
}
}

class Child : Parent {


~Child() {
System.Console.WriteLine("Child");
}
}

class Test {
static void Main(string[] args) {
Parent parent = new Child();
}
}

 Parent
 Child
Parent
 Parent
Child
 Код может ничего не напечатать
 Child
9. Что выведет на экран данный код на C#?

class A : IDisposable
{
public int Foo
{
set { throw new Exception(); }
get { return 0; }
}
public void Dispose()
{
Console.WriteLine("Dispose");
}
}

public class Test


{
private static void Main(string[] args)
{
try
{
using (A a = new A { Foo = 1 })
{
Console.WriteLine("Using");
}
}
catch
{
Console.WriteLine("Catch");
}
}
}

 Catch
Dispose
 Catch
 Using
Dispose
Catch
 Dispose
Catch

10. Что напечатает этот код на C# ?

class Program
{
delegate int F();
static void Main()
{
List<F> fs = new List<F>();
int[] xs = { 1, 2, 3 };
foreach (int x in xs)
{
fs.Add(() => x);
}

foreach (F f in fs)
{
Console.WriteLine(f());
}
}
}

 1
2
3
 3
3
3
 Код не скомпилируется
 Ошибка времени выполнения

11. Какие из этих операторов/ключевых слов на C# не поддерживают перегрузку


напрямую?

 true
 +=
 *
 ||
 +

12. Что выведется на консоль, если выполнить данный код на C#:

using System;
using System.Collections.ObjectModel;

class Program {
public static void Main() {
object o = null;
try {
Type type = typeof(KeyedCollection<,>);
o = Activator.CreateInstance(type);
Console.WriteLine(o.GetType());
} catch (ArrayTypeMismatchException) {
Console.WriteLine("ArrayTypeMismatchException");
} catch (ArgumentException) {
Console.WriteLine("ArgumentException");
} catch (Exception) {
Console.WriteLine("Exception");
}
}
}
 ArrayTypeMismatchException
 Exception
 KeyedCollection'2[,]
 ArgumentException
 KeyedCollection'2[Type, Type]

13. Что напечатает данный код на C#?

class C
{
public static void M(string x)
{
System.Console.WriteLine("static M(string)");
}
public void M(object s)
{
System.Console.WriteLine("M(object)");
}
}

class B
{
public C C = new C();
public void N()
{
C.M("hello");
}
}

class Program
{
public static void Main()
{
B b = new B();
b.N();
}
}

 static M(string)
 Что-то другое
 Код не скомпилируется
 M(object)

14. Таблица DEPARTMENT состоит из таких полей: MANAGER_ID, FIRST_NAME,


PROFIT. Нужно узнать FIRST_NAME и PROFIT всех работников, у которых такой
же менеджер, что и у работника с FIRST_NAME = 'ALEX', а PROFIT равен или
больше, чем у него.

 select first_name, profit from department where (manager_id, profit) >= ANY (select
manager_id, salary from department where first_name = 'ALEX') and first_name <>
'ALEX';
 select first_name, profit from department where (manager_id = (select manager_id from
department where first_name = 'ALEX') and profit >= (select profit from department
where first_name = 'ALEX')) and first_name <> 'ALEX';

 select first_name from department where manager_id = (select manager_id from


department where first_name = 'ALEX') and first_name <> 'ALEX' union all select profit
from department select first_name from department where profit >= (select profit from
department where first_name = 'ALEX') and first_name <> 'ALEX';
 select first_name, profit from department where (manager_id, profit) in (select
manager_id, salary from department where first_name = 'ALEX') and first_name <>
'ALEX';

15. Укажите все insert-выражения, которые корректны для следующей таблицы:

CREATE TABLE test (


nr int,
lp int,
symbol char(2) not null default 'FV',
ayear int,
PRIMARY KEY(nr, lp)
);

 insert into test(nr, lp) values (1, 6)


 insert into test values (2, 5,, 2001)
 insert into test(nr, lp, ayear, symbol) values (9, 7, 2002, 'PR')
 insert into test values (2001)
 insert into test values (3, 4, 'AB', 2000)
 insert into test(nr, lp, symbol) values (18, 6, 'KJ')

16. Дана таблица PAYMENT ( ID INTEGER NOT NULL, PAY INTEGER ),


заполненная следующими данными:

ID PAY
1 100
2 200
3 300
4 NULL
5 400

Что вернёт запрос:


SELECT AVG(PAY)-SUM(PAY)/COUNT(*) AS A FROM PAYMENT

 NULL
 0
 100
 -50
 При выполнении запроса возникнет ошибка
 Ничего из предложенного

17. Дана таблица nums с данными:


id num
1 1
2 null
3 2
2 null
3 5
3 7

Какие из следующих запросов вернут ровно 3 записи из этой таблицы:

 SELECT 3 FROM nums;


 SELECT id FROM nums;
 SELECT num FROM nums WHERE num IS NOT NULL;
 SELECT DISTINCT id FROM nums;
 SELECT COUNT(DISTINCT id) FROM nums;
 SELECT * FROM nums WHERE id <> num;
 SELECT DISTINCT id FROM nums WHERE num IS NOT NULL;

18. Для таблиц T1 и T2 необходимо отобразить результат выполнения внутреннего


соединения по полям T1.p_key и T2.f_key. Какие из приведенных запросов можно для
этого использовать (выберите все подходящие варианты)?

 SELECT T1.p_key, T2.f_key FROM T1 RIGHT OUTER JOIN T2 ON T1.p_key =


T2.f_key WHERE T1.p_key IS NOT NULL
 SELECT T1.p_key, T2.f_key FROM T1 INNER JOIN T2 ON T1.p_key = T2.f_key
 SELECT T1.p_key AS key FROM T1 UNION ALL SELECT T2.f_key AS key FROM
T2
 SELECT T1.p_key, T2.f_key FROM T1, T2 WHERE T1.p_key = T2.f_key
 SELECT T1.p_key, T2.f_key FROM T1 FULL OUTER JOIN T2 ON T1.p_key =
T2.f_key WHERE T1.p_key IS NOT NULL AND T2.f_key IS NOT NULL
 SELECT T1.p_key, T2.f_key FROM T1 LEFT OUTER JOIN T2 ON T1.p_key =
T2.f_key WHERE T2.f_key IS NOT NULL

19. Какие данные вернет запрос:


SELECT DISTINCT COUNT(T2.F_VAL) AS F, COUNT(DISTINCT T1.P_VAL) AS P
FROM T1, T2 WHERE T1.P_KEY=T2.F_KEY

Для следующих таблиц:


T1 ( P_KEY INTEGER, P_VAL VARCHAR(20) )
P_KEY P_VAL
1 UK
2 Russia
NULL Ukraine

T2 ( P_KEY INTEGER, F_KEY INTEGER, F_VAL VARCHAR(20) )


P_KEY F_KEY F_VAL
1 1 London
2 2 Moscow
NULL 2 St. Petersburg
NULL NULL Kiev
 4, 4
 NULL, NULL
 3, 2
 При выполнении запроса возникнет ошибка
 3, 3
 2, 2
 4, 3

Оценить