1. Основы C# Flashcards

1
Q

Что такое тип переменной?

A

Формат хранения информации в памяти.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Как преобразовать строковое представление числа в double?

A

Вариант ответа 1, простой:
double.Parse, Convert.ToDouble

Вариант ответа 2, более сложный: double.TryParse -

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

3/2+1.5

A

2.5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Math.Round(5)/2 + 3.5

A

6.0

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Что такое метод?

A

Именованная последовательность инструкций

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Как объявить метод в C#?

A

Указать возвращаемое значение, имя метода, список аргументов в скобках с указанием их типов
Если метод “глобальный”, то надо указать static

static bool Method(int arg1, double arg2)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Что такое var?

Можно ли написать так: var a;

A

Синтаксический сахар, предлагающий компилятору вывести наиболее подходящий тип на основании возвращаемого справа значения.

var a = new int[5];
эквивалентно
int[] a = new int [5];

Если справа нет значения, то компилятор не сможет вывести тип var и выдаст ошибку.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Как прочитать целое число из консоли?

A

Вариант ответа 1, простой: Console.ReadLine, а затем int.Parse

Вариант ответа 2, более сложный: Console.Read до символа-разделителя или -1, а затем int.Parse

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Пусть n и m имеют тип int и n < m.
Возможно ли, что m*m < n?
При каких m и n?

A

int.Max - это (2^31 - 1)
Достаточно, чтобы m*m было больше int.Max, чтобы произошло переполнение.
Например, 2^15 будет достаточно.
Строго говоря, переполнение впервые произойдет на 46341, но не надо его считать.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Пусть a и b имеют тип double. Какое значение у следующего выражения? Почему так?
(a + b)(a + b) == aa + 2ab + b*b

A

Обычно true, но при некоторых значениях, например
double a = Math.Sqrt(7);
double b = Math.Sqrt(3);
будет false.

Существует ограниченное количество чисел с плавающей точкой, поэтому вычисления происходят с некоторой погрешностью. Как следствие, порядок вычислений влияет на погрешность и результат.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Какие типы ошибок могут возникать в процессе разработки программы?

A

В курсе явно указывались ошибки компиляции, времени выполнения, стилистические. Ничего страшного, если будет указано больше: ошибки алгоритма, проектирования

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Как запустить программу под отладчиком в Visual Studio?

A

Ответ 1: Использовать клавишу F5.

Ответ 2: Также можно подключиться к существующему процессу через Debug/Attach Process

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Когда стоит использовать enum?

A

Когда есть конечное число значений

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Что может находиться внутри круглых скобок выражения if?

A

Выражение, возвращающее значение типа bool

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Для чего применяется слово default в выражении switch?

A

Чтобы указать инструкции, которые надо выполнить, если ни один из case не подошел.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

<p>Как можно улучшить код:if (a) return 25;else return 0;</p>

A

<p>Ответ 1: if (a) return 25;return 0;

Ответ 2 (более сложный) return a ? 25 : 0;</p>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Перепишите for с помощью цикла while:for (var i = 0; i < 10; i += 2) {}

A

{ var i = 0; while(i < 10) { i += 2; }}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Что может находиться в 1-ой секции for?

A

Декларация либо присваивание значений нескольким переменным одного типа

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Что может находиться в 2-ой секции for?

A

Условие: любое выражение, возвращающее bool

20
Q

Что может находиться в 3-ей секции for?

A

Выражения, разделенные запятой. Например, использование операторов или вызов методов

21
Q

Когда целесообразно использовать for, а когда foreach для перебора всех элементов коллекции?

A

for если нужен индекс. Иначе foreach

22
Q

Что делает break в цикле?

A

Выходит из текущего цикла. Только из одного.

23
Q

Что делает continue в цикле?

A

Переходит к следующей итерации текущего цикла.

24
Q

В чем ошибка? Как исправить?for (var i = 0; i < 10; i++); Console.WriteLine(i);

A

Точка с запятой в конце первой строчки приводит к тому, что цикл пустой.for (var i = 0; i < 10; i++) Console.WriteLine(i);

25
Q

Как выйти из двойного цикла?for (var i = 0; i < 10; i++){ for (var j = 0; j < 5; j++) { var c = i + j; //отсюда, если c == 7 }}

A

Последовательно использовать break за счет дополнительного флага:for (var i = 0; i < 10; i++){ var goOut = false; for (var j = 0; j < 5; j++) { var c = i + j; if (c == 7) { goOut = true; break; } } if (goOut) break;}

26
Q

Как сделать бесконечный цикл на for?

A

for ( ; ; );for ( ; ; ) { }

27
Q

Как получить последний элемент в массиве?

A

Использовать известную длину массиваxs[xs.Length - 1]

28
Q

Чему равно выражение?new int[] { 1, 2, 3 } == new int[] { 1, 2, 3 }

A

false. Будут сравниваться будут ссылки на массивы, а здесь массивы - это 2 разных объекта

29
Q

Какое значение получить быстрее в массиве из 5 элементов values:values[1]values[3]

A

Одинаково. Индекс всего лишь означает сдвиг адреса, из которого будет зачитано значение.

30
Q

Пусть class Point { }Нарисовать карту памяти:Point[] ps = new Point[] {new Point(), new Point()};Point[] ns = new Point[4];double xs = new double[3];

A

ps: массив в куче, элементы указывают на объекты Point, находящиеся в куче.ns: массив в куче, но заполнен null.xs: массив в куче, заполнен 0.0.

31
Q

Где хранится строка?

A

В куче

32
Q

В чем ошибка? Как исправить?File.ReadAllLines(“C:\Users\user123\document.txt”)

A

Надо использовать такой формат задания строки:@”C:\Users\user123\document.txt”Либо экранировать все обратные слэши с помощью дополнительных слэшей:”C:\Users\user123\document.txt”

33
Q

Чем отличается массив от листа?

A

Первый фиксированной длины, второй - изменяющейся, можно добавлять и исключать элементы.

34
Q

Для чего нужно экранирование символов? Приведите примеры.

A

//Так писать нельзя, поскольку компилятор пытается воспринять \U как спецсимвол //Console.WriteLine(“C:\Users\admin”); // ошибка компиляции//Поэтому бэкслеш надо экранировать Console.WriteLine(“C:\Users\admin”);//Или использовать особую строку, в которой спецсимволы не допускаются Console.WriteLine(@”C:\Users\admin”);

35
Q

В каких случаях нужно использовать StringBuilder?

A

Когда надо собрать длинную строчку из большого числа маленьких. Например, из массива строк.

36
Q

Чем отличается StringBuilder от List?

A

Идейно - ничем. А так - наличием дополнительных методов, которые облегчают его использование.

37
Q

В чем ошибка?string a;var parts = a.Split(“ “);Как написать SafeSplit, чтобы не было NullReferenceException в кодеstring a;var parts = a.SafeSplit(“ “);

A

Переменной a не присвоено значение и поэтому будет NullReferenceException

38
Q

Что такое автоматическое тестирование?

A

Процесс, когда корректность одной программы проверяется другой программой

39
Q

Как создать заглушку метода (stub)

A

Надо написать сигнатуру метода, а внутри выкинуть NotImplementedException

40
Q

Как создать библиотеку в C#?

A

Создать отдельный проект и указать у него тип Class Library

41
Q

Как бороться с дублирование кода в тестах?

A

Выделить специальный метод, который в параметрах принимает данные и ожидаемый результат, а внутри делает проверку. В тестах использовать его

42
Q

Что такое покрытие тестами?

A

Доля строк кода тестируемой программы, выполненных при запуске комплекта тестов

43
Q

Приведите особенности функционального тестирования.

A

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

44
Q

Предложите тесты для решения задачи поиска расстояния от точки до отрезка

A

Пусть есть отрезок AB и точка C. 1) A = B = C2) A = B != C3) A = C != B4) B = C != B5) A != B, C ∈ AB6) Основание перпендикуляра C на AB лежит на AB, C∉AB Рассмотреть обе полуплоскости.7) A != B, C лежит на прямой AB, но вне отрезка. Рассмотреть вариант ближе к A и ближе к B8) Основание перпендикуляра C на AB не лежит на AB. C не лежат на прямой AB. Рассмотреть вариант ближе к A и ближе к B

45
Q

Что лежит в переменной после объявления?string a;int b;int[] xs;bool f;

A

a == nullb == 0xs == nullf == false

46
Q

Когда следует выделять метод?

A

Ожидаемый ответ:Копи-паст (нарушение DRY)Метод слишком длинныйПродвинутый ответ включает:У метода несколько ответственностей (маркер - сложно дать методу название) -