Что такое модульное тестирование и как его провести в C#?
Пример ответа: «Модульное тестирование — это техника тестирования, где изолированно тестируются отдельные модули или компоненты кода для обеспечения корректного функционирования. В C# модульное тестирование проводится с помощью таких фреймворков, как NUnit или MSTest. Пишутся тестовые методы, выполняющие нужные части кода и подтверждающие, что получено ожидаемое поведение. Модульное тестирование помогает раньше идентифицировать баги, улучшает качество кода и содействует сопровождаемости».
Пример ответа: «Модульное тестирование — это техника тестирования, где изолированно тестируются отдельные модули или компоненты кода для обеспечения корректного функционирования. В C# модульное тестирование проводится с помощью таких фреймворков, как NUnit или MSTest. Пишутся тестовые методы, выполняющие нужные части кода и подтверждающие, что получено ожидаемое поведение. Модульное тестирование помогает раньше идентифицировать баги, улучшает качество кода и содействует сопровождаемости».
Можно ли переопределить частный виртуальный метод?
Нет, потому что они недоступны вне класса.
Нет, потому что они недоступны вне класса.
В чём разница между ключевыми словами readonly и const в C#?
Пример ответа: «Ключевое слово readonly в C# используется для полей экземпляров, которые могут быть присвоены только во время объявления или в конструкторе. После присвоения их значения невозможно поменять. Ключевое слово const используется для статических констант, которые можно только прочесть и нельзя изменить во время работы программы. Полям const нужно присваивать значение во время объявления».
Пример ответа: «Ключевое слово readonly в C# используется для полей экземпляров, которые могут быть присвоены только во время объявления или в конструкторе. После присвоения их значения невозможно поменять. Ключевое слово const используется для статических констант, которые можно только прочесть и нельзя изменить во время работы программы. Полям const нужно присваивать значение во время объявления».
Каким образом можно создать анимацию перехода между сценами в Unity?
Можно использовать метод SceneManager.LoadScene() для загрузки новой сцены и перехода к ней.
Можно использовать метод SceneManager.LoadScene() для загрузки новой сцены и перехода к ней.
Что такое абстрактный класс?
Это класс, объект которого не может быть создан. Такой класс должен иметь класс-наследник с реализацией абстрактных методов. Абстрактный класс — это фактически чертёж нормального класса без реализации.
Это класс, объект которого не может быть создан. Такой класс должен иметь класс-наследник с реализацией абстрактных методов. Абстрактный класс — это фактически чертёж нормального класса без реализации.
Сравнение строк
Для сравнения строк применяется статический метод Compare.
Данная версия метода Compare принимает две строки и возвращает число. Если первая строка по алфавиту стоит выше второй, то возвращается число меньше нуля. В противном случае возвращается число больше нуля. И третий случай — если строки равны, то возвращается число 0.
В данном случае так как символ h по алфавиту стоит выше символа w, то и первая строка будет стоять выше.
Для сравнения строк применяется статический метод Compare.
Данная версия метода Compare принимает две строки и возвращает число. Если первая строка по алфавиту стоит выше второй, то возвращается число меньше нуля. В противном случае возвращается число больше нуля. И третий случай — если строки равны, то возвращается число 0.
В данном случае так как символ h по алфавиту стоит выше символа w, то и первая строка будет стоять выше.
Библиотека собеса по C# | вопросы с собеседований
Please open Telegram to view this post
VIEW IN TELEGRAM
В чем суть полиморфизма?
Полиморфизм — способность функции обрабатывать данные разных типов.
Ad-hoc полифорфизм (перегрузка функций, приведение типа) — можно создать несколько методов с одним именем и разными аргументами, примитивные типы могут неявно приводиться.
Параметрический полиморфизм (обобщённое программирование) — можно создать полиморфные (обобщённые) типы.
Полиморфизм включения (наследование) — интерфейсы, наследование классов, виртуальные функции.
Полиморфизм — способность функции обрабатывать данные разных типов.
Ad-hoc полифорфизм (перегрузка функций, приведение типа) — можно создать несколько методов с одним именем и разными аргументами, примитивные типы могут неявно приводиться.
Параметрический полиморфизм (обобщённое программирование) — можно создать полиморфные (обобщённые) типы.
Полиморфизм включения (наследование) — интерфейсы, наследование классов, виртуальные функции.
Назовите важные IDE для разработки на C#.
Следующие IDE полезны при разработке на C#:
✍🏻 MonoDevelop
✍🏻 Visual Studio Code (VS Code)
✍🏻 Browxy
✍🏻 Visual Studio Express (VSE)
✍🏻 Visual Web Developer (VWD)
Следующие IDE полезны при разработке на C#:
✍🏻 MonoDevelop
✍🏻 Visual Studio Code (VS Code)
✍🏻 Browxy
✍🏻 Visual Studio Express (VSE)
✍🏻 Visual Web Developer (VWD)
Что такое цепочка конструкторов в C#?
Цепочка конструкторов — это способ соединить два или более классов в отношениях в виде наследования. В цепочке конструкторов каждый конструктор дочернего класса неявно сопоставляется с конструктором родительского класса с помощью ключевого слова base, поэтому, когда вы создаете экземпляр дочернего класса, он вызывает конструктор родительского класса. Без этого наследование невозможно.
Цепочка конструкторов — это способ соединить два или более классов в отношениях в виде наследования. В цепочке конструкторов каждый конструктор дочернего класса неявно сопоставляется с конструктором родительского класса с помощью ключевого слова base, поэтому, когда вы создаете экземпляр дочернего класса, он вызывает конструктор родительского класса. Без этого наследование невозможно.
Что такое MVVM?
Шаблон MVVM (Model-View-ViewModel) позволяет разделить бизнес-логику от представления, применяется в технологии WPF. Основные элементы:
Модель (Model) описывает используемые в приложении данные. Модели могут содержать логику, непосредственно связанную этими данными, например, логику валидации свойств модели.
Представление (View) — определяет визуальный интерфейс (кнопки, текстовые поля и прочие визуальные элементы), через который пользователь взаимодействует с приложением.
Модель Представления (ViewModel) — связывает модель и представление через механизм привязки данных. Если в модели изменяются значения свойств, автоматически идет изменение отображаемых данных в представлении, хотя напрямую модель и представление не связаны. ViewModel также содержит логику по получению данных из модели, которые потом передаются в представление. И также VewModel определяет логику по обновлению данных в модели.
Шаблон MVVM (Model-View-ViewModel) позволяет разделить бизнес-логику от представления, применяется в технологии WPF. Основные элементы:
Модель (Model) описывает используемые в приложении данные. Модели могут содержать логику, непосредственно связанную этими данными, например, логику валидации свойств модели.
Представление (View) — определяет визуальный интерфейс (кнопки, текстовые поля и прочие визуальные элементы), через который пользователь взаимодействует с приложением.
Модель Представления (ViewModel) — связывает модель и представление через механизм привязки данных. Если в модели изменяются значения свойств, автоматически идет изменение отображаемых данных в представлении, хотя напрямую модель и представление не связаны. ViewModel также содержит логику по получению данных из модели, которые потом передаются в представление. И также VewModel определяет логику по обновлению данных в модели.
Thread, task, примеры использования?
Класс Thread создает и контролирует поток. На входе указывается метод, который будет выполняться в потоке.
Класс Task позволяет запускать отдельную продолжительную задачу. Она запускается асинхронно в одном из потоков из пула потоков, но ее можно запускать и синхронно.
var t = new Thread(() => Thread.Sleep(1000));
t.IsBackground = false; //основной поток, система сама ожидает его завершение
t.Start();
Task.Run(() => Task.Delay(1000)).Wait(); //с использованием TPL
Класс Thread создает и контролирует поток. На входе указывается метод, который будет выполняться в потоке.
Класс Task позволяет запускать отдельную продолжительную задачу. Она запускается асинхронно в одном из потоков из пула потоков, но ее можно запускать и синхронно.
var t = new Thread(() => Thread.Sleep(1000));
t.IsBackground = false; //основной поток, система сама ожидает его завершение
t.Start();
Task.Run(() => Task.Delay(1000)).Wait(); //с использованием TPL
Какой интерфейс должен реализовать класс, чтобы к переменной данного типа был применим оператор foreach?
Оператор foreach может быть использован с переменными, которые реализуют интерфейс IEnumerable или IEnumerable, или с экземпляром любого типа, который удовлетворяет следующим условиям:
— должен содержать открытый метод GetEnumerator без параметров, возвращающий класс, структуру или тип интерфейса;
— тип возвращаемого значения метода GetEnumerator должен иметь открытое свойство Current и открытый метод MoveNext без параметров, возвращающий значение типа Boolean.
Оператор foreach может быть использован с переменными, которые реализуют интерфейс IEnumerable или IEnumerable, или с экземпляром любого типа, который удовлетворяет следующим условиям:
— должен содержать открытый метод GetEnumerator без параметров, возвращающий класс, структуру или тип интерфейса;
— тип возвращаемого значения метода GetEnumerator должен иметь открытое свойство Current и открытый метод MoveNext без параметров, возвращающий значение типа Boolean.
Когда использовать StringBuilder предпочтительнее, чем string?
StringBuilder предпочтительнее использовать, если строка часто изменяется.
StringBuilder предпочтительнее использовать, если строка часто изменяется.