Основы программирования на C#



К неявным преобразованиям относятся:

  • (Правильный ответ) преобразования, выполняемые автоматически
  • любые преобразования над объектами ссылочных типов
  • преобразования, указанные программистом

Закрытые методы класса

  • составляют интерфейс класса
  • (Правильный ответ) не могут быть вызваны клиентами
  • (Правильный ответ) позволяют клиентам не вникать в детали реализации

Три массива: <int[] ar1 = new int[5]; double[] ar2 ={5.5, 6.6, 7.7}; int[,] ar3 = new Int32[3,4]; > принадлежат

  • одному и тому же классу
  • разным классам, общность которых определяется только родительским классом object
  • (Правильный ответ) разным классам, но у которых есть общий родительский класс Array

Правда ли, что:

  • (Правильный ответ) стандартные математические функции представлены статическими методами класса Math
  • (Правильный ответ) метод Next класса Random является перегруженным
  • еще на этапе компиляции возникнет ошибка в следующем фрагменте кодаint x=1;int y=2;if (Math.Sin(x) > 0.5) y=1;

При создании объектов перечислений

  • (Правильный ответ) объекты получают значение, даже если инициализация не задана
  • требуется их явная инициализация
  • (Правильный ответ) нельзя вызывать конструктор

Отметьте истинное высказывание:

  • каждая case-ветвь оператора switch должна заканчиваться оператором break
  • любое выражение может использоваться в качестве оператора
  • оператор foreach не применим при работе с массивами
  • (Правильный ответ) оператор if может быть эквивалентен по своему действию пустому оператору

При определении собственных классов можно задать:

  • только конструкторы с атрибутом public
  • (Правильный ответ) конструкторы с атрибутами private и protected
  • (Правильный ответ) статический конструктор

Класс имеет:

  • несколько конструкторов с одинаковой сигнатурой
  • (Правильный ответ) не более одного статического конструктора
  • не более одного закрытого конструктора
  • только конструктор по умолчанию
  • только один конструктор

Отметьте истинные высказывания:

  • (Правильный ответ) класс Form1 в Windows-проекте по умолчанию является наследником класса Form
  • (Правильный ответ) проект библиотеки классов может не содержать точки входа Main
  • (Правильный ответ) пространство имен допускает вложенность и может содержать в качестве элемента пространство имен

Преобразование к типу object

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

Для выделения из текста подстроки, в которой x и y разделены знаком операции + или -, следует использовать шаблон:

  • (Правильный ответ) @»x[\+|\-]y»
  • @»x[+|-]y»
  • @»(x+y)|(x-y)»

Правда ли, что:

  • (Правильный ответ) под десериализацией понимают процесс восстановление состояния объектов, хранимых в долговременной памяти
  • (Правильный ответ) создать объект класса интерфейса обычным путем с использованием конструктора и операции new нельзя
  • различают три типа клонирования: поверхностное (shallow), глубокое (deep) и сверхглубокое (overdeep)

Правда ли, что:

  • при вызове конструктора класса ему может быть передана ссылка на создаваемый конструктором объект
  • (Правильный ответ) поле класса может быть объектом описываемого класса
  • потомкам доступны все поля и методы родительского класса

Правда ли, что:

  • класс может не быть универсальным, но таковым может быть отдельное поле класса
  • (Правильный ответ) в библиотеке FCL Visual Studio 2005 существуют универсальные интерфейсы
  • делегаты не могут иметь родовых параметров

Начальный Windows-проект содержит:

  • класс Window
  • пространство имен Form
  • класс Form
  • (Правильный ответ) класс Form1– наследника класса Form

Класс Exception

  • имеет фиксированное число потомков
  • является абстрактным классом
  • (Правильный ответ) является родительским классом для всех классов, описывающих определенный тип исключения

Размерность массива определяется:

  • числом его элементов
  • (Правильный ответ) числом его индексов
  • по максимальному значению элементов

Правда ли, что:

  • (Правильный ответ) метод Format может вызываться с разным числом параметров
  • существуют константы класса StringBuilder
  • метод Join позволяет воссоздать строку в исходном виде, расщепленную методом Split

К значимым типам языка C# относятся:

  • строки
  • все арифметические типы, кроме типа double
  • (Правильный ответ) все арифметические типы
  • массивы

Для ограниченной универсальности справедливы следующие утверждения:

  • ограничение универсальности накладывает ограничения на все родовые параметры
  • (Правильный ответ) неограниченную универсальность ограничивает статический контроль типов
  • введение ограничений универсальности на родовой параметр T сужает возможности работы с объектами типа T
  • в одном предложении where можно задать ограничения на несколько родовых параметров

Отладка позволяет

  • доказать, что в системе нет ошибок
  • устранить все ошибки, существующие в системе
  • (Правильный ответ) доказать, что в системе есть ошибки

Правда ли, что:

  • индексатор – это специальный инструментарий, нумерующий методы класса
  • (Правильный ответ) статическое поле с атрибутом readonly может использоваться в качестве константы класса
  • (Правильный ответ) методы-свойства обеспечивают различные стратегии доступа к закрытым полям класса

Отметьте истинное высказывание:

  • (Правильный ответ) в рекурсивной процедуре должна присутствовать нерекурсивная ветвь
  • квадратичные методы сортировки, требующие O(n2) операций всегда работают медленнее, чем сортировки с порядком операций O(n*log(n))
  • многопроцессорный современный компьютер решит задачу «Ханойские башни» в течение суток
  • каждый цикл имеет только один инвариант

Для того чтобы было возможным преобразование массива с элементами класса S в массив с элементами класса T, необходимо

  • классы S и T должны быть значимого типа
  • (Правильный ответ) классы S и T должны быть ссылочного типа
  • массивы должны иметь одинаковое число элементов
  • (Правильный ответ) размерности массивов должны совпадать

Отметьте истинное высказывание:

  • в языке C# переменные m1 и m2, являющиеся массивами, всегда принадлежат одному классу
  • (Правильный ответ) массив массивов позволяет задать многомерный массив
  • в языке C# для массивов не допускается отложенная инициализация

Оператор return

  • (Правильный ответ) завершает выполнение функции или процедуры
  • (Правильный ответ) возможен в процедурах
  • (Правильный ответ) обязателен в функциях

Дано перечисление enum TC {red, blue, yellow} и три переменных c1, c2, c3 этого класса. В результате присваиваний: с1 = TC.yellow; c2 = TC.blue; c3 = c1 | c2; эти переменные получат следующие значения базового типа:

  • (Правильный ответ) 2, 1, 3
  • 2, 1, 0
  • 1, 2, 3
  • 0, 1, 2

Дано объявление делегата: public delegate double D (double x); Какие объявления его экземпляров будут корректны в определенном контексте?

  • (Правильный ответ) D d4 = new D(Person.f2)
  • (Правильный ответ) D d1 = new D(Math.Sin)
  • (Правильный ответ) D d5 = new D(f3)
  • (Правильный ответ) D d3 = new D(x.f1)

Для программы, вычисляющей сумму первых n элементов массива S=A[0]; k=0; while(k !=(n-1)) { k++; S+=A[k];} подходящими инвариантами цикла являются

  • (Правильный ответ)
  • S= A[k]

Правда ли, что:

  • (Правильный ответ) задание предусловий, постусловий, вариантов и инвариантов циклов является такой же частью процесса разработки корректного метода, как и написание самого кода
  • из истинности инварианта цикла и условия завершения цикла всегда следует истинность постусловия цикла
  • вариант цикла является выражением булевского типа
  • из истинности инварианта цикла всегда следует истинность предусловия цикла

Правда ли, что:

  • (Правильный ответ) каждая функция (метод), сигнатура которого совпадает с сигнатурой делегата, может рассматриваться как экземпляр класса, заданного делегатом
  • над делегатами определены четыре операции (+, -, *, /)
  • (Правильный ответ) функцией высшего порядка называется такая функция (метод) класса, у которой один или несколько аргументов принадлежат к функциональному типу

В каком фрагменте возникнет ошибка:

  • (Правильный ответ) sbyte sb1=1, sb2= 2, sb3 = sb1+ sb2
  • ulong ul1 =1, ul2= 2, ul3 = ul1 + ul2
  • int x=5, y; if(x>4) y=x
  • int x; if (5 >4) x= 4

Правда ли, что:

  • выполнение метода Assert всегда прерывает выполнение программы
  • (Правильный ответ) даже при появлении исключительной ситуации программа может завершить свою работу в полном соответствии со своими спецификациями
  • после перехвата исключительной ситуации catch-блоком и исправления ошибки управление возвращается в точку возникновения исключительной ситуации для продолжения нормального процесса вычислений

В родительском классе описан метод public void M(int x) {}. Какие объявления в классе потомке вызовут ошибки или предупреждения на этапе компиляции?

  • private new void M(int x){}
  • (Правильный ответ) public override void M(int x) {}
  • (Правильный ответ) public new void M(int x, int y){}
  • (Правильный ответ) public void M(int x){}
  • public new void M(int x) {}

На основе универсального класса можно создавать:

  • (Правильный ответ) как родовые порождения конкретных классов, так и экземпляров класса
  • только родовые порождения экземпляров класса
  • только родовые порождения конкретных классов

Отметьте истинные высказывания:

  • (Правильный ответ) класс потомок не наследует конструкторы своего родителя
  • (Правильный ответ) класс с модификатором sealed не может иметь потомков
  • если у метода класса не задан специальный модификатор, то для него по умолчанию применяется динамическое связывание
  • класс с модификатором abstract не может иметь потомков с таким же модификатором

Дано перечисление enum TC {red, blue, yellow} и три переменных c1, c2, c3 этого класса. В результате присваиваний: с1 = TC.yellow; c2 = TC.blue; c3 = c1 | c2; переменная с3 получит значение

  • red
  • blue
  • (Правильный ответ) ни одно из этих значений
  • yellow

Если формальный аргумент метода объявлен как объект класса T, то фактический аргумент может быть:

  • любого класса
  • (Правильный ответ) класса T или класса, являющегося потомком класса T
  • класса, являющегося родителем класса T
  • только класса object
  • только класса T

Отметьте верные утверждения.

  • (Правильный ответ) класс int является структурой
  • никакие операции не определены над объектами перечислений
  • (Правильный ответ) метод ToString для объекта перечисления возвращает его значение, преобразованное в строку

Глубокое клонирование

  • (Правильный ответ) возможно
  • невозможно из-за проблемы зацикливания
  • возможно только для фиксированного уровня

Меню в формах:

  • (Правильный ответ) можно создать вручную и программно
  • создать нельзя
  • можно создать только программно
  • можно создать только вручную

В каких фрагментах не возникнет ошибка?

  • char[] s = new char[3]; s = «abc»;
  • (Правильный ответ) char[] s = new char[3] {‘b’, ‘c’, ‘d’};
  • (Правильный ответ) char[] s = new char[3];
    s = «abc».ToCharArray();

Каждое выполнение тела цикла:

  • сохраняет предусловие цикла
  • сохраняет постусловие цикла
  • сохраняет вариант цикла
  • (Правильный ответ) сохраняет инвариант цикла

Отметьте истинные высказывания:

  • класс Random позволяет получить только повторяющиеся серии случайных чисел
  • (Правильный ответ) для вызова методов класса Random нужно предварительно создать экземпляр этого класса
  • (Правильный ответ) все методы класса Math являются статическими
  • все переменные, входящие в выражение присваивания, должны быть явно инициализированы

Верно ли, что:

  • код на C# <byte b = 1; b+=1;> эквивалентен коду <byte b = 1; b = b+1;>
  • (Правильный ответ) класс Random имеет несколько конструкторов
  • (Правильный ответ) операция присваивания выполняется справа налево

Функция с побочным эффектом:

  • изменяет значения аргументов, вызываемых по значению
  • вызывается как оператор
  • возвращает значение void
  • (Правильный ответ) имеет выходные аргументы с ключевыми словами ref или out

К статическим свойствам и методам класса Array относятся:

  • (Правильный ответ) метод Copy
  • метод CopyTo
  • (Правильный ответ) метод Reverse
  • (Правильный ответ) метод BinarySearch

Все аргументы события принадлежат

  • (Правильный ответ) возможно разным классам
  • классу EventArgs, за исключением аргумента, задающего объект, зажигающий событие
  • потомку класса EventArgs за исключением аргумента, задающего объект, зажигающий событие
  • потомку класса EventArgs
  • классу EventArgs

Отметьте корректные объявления делегата – функционального класса:

  • Delegate D1 = new Delegate( void(string s)
  • public class D = delegate void(string s)
  • (Правильный ответ) delegate int T(int x1, ref int x2)
  • public delegate T1(int x)
  • (Правильный ответ) public delegate void D2 (string s)

Правда ли, что:

  • если формальный аргумент метода принадлежит классу object, то фактический аргумент не может быть массивом
  • (Правильный ответ) допустимо присваивание x=e; (передача аргументов в процедуру), где x и e – это массивы разных классов
  • (Правильный ответ) методы класса Array позволяют закрыть его на время обработки, запрещая его модификацию другим потоком

Отметьте истинные высказывания:

  • клиенту доступны все методы поставщика
  • (Правильный ответ) абстрактный класс может иметь полностью реализованный метод
  • наследнику доступны все методы предков
  • (Правильный ответ) объект наследника «является» объектом родителя
  • (Правильный ответ) вызов конструктора приводит к вызову конструкторов всех предков класса

Решение – это:

  • (Правильный ответ) модуль, содержащий проекты и другие ресурсы
  • специальный компонент проекта
  • специальный тип проекта
  • стартовый проект на языке C#

Правда ли, что:

  • (Правильный ответ) от типов фактических аргументов зависит, какой из перегруженных методов будет вызван
  • явные преобразования всегда безопасны
  • (Правильный ответ) неявные преобразования выполняются автоматически

Правда ли, что:

  • (Правильный ответ) в языке C# возможно объявить переменную типа char*
  • (Правильный ответ) метод IndexOf класса Array применим к строкам
  • (Правильный ответ) массив char[] позволяет работать со строкой постоянной длины

Метод можно описать на уровне:

  • решения
  • (Правильный ответ) класса
  • пространства имен
  • проекта

Операции упаковки и распаковки (boxing, unboxing)

  • (Правильный ответ) преобразуют объекты значимого типа в ссылочный и обратно
  • обе операции выполняются автоматически, не требуя явного задания преобразования типов
  • задают преобразование строк из кодировки Unicode в кодировку ASCII и обратно

Правда ли, что:

  • (Правильный ответ) каждому элементу управления формы соответствует поле класса, задающего форму
  • (Правильный ответ) при открытии формы методом ShowDialog она появляется как модальное окно
  • (Правильный ответ) каждая проектируемая форма является экземпляром отдельного класса – наследника класса Form

Отметьте истинное высказывание:

  • если метод класса А объявлен с модификатором virtual, то для него применяется статическое связывание
  • у класса может быть только один непосредственный потомок
  • (Правильный ответ) в проектах на C# контроль типов выполняется на этапе компиляции
  • класс называется абстрактным, если он не вводит собственных полей данных
  • у класса может быть несколько непосредственных родительских классов

Для выделения из текста подстроки, состоящей из трех символов, в которой первый и третий символы являются буквами т или к, а второй символ произвольной буквой кириллицы в нижнем регистре, следует использовать шаблон:

  • (Правильный ответ) @»[т|к][а-я][т|к]»
  • @»[т|к]?[т|к]»
  • @»т|к.т|k»

Пусть процедура ItWorks имеет следующий заголовок:
public void ItWorks(int[] A). Какой массив может быть передан ей в качестве аргумента?

  • string[] s
  • Person[] p; (Person – класс, определенный пользователем).
  • byte[] y
  • (Правильный ответ) int[] x

Правда ли, что:

  • (Правильный ответ) в C# многомерный массив и массив массивов – это два разных вида массивов
  • (Правильный ответ) константные массивы можно использовать только при инициализации массивов
  • (Правильный ответ) в процедуре, которой передан массив в качестве аргумента, можно определить все характеристики этого массива

Отметьте правильное высказывание:

  • (Правильный ответ) аргументы в методе Format позволяют задать ссылку и способ форматирования объектов, вставляемых в строку
  • операция (s+s1) определена только над строками, содержащими числа
  • эквивалентность строк (s ==s1) означает совпадение ссылок s и s1
  • получить i-й символ строки, используя операцию взятия индекса s[i], недопустимо
  • у класса string нет статических методов

Правда ли, что:

  • (Правильный ответ) выражение C# может обладать побочным эффектом
  • вычисление выражения ведется слева направо, начиная с самой левой операции
  • (Правильный ответ) операция сложения не определена для операндов типа short

Отметьте истинные высказывания

  • объявления int[] и double[] задают один и тот же класс-массив
  • в массивы C# можно добавлять и удалять элементы
  • (Правильный ответ) элементы массива доступны для чтения и записи
  • (Правильный ответ) если у метода формальный аргумент является массивом, то его можно вызывать по значению, опуская описатели ref или out, даже если его элементы меняются в теле метода, но не меняется сам массив (ссылка)

Перечисление – это

  • абстрактный класс
  • (Правильный ответ) класс без собственных полей
  • (Правильный ответ) класс без собственных методов

Атрибут условной компиляции Conditional:

  • в качестве аргумента принимает выражение над константами условной компиляции
  • может задаваться для метода и отдельного оператора
  • (Правильный ответ) в качестве аргумента принимает только константу условной компиляции
  • (Правильный ответ) может задаваться только для метода
  • может задаваться для метода и класса

Отметьте истинные высказывания:

  • (Правильный ответ) существует неявное преобразование переменных арифметического типа в объекты
  • (Правильный ответ) возможно явное преобразование объектов в переменные арифметического типа
  • (Правильный ответ) переменная арифметического типа в определенном контексте воспринимается как объект
  • существует неявное преобразование объектов в переменные арифметического типа

Укажите истинные высказывания:

  • (Правильный ответ) операции упаковки и распаковки могут выполняться при замене формальных аргументов метода на фактические аргументы
  • (Правильный ответ) присваивание может быть ссылочным или значимым в зависимости от типа цели
  • (Правильный ответ) целью называется левая часть оператора присваивания, а также формальный аргумент при передаче фактического аргумента в процедуру или функцию в момент вызова

Преобразования между значимыми и ссылочными типами

  • должны быть явными
  • (Правильный ответ) используют операции boxing и unboxing
  • (Правильный ответ) могут быть неявными
  • всегда допустимы
  • никогда не допустимы

Правда ли, что:

  • (Правильный ответ) обработчику события передаются входные аргументы, характеризующие событие, а он может передать объекту, создавшему событие, выходные аргументы
  • класс, обрабатывающий события, может отсоединить обработчики событий других классов, чтобы они не мешали его работе
  • (Правильный ответ) делегат, задающий тип события, может иметь произвольную сигнатуру

Отметьте правильные объявления:

  • (Правильный ответ) char[] e = new char[4]{‘a’, ‘b’, ‘c’, ‘d’};
  • (Правильный ответ) char f1;
  • int n = 4; char[] g = new char[n]{‘a’,’b’,’c’,’d’};

Метод Assert

  • заменяет механизм исключений
  • (Правильный ответ) при нарушении утверждения открывает специальное диалоговое окно
  • (Правильный ответ) позволяет контролировать корректность выполнения вычислений

Отметьте истинные высказывания:

  • только процедуры являются методами класса
  • формальный аргумент метода может быть выражением
  • (Правильный ответ) перегруженными называются методы с одинаковыми именами, но с разной сигнатурой
  • (Правильный ответ) ключевые слова ref и out являются частью сигнатуры метода

Пусть x – объект класса int[]. В вызове x.M роль M может играть:

  • (Правильный ответ) метод CopyTo
  • (Правильный ответ) свойство Length
  • (Правильный ответ) метод GetLength

Какие из трех образцов: @»\s*[а-я]+\s», @»[А-Яа-я]+», @»\s[А-Яа-я]+\s» включат слово «папа» в результат найденного соответствия при поиске в строке «папа мама и я»:

  • (Правильный ответ) 1-й и 2-й
  • все три образца
  • 2-й и 3-й
  • ни один из образцов

Отметьте истинные утверждения:

  • невыполнение утверждения Assert приводит к выбрасыванию исключения
  • (Правильный ответ) для каждого проекта создаются по умолчанию две конфигурации — Debug и Release
  • схема обработки исключений в C# – это схема с возобновлением
  • блок finally выполняется только, если в охраняемом блоке выброшено исключение
  • (Правильный ответ) непрерывность программной системы означает, что малым изменениям спецификации соответствуют малые изменения программного текста

Отметьте истинные высказывания:

  • (Правильный ответ) делегаты могут иметь родовые параметры
  • (Правильный ответ) родовые параметры универсального класса могут задаваться как на уровне класса, так и на уровне методов
  • наследник универсального класса всегда универсален
  • класс без родовых параметров может быть наследником универсального интерфейса
  • для универсального класса не может указываться атрибут сериализации

Выберите верные высказывания:

  • (Правильный ответ) исключения являются нормальным способом уведомления об ошибках, возникающих в процессе выполнения программы
  • (Правильный ответ) семантика присваивания для ссылочных и значимых типов различна
  • преобразование из типа byte в тип int относится к явным преобразованиям

Правда ли, что:

  • емкость буфера, отводимой строке класса StringBuilder всегда равна 1Кб
  • (Правильный ответ)
Узнать сколько стоит решение этого задания
(ответ в течение 5 мин.)
X