
ТЕСТ
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


