В чём разница между ключевыми словами 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 предпочтительнее использовать, если строка часто изменяется.
Дайте определение паттерна синглтон и предложите реализацию.
Одиночка (Singleton, Синглтон) — порождающий паттерн, который гарантирует, что для определенного класса будет создан только один объект, а также предоставит к этому объекту точку доступа. Используется тогда, когда необходимо, чтобы для класса существовал только один экземпляр. Синглтоны бывают потокобезопасные и нет, с простой и отложенной инициализацией.
Одиночка (Singleton, Синглтон) — порождающий паттерн, который гарантирует, что для определенного класса будет создан только один объект, а также предоставит к этому объекту точку доступа. Используется тогда, когда необходимо, чтобы для класса существовал только один экземпляр. Синглтоны бывают потокобезопасные и нет, с простой и отложенной инициализацией.
Разница IEnumerable и IQueryable при работе с удаленной БД?
Объект IEnumerable представляет набор данных в памяти и может перемещаться по этим данным только вперед.
IQueryable располагается в пространстве имен System.Linq. Объект предоставляет удаленный доступ к базе данных и позволяет перемещаться по данным как в прямом порядке от начала до конца, так и в обратном порядке. В процессе же выполнения запроса, происходит оптимизация запроса.
IEnumerable phoneIEnum = db.Phones;
var phones1 = phoneIEnum.Where(p => p.Id > id).ToList(); //SELECT * FROM PHONES, фильтрация на стороне клиента
IQueryable phoneIQuer = db.Phones;
int id = 3;
var phones2 = phoneIQuer.Where(p => p.Id > id).ToList(); //SELECT * FROM PHONES WHERE ID > 3
Объект IEnumerable представляет набор данных в памяти и может перемещаться по этим данным только вперед.
IQueryable располагается в пространстве имен System.Linq. Объект предоставляет удаленный доступ к базе данных и позволяет перемещаться по данным как в прямом порядке от начала до конца, так и в обратном порядке. В процессе же выполнения запроса, происходит оптимизация запроса.
IEnumerable phoneIEnum = db.Phones;
var phones1 = phoneIEnum.Where(p => p.Id > id).ToList(); //SELECT * FROM PHONES, фильтрация на стороне клиента
IQueryable phoneIQuer = db.Phones;
int id = 3;
var phones2 = phoneIQuer.Where(p => p.Id > id).ToList(); //SELECT * FROM PHONES WHERE ID > 3
В чем разница между Array и ArrayList?
Массив (Array) — это группа переменных одинакового типа, на которые ссылаются общим именем. ArrayList представляет собой упорядоченную коллекцию объектов, которые можно индексировать индивидуально. По сути, это альтернатива массиву. На картинке описаны основные различия.
Массив (Array) — это группа переменных одинакового типа, на которые ссылаются общим именем. ArrayList представляет собой упорядоченную коллекцию объектов, которые можно индексировать индивидуально. По сути, это альтернатива массиву. На картинке описаны основные различия.