Главная / Программирование /
Разработка компиляторов / Тест 2
Разработка компиляторов - тест 2
Упражнение 1:
Номер 1
Для языка C# верны следующие утверждения:
Ответ:
 (1) идеальный язык для быстрой разработки приложений 
 (2) изначальная ориентация на платформу .NET 
 (3) имеет максимальную степень скрытия деталей от разработчика 
 (4) новый язык, не связанный проблемами обратной совместимости 
Номер 2
Упрощение языка C# выразилось в:
Ответ:
 (1) запрете прямой манипуляции памятью 
 (2) более строгих правилах преобрзования типов 
 (3) запрещении множественного наследования 
 (4) отказе от провала в следующую ветку в switch
 
Номер 3
Fall-through в C# - это:
Ответ:
 (1) ветка 
 (2) проблема "провала" 
 (3) наследование 
 (4) проблема компиляции 
 (5) неявные преобразования 
 (6) переполнение 
Упражнение 2:
Номер 1
C# поддерживает структурную обработку исключений с помощью конструкций:
Ответ:
 (1) try
 
 (2) finally
 
 (3) catch
 
 (4) foreach
 
Номер 2
В C# значениям переменных булевского типа:
Ответ:
 (1) не соответствует никаких численных эквивалентов 
 (2) соответствуют численные эквиваленты 
 (3) соответствуют специальные численные эквиваленты 
Номер 3
Все ссылочные типы произведены от базового типа object
, являющегося точным эквивалентом класса:
Ответ:
 (1) System.Object
 
 (2) System.Link
 
 (3) Object.Goto
 
 (4) System.Object.Links
 
Упражнение 3:
Номер 1
Ссылочными типами в C# являются:
Ответ:
 (1) object
 
 (2) интерфейсы 
 (3) class
 
 (4) string
 
 (5) массивы 
 (6) представители 
Номер 2
Классы в C# предоставляют следующие возможности:
Ответ:
 (1) модификаторы доступа 
 (2) конструкторы/деструкторы 
 (3) интерпретаторы 
 (4) методы классов и их параметры 
 (5) свойства и доступ к ним 
 (6) индексаторы 
 (7) события и представители 
Номер 3
В C# имеются следующие модификаторы:
Ответ:
 (1) доступа 
 (2) элементов класса 
 (3) класса 
 (4) типов 
 (5) секций 
 (6) стека 
Упражнение 4:
Номер 1
Модификаторами класса в C# являются:
Ответ:
 (1) abstract
 
 (2) const
 
 (3) sealed
 
 (4) public
 
Номер 2
Корректными примерами конструкторов являются следующие:
Ответ:
 (1) public Matrix()
{
for (int i=0; i<n; i++)
for (int j=0; j<n; j++)
elements[i,j] = 0;
}
 
 (2) public Matrix (val)
{
for ( i=0; i<n; i++)
for (int j=0; j<n; j++)
elements[i];
}
 
 (3) public Matrix (int val)
{
for (int i=0; i<n; i++)
for (int j=0; j<n; j++)
elements[i,j] = val;
}
 
Номер 3
Все активные действия программ на C# выполняются:
Ответ:
 (1) в методах классов 
 (2) в методах объектов 
 (3) в методах секций 
 (4) в методах блоков 
Упражнение 5:
Номер 1
Проверку допустимости присваиваемого значения можно провести с помощью следующего кода:
Ответ:
 (1) private int m_stateOfVeryCriticalResource;
public int stateOfVeryCriticalResource {
get { if (IsAllowedUser())
return m_stateOfVeryCriticalResource; }
set { if (IsAdmin())
m_stateOfVeryCriticalResource = value; }
}
...
stateOfVeryCriticalResource = vcrCompletelyScrewedUp; 
 (2) private int m_AgeOfClient;
public int AgeOfClient {
get { if (AccessToPersonalInfoAllowed()) return m_AgeOfClient; }
set { if (value > 0 && value <= 120)
m_AgeOfClient = value;
else
MessageBox.Show("This client is not recommended for insurance");
}
}
 
 (3) Hashtable ziphash = new Hashtable();
...
foreach (string zip in ziphash.Keys)
{
Console.WriteLine(zip + " " + ziphash[zip]);
}
 
Номер 2
Данный пример:private int m_stateOfVeryCriticalResource;
public int stateOfVeryCriticalResource {
get { if (IsAllowedUser())
return m_stateOfVeryCriticalResource; }
set { if (IsAdmin())
m_stateOfVeryCriticalResource = value; }
}
...
stateOfVeryCriticalResource = vcrCompletelyScrewedUp;позволяет проверить достаточность полномочий запрашивающего приложения:
Ответ:
 (1) для доступа к данному объекту 
 (2) для доступа к данной строке 
 (3) для доступа к данному классу 
 (4) для доступа к данному полю 
Номер 3
При таком описании класса:public class Matrix
{
public const int n = 10;
public int[,] elements = new int[n,n];
public int this[int i, int j]
{
get { return elements[i,j]; }
set { elements[i,j] = value; }
}
}
допустимо следующее использование:
Ответ:
 (1) Matrix a = new Matrix();
 
 (2) b[0,0] = -4; b[1,5] = 10;
 
 (3) Matrix b = new Matrix();
 
 (4) a[0,0] = 1; a[1,5] = 5;
 
Упражнение 6:
Номер 1
Для реализации модели "публикация/подписка" в C# используются:
Ответ:
 (1) представители 
 (2) события 
 (3) индексаторы 
 (4) модификаторы 
Номер 2
В данном примере:using System;
public delegate void EventHandler (string strText);
class EventSource {
public event EventHandler TextOut;
public void TriggerEvent() {
if (TextOut != null) TextOut("Event triggered..."); }
}
class TestApp {
public static void Main() {
EventSource evsrc = new EventSource();
evsrc.TextOut += new EventHandler(CatchEvent); evsrc.TriggerEvent();
evsrc.TextOut -= new EventHandler(CatchEvent); evsrc.TriggerEvent();
TestApp theApp = new TestApp();
evsrc.TextOut += new EventHandler(theApp.InstanceCatch);
evsrc.TriggerEvent();
}
public static void CatchEvent(string strText) { WriteLine(strText); }
public void InstanceCatch(string strText) { WriteLine("Instance "+strText); }
происходят:
Ответ:
 (1) подписка на событие 
 (2) обработка события с помощью зарегистрированного обработчика 
 (3) получение события 
 (4) отказ от дальнейшей обработки события 
Номер 3
Какая операция используется для того, чтобы сократить и привести к привычному виду запись операций над объектами, определенными программистом?
Ответ:
 (1) индексирование 
 (2) присваивание 
 (3) перегрузка операторов 
 (4) упорядочивание операторов 
Упражнение 7:
Номер 1
В данном случае:int v2 = v1;
происходит:
Ответ:
 (1) неявное приведение переменной v1
к типу int
 
 (2) явное приведение переменной v1
к типу int
 
 (3) приведение переменной v1
к типу int
 
 (4) сопоставление переменной v1
с типом int
 
Номер 2
В C# есть специальное ключевое слово params
, которое позволяет:
Ответ:
 (1) задать целый список атрибутов 
 (2) задать целый список параметров 
 (3) задать целый список объектов 
 (4) задать целый список значений 
Номер 3
Для params
верно:
Ответ:
 (1) должен сопровождаться типом параметров 
 (2) быть последним параметром 
 (3) быть первым параметром 
 (4) не должен сопровождаться типом параметров 
Упражнение 8:
Номер 1
Для препроцессор C# верны следующие утверждения:
Ответ:
 (1) в C# запрещены подстановки текста 
 (2) #define
, #undef
служат для определения/отмены идентификаторов 
 (3) реализован механизм #if DEBUG… #else … #endif
 
 (4) реализована генерация ошибок и предупреждений 
Номер 2
Из привычного набора макросов в препроцесоре C# оставлены следующие:
Ответ:
 (1) #define
и #undef
для определения идентификаторов и отмены определения 
 (2) механизм условной компиляции, основанный на директивах #if
, #else
, #endif
 
 (3) генерация предупреждений и ошибок с помощью макросов #warning
и #error
 
Номер 3
В C# механизм условной компиляции, основан на директивах:
Ответ:
 (1) #warning
,#error
 
 (2) #define
,#undef
 
 (3) #if
,#else
,#endif
 
Упражнение 9:
Номер 1
Атрибуты в C# представляют собой:
Ответ:
 (1) "примечания" к элементам исходного текста программы 
 (2) "примечания" к классам исходного текста программы 
 (3) "примечания" к методам исходного текста программы 
 (4) "примечания" к параметрам методов исходного текста программы 
Номер 2
В C# информация, записанная в атрибутах, во время компиляции:
Ответ:
 (1) теряется 
 (2) сохраняется в метаданных программы 
 (3) не сохраняется в метаданных программы 
 (4) сохраняется в специальном блоке 
Номер 3
С помощью какого атрибута в данном примере:using System.Runtime.InteropServices;
public class AppMain {
[DllImport("user32.dll")]
public static extern int MessageBoxA(int handle, string message,
string caption,int flags);
public static void Main(){
MessageBoxA(0,"Hello World","Native Message Box",0);
}
[conditional("DEBUG")]
public static void SayHello() {
Console.WriteLine("Hello, World!"); return;
}
}
обеспечивается взаимодействие с функцией MessageBoxA
из Win32 API:
Ответ:
 (1) conditional
 
 (2) SayHello
 
 (3) DllImport
 
 (4) caption
 
Упражнение 10:
Номер 1
Для того, чтобы определить собственные, пользовательские атрибуты достаточно создать класс, унаследованный от:
Ответ:
 (1) New.Attribute
 
 (2) System.Attribute
 
 (3) Users.Attribute
 
 (4) Special.Attribute
 
Номер 2
Информация, записанная в пользовательских атрибутах, может быть использована во время исполнения программы с помощью:
Ответ:
 (1) механизма рефлексии  
 (2) механизма распаковки  
 (3) механизма упаковки 
 (4) механизма перезагрузки операторов 
Номер 3
Для написания опасного кода необходимо пометить метод или блок ключевым словом:
Ответ:
 (1) unsafe
 
 (2) safe
 
 (3) fixed
 
 (4) undef
 
Упражнение 11:
Номер 2
Какие механизмы реализованы в C#:
Ответ:
 (1) исключения 
 (2) контроль версий 
 (3) межъязыковая разработка и отладка 
 (4) работа с переполнением 
Номер 3
Отключить контроль переполнения можно с помощью ключевого слова:
Ответ:
 (1) unchecked
 
 (2) checked
 
 (3) control
 
 (4) syscontrol
 
 (5) unsafe
 
 (6) fixed
 
Упражнение 12:
Номер 1
Язык Cи-бемоль был разработан:
Ответ:
 (1) путем усечения C# 
 (2) путем дополнения C# 
 (3) путем усечения C++ 
 (4) путем дополнения C++ 
Номер 2
Из типов данных язык Cи-бемоль поддерживает следующие:
Ответ:
 (1) встроенные типы 
 (2) классы 
 (3) многомерные массивы 
 (4) интерфейсы 
 (5) одномерные массивы 
 (6) тип данных "множество" 
Номер 3
Из управляющих конструкций в языке Cи-бемоль допускаются:
Ответ:
 (1) if-then-else
 
 (2) while-do
 
 (3) do-while
 
 (4) присваивания 
 (5) вызовы 
 (6) repeat-until