Назовите важные 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 представляет собой упорядоченную коллекцию объектов, которые можно индексировать индивидуально. По сути, это альтернатива массиву. На картинке описаны основные различия.
В чем разница между методами Dispose() и Finalize()?
Основное различие между обоими методами заключается в том, что метод Dispose() используется для освобождения неуправляемых ресурсов объекта, а метод Finalize также используется для той же цели, но он не гарантирует сбор мусора объекта. Еще одним важным отличием является то, что метод Dispose() вызывается пользователем явно, а метод Finalize() вызывается сборщиком мусора непосредственно перед уничтожением объекта.
Основное различие между обоими методами заключается в том, что метод Dispose() используется для освобождения неуправляемых ресурсов объекта, а метод Finalize также используется для той же цели, но он не гарантирует сбор мусора объекта. Еще одним важным отличием является то, что метод Dispose() вызывается пользователем явно, а метод Finalize() вызывается сборщиком мусора непосредственно перед уничтожением объекта.
В чем основные отличия класса от структуры в языке C#?
Основные отличия класса от структуры следующие:
✍🏻 Структура является размерным типом, а класс — ссылочным.
✍🏻 Все структурные типы неявно наследуются от System.ValueType, они не бывают абстрактными и всегда неявно запечатаны (sealed)
✍🏻 При присваивании переменных структурного типа, создается копия данных
✍🏻 Объявления полей структуры не могут иметь инициализаторов
✍🏻 Различная интерпретация this для структуры и класса
✍🏻 Структура не может содержать конструктор без параметров
✍🏻 Структура не может содержать деструктор
✍🏻 Для ссылочных типов значение по умолчанию — null
✍🏻 При конвертировании между ссылочным и размерным типами происходит упаковка и распаковка.
Основные отличия класса от структуры следующие:
✍🏻 Структура является размерным типом, а класс — ссылочным.
✍🏻 Все структурные типы неявно наследуются от System.ValueType, они не бывают абстрактными и всегда неявно запечатаны (sealed)
✍🏻 При присваивании переменных структурного типа, создается копия данных
✍🏻 Объявления полей структуры не могут иметь инициализаторов
✍🏻 Различная интерпретация this для структуры и класса
✍🏻 Структура не может содержать конструктор без параметров
✍🏻 Структура не может содержать деструктор
✍🏻 Для ссылочных типов значение по умолчанию — null
✍🏻 При конвертировании между ссылочным и размерным типами происходит упаковка и распаковка.
Что означает модификатор virtual?
Модификатор virtual служит для того, чтобы помечать виртуальные методы или свойства в классе родителя. Виртуальные методы (свойства) — это такие методы, которые мы хотим переопределить в классах наследниках. А чтобы переопределить метод в классе-наследнике, этот метод определяется с модификатором override. Переопределенный метод в классе-наследнике должен иметь тот же набор параметров, что и виртуальный метод в базовом классе.
Переопределять можно и невиртуальные методы, но тогда выбор метода (родителя или наследника) будет осуществляться статически во время компиляции на основании типа переменной, а не типа объекта, хранящейся в ней.
Модификатор virtual служит для того, чтобы помечать виртуальные методы или свойства в классе родителя. Виртуальные методы (свойства) — это такие методы, которые мы хотим переопределить в классах наследниках. А чтобы переопределить метод в классе-наследнике, этот метод определяется с модификатором override. Переопределенный метод в классе-наследнике должен иметь тот же набор параметров, что и виртуальный метод в базовом классе.
Переопределять можно и невиртуальные методы, но тогда выбор метода (родителя или наследника) будет осуществляться статически во время компиляции на основании типа переменной, а не типа объекта, хранящейся в ней.
Ответьте на 3 вопроса, чтобы получить вводные занятия к курсу «Алгоритмы и структуры данных»
🔥Получите вводные занятия, ответив на 3 вопроса – https://proglib.io/w/504b46d1
На вводной части вас ждут:
1. Лекция «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов
2. Лекция «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ
3. Практические задания после лекций
4. Ссылки на дополнительные материалы для самостоятельного изучения
⚡️ Переходите и начинайте учиться уже сегодня – https://proglib.io/w/504b46d1
🔥Получите вводные занятия, ответив на 3 вопроса – https://proglib.io/w/504b46d1
На вводной части вас ждут:
1. Лекция «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов
2. Лекция «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ
3. Практические задания после лекций
4. Ссылки на дополнительные материалы для самостоятельного изучения
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое частные и общие сборки?
Частные сборки:
✍🏻 Видны только самому приложению
✍🏻 Нет необходимости заботиться об уникальном имени во всем глобальном пространстве имен
✍🏻 Не нужно делать записей в реестре при развертывании приложения
✍🏻 Сборки просто копируются в директорию приложения или в подчинённую директорию
✍🏻 Общая среда выполнения (CLR) при запуске приложения прочитает его манифест и определит какие сборки необходимы. Затем будет произведен поиск нужной сборки по директории приложения (процесс зондирования)
Общие сборки:
✍🏻 Могут быть использованы сразу несколькими приложениями
✍🏻 Сборка должна иметь строгое имя (strong name)
✍🏻 Сборка должна быть помещена в общедоступное место — Global Assembly Cache (GAC, глобальный кэш сборок)
Частные сборки:
✍🏻 Видны только самому приложению
✍🏻 Нет необходимости заботиться об уникальном имени во всем глобальном пространстве имен
✍🏻 Не нужно делать записей в реестре при развертывании приложения
✍🏻 Сборки просто копируются в директорию приложения или в подчинённую директорию
✍🏻 Общая среда выполнения (CLR) при запуске приложения прочитает его манифест и определит какие сборки необходимы. Затем будет произведен поиск нужной сборки по директории приложения (процесс зондирования)
Общие сборки:
✍🏻 Могут быть использованы сразу несколькими приложениями
✍🏻 Сборка должна иметь строгое имя (strong name)
✍🏻 Сборка должна быть помещена в общедоступное место — Global Assembly Cache (GAC, глобальный кэш сборок)
Можно ли разрешить наследование класса, но запретить переопределение метода?
Можно для второго класса в иерархии наследования, если переопределяем виртуальный метод как sealed override, тогда дальнейшее переопределение по цепочке наследования запрещено.
Можно для второго класса в иерархии наследования, если переопределяем виртуальный метод как sealed override, тогда дальнейшее переопределение по цепочке наследования запрещено.
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Объясните разницу между System.Array.CopyTo() и System.Array.Clone()?
CopyTo требует наличия выходного массива, тогда как Clone создает новый массив.
CopyTo позволяет указывать индекс элемента, начиная с которого производить копирование.
CopyTo требует наличия выходного массива, тогда как Clone создает новый массив.
CopyTo позволяет указывать индекс элемента, начиная с которого производить копирование.