Вопрос 42
В чем разница инкапсуляции и сокрытия?
Ответ
Сокрытие – более общий термин. Инкапсуляция – частный случай в ООП. Инкапсуляция – технология, при которой мы прячем поле от доступа напрямую и даем к нему доступ через свойства и методы.
Более подробно на Stack
Вопрос 43
Что такое частные и общие сборки?
Ответ
Частная сборка – файл exe или dll, содержащий классы, частную сборку кладут рядом с проектом, в каталог программы и подключают.
Общие сборки хранятся в GAC – global access cache.
Вопрос 44
Что такое .Net Framework?
Ответ
.NET Framework — программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является общеязыковая среда исполнения Common Language Runtime (CLR), которая подходит для разных языков программирования. Функциональные возможности CLR доступны в любых языках программирования, использующих эту среду.
Вопрос 45
Чем управляемый код (managed code) отличается от неуправляемого (unmanaged code)?
Ответ
Управляемый код – автоматическая сборка мусора. Можно просто создавать объекты.
Неуправляемый код – нужно удалять объекты в ручную.
В первом приближении управляемым кодом называется код, выполнение которого управляется средой выполнения. В этом случае соответствующая среда выполнения называется общеязыковой средой выполнения или средой CLR, независимо от реализации (Mono, .NET Framework или .NET Core). Среда CLR отвечает за использование управляемого кода, его компиляцию в машинный код и последующее выполнение.Кроме того, среда выполнения предоставляет несколько важных служб, таких как автоматическое управление памятью, границы безопасности, безопасность типа и т. д.
Более подробно на сайте Microsoft
Вопрос 46
LINQ lazy loading, eager loading в чем разница
Ответ
В Entity Framework есть три способа загрузки данных:
- eager loading(“жадная загрузка”)
- explicit loading(“явная загрузка”)
- lazy loading(“ленивая загрузка”)
Более подробно на metanit
Также на Stack
Вопрос 47
Можно ли запретить наследование от своего собственного класса?
Ответ
Да, модификатором sealed. Пример
1 2 3 4 5 6 7 8 9 |
public sealed class C1 { } public class C2:C1 { } |
Вопрос 48
Можно ли разрешить наследование класса, но запретить переопределение метода?
Ответ
Да, модификатором sealed. Пример
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
class A { public virtual void M() { } public virtual void N() { } } class B : A { public sealed override void M() { } } class C : B { //Выдаст ошибку public override void M() { } public override void N() { throw new NotSupportedException("метод не поддерживается"); } } |
Вопрос 49
Определение паттерна синглтон.
Ответ
Это класс, который позволяет создавать только один экземпляр
Вопрос 50
Thread, task, примеры использования?
Примеры для Thread (подробнее на metanit)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
// Thread Thread t = new Thread(new ThreadStart(Count)); t.Start(); void Count() { for (int i = 0; i < 10; i++) { Console.WriteLine(i); } Console.ReadLine(); } // Thread with params Thread t1 = new Thread(new ParameterizedThreadStart(CountWithParams)); t1.Start(5); void CountWithParams(object number) // { for (int i = 0; i < (int)(number); i++) { Console.WriteLine(i); } Console.ReadLine(); } // lyambda var t3 = new Thread(()=> { Count(); }); t3.Start(); |
Примеры для Task (подробнее на metanit)
1 2 3 4 5 6 7 8 9 10 |
Task t = new Task(()=> { Console.WriteLine("Hello Task"); }); t.Start(); Task t2 = Task.Factory.StartNew(() => { Console.WriteLine("Hello Task2"); }); Task t3 = Task.Run(()=> Console.WriteLine("Hello Task3")); t.Wait(); // Main будет ждать. пока не отработает t Console.WriteLine("Завершение Main"); Console.ReadLine(); |
Вопрос 51
Что такое интеграционные тесты и unit-тесты?
- Блочное (Unit testing) — тестирование одного модуля в изоляции.
- Интеграционное (Integration Testing) — тестирование группы взаимодействующих модулей.
- Системное (System Testing) — тестирование системы в целом.
Вопрос 52
Что такое MVVM?
Ответ
- Модель (англ. Model) (так же, как в классической MVC) представляет собой логику работы с данными и описание фундаментальных данных, необходимых для работы приложения.
- Представление (англ. View) — графический интерфейс (окна, списки, кнопки и т. п.). Выступает подписчиком на событие изменения значений свойств или команд, предоставляемых Моделью Представления. В случае, если в Модели Представления изменилось какое-либо свойство, то она оповещает всех подписчиков об этом, и Представление, в свою очередь, запрашивает обновлённое значение свойства из Модели Представления. В случае, если пользователь воздействует на какой-либо элемент интерфейса, Представление вызывает соответствующую команду, предоставленную Моделью Представления.
- Модель Представления (англ. ViewModel) — с одной стороны, абстракция Представления, а с другой — обёртка данных из Модели, подлежащие связыванию. То есть, она содержит Модель, преобразованную к Представлению, а также команды, которыми может пользоваться Представление, чтобы влиять на Модель.
Вопрос 53
Что будет выведено в результате выполнения программы?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class Program { private enum En { First = 15, Second, Third = 54 } static void Main(string[] args) { Console.WriteLine((int)En.Second); Console.Read(); } } |
Варианты ответов:
- 0
- 1
- 16
- Возникнет ошибка на этапе компиляции
Ответ
16
Вопрос 54
Когда использовать StringBuilder предпочтительнее, чем string:
- Если строка редко изменяется
- Если строка часто изменяется
- Если строка содержит спецсимволы
- Если строка содержит исключительно цифры
Ответ
Если строка часто изменяется. Так как после присвоения значения строка становится immutable, поэтому для изменения значения нужно создавать новый объект.
Вопрос 55
Что будет выведено в результате выполнения программы?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class Program { static void Main(string[] args) { int c = 3; Console.Write(Sum(5,3,out c)+" "); Console.Write(c); Console.ReadLine(); } static int Sum(int a, int b, out int c) { return a + b; } } |
Варианты ответов:
- 8
- 8 3
- 8 0
- Возникнет ошибка на этапе компиляции
Ответ
Возникнет ошибка на этапе компиляции. Out параметр должен быть проинициализирован внутри метода.
Вопрос 56
Что будет выведено в результате выполнения программы?
1 2 3 4 5 6 7 8 9 10 |
class Program { static void Main(string[] args) { var a = null; a = 10; Console.WriteLine(a); Console.ReadLine(); } } |
Варианты ответов:
- 0
- 10
- Пустая строка
- Возникнет ошибка на этапе компиляции
Ответ
Возникнет ошибка на этапе компиляции. var должен быть проинициализирован