.NET Interview Questions by https://www.interviewbit.com/ РУССКИЙ Flashcards
Как работает фреймворк .NET?
- Приложения на основе .NET Framework, написанные на поддерживающих языках, таких как C#, F# или Visual Basic, компилируются в Common Intermediate Language (CIL).
- Скомпилированный код хранится в виде файла сборки с расширением .dll или .exe.
- Когда приложение .NET запускается, Common Language Runtime (CLR) берет файл сборки и преобразует CIL в машинный код с помощью компилятора Just In Time (JIT).
- Теперь этот машинный код может выполняться на определенной архитектуре компьютера, на котором он запущен.
Расскажите об основных компонентах платформы .NET.
Ниже приведены основные компоненты .NET Framework:
Common Language Runtime (CLR):
* Это механизм выполнения, который запускает код и предоставляет службы, упрощающие процесс разработки.
* Службы, предоставляемые CLR, включают управление памятью, сборку мусора, безопасность типов, обработку исключений, безопасность и управление потоками. Это также упрощает проектирование приложений и компонентов, объекты которых взаимодействуют между языками.
* Программы, написанные для .NET Framework, выполняются CLR независимо от языка программирования. Каждая версия .NET Framework имеет CLR.
Framework Class Library (FCL):
* Имеет предопределенные методы и свойства для реализации общих и сложных функций, которые могут использоваться приложениями .NET. Он также предоставит типы для дат, строк, чисел и т. д.
* Эта библиотека классов включает API для подключения к базе данных, чтения и записи файлов, рисования и т. д.
Библиотека базовых классов (BCL):
* Библиотека базовых классов (BCL) имеет огромную коллекцию функций и возможностей библиотек, которые полезны при реализации различных языков программирования, таких как C#, F#, Visual C++ и т. д., в .NET Framework.
* BCL разделена на две части. Это:
- Библиотека определяемых пользователем классов: она включает сборки.
- Сборка: сборка .NET считается основным строительным блоком .NET Framework. Сборка в CLI (Common Language Infrastructure) — это логическая единица кода, которая используется для безопасности, развертывания и управления версиями. Сборка может быть определена в двух формах, а именно в виде библиотеки динамической компоновки (.dll) и исполняемых файлов (.exe).
При компиляции программы .NET будут сгенерированы метаданные с Microsoft Intermediate Language (MSIL), которые будут сохранены в файле Assembly. - Библиотека предопределенных классов: содержит пространство имен.
- Пространство имен: представляет собой набор предопределенных методов и классов, которые присутствуют в .Net Framework. Пространство имен можно добавить в программу .NET с помощью «using system», где using представляет ключевое слово, а system представляет пространство имен.
Система общих типов (CTS):
* CTS определяет стандарт, который будет указывать, какой тип данных и значений может быть определен и управляем в памяти во время выполнения.
* Он гарантирует, что данные программирования, определенные на разных языках, должны взаимодействовать друг с другом для обмена информацией. Например, в VB.NET мы определяем тип данных как целое число, тогда как в C# мы определяем int как тип данных.
* Его можно использовать для предотвращения потери данных при попытке перенести данные из типа на одном языке в его эквивалентный тип на другом языке.
Спецификация общего языка (CLS):
* Спецификация общего языка (CLS) является подмножеством CTS и определяет набор правил и положений, которым должен следовать каждый язык .NET Framework.
* CLS будет поддерживать взаимодействие или межъязыковую интеграцию, что означает, что она предоставляет общую платформу для взаимодействия и обмена информацией. Например, каждый язык программирования (C#, F#, VB .Net и т. д.) в рамках .NET Framework имеет свой собственный синтаксис. Поэтому, когда выполняются операторы, принадлежащие разным языкам, CLS предоставит общую платформу для взаимодействия и обмена информацией.
Что такое EXE и DLL?
EXE и DLL — это исполняемые модули сборки.
EXE — это исполняемый файл, который запускает приложение, для которого он разработан. EXE создается при сборке приложения. Поэтому сборки загружаются напрямую при запуске EXE. Однако EXE не может использоваться совместно с другими приложениями.
Библиотека динамической компоновки (DLL) — это библиотека, состоящая из кода, который необходимо скрыть. Код инкапсулирован внутри этой библиотеки. Приложение может состоять из множества DLL, которые могут использоваться совместно с другими программами и приложениями.
Что такое CTS?
CTS означает Common Type System (система общих типов). Она следует набору структурированных правил, согласно которым тип данных должен быть объявлен и использован в программном коде. Она используется для описания всех типов данных, которые будут использоваться в приложении.
Мы можем создавать собственные классы и функции, следуя правилам в CTS. Она помогает вызывать тип данных, объявленный в одном языке программирования, другими языками программирования.
Объясните CLS
Спецификация общего языка (CLS) помогает разработчикам приложений использовать компоненты, совместимые с разными языками, с определенными правилами, которые поставляются с CLS. Она также помогает повторно использовать код среди всех языков, совместимых с .NET.
Что такое JIT?
JIT означает Just In Time. Это компилятор, который преобразует промежуточный код в родной язык во время выполнения.
В чем разница между int и Int32?
Между int и Int32 нет никакой разницы. Int32 — это тип, предоставляемый классом фреймворка .NET, тогда как int — это псевдоним для Int32 в языке программирования C#.
Объясните различия между типом значения и ссылочным типом.
Основные различия между типом значения и ссылочным типом приведены ниже:
- Тип значения хранит фактические данные непосредственно в области памяти, а ссылочный тип содержит указатель, состоящий из адреса другой области памяти, в которой хранятся фактические данные.
- Тип значения хранит свое содержимое в стековой памяти, а ссылочный тип хранит свое содержимое в куче.
- Присвоение переменной типа значения другой переменной напрямую скопирует значение, а присвоение ссылочной переменной другой переменной не копирует значение, вместо этого создается вторая копия ссылки.
- Предопределенные типы данных, структуры, перечисления являются примерами типов значений. Классы, объекты, массивы, индексаторы, интерфейсы и т. д. являются примерами ссылочных типов.
В чем разница между управляемым и неуправляемым кодом?
Основное различие между управляемым и неуправляемым кодом приведено ниже:
Управляемый код
* Он управляется CLR.
* Для выполнения необходим фреймворк .NET.
* Управление памятью осуществляется посредством сборки мусора.
Неуправляемый код
* Он не управляется CLR.
* Не требует фреймворка .NET для выполнения.
* Среда выполнения заботится об управлении памятью.
Объясните промежуточный язык Microsoft
MSIL — это промежуточный язык Microsoft, который предоставляет инструкции для вызова методов, обработки памяти, хранения и инициализации значений, обработки исключений и т. д.
Инструкции, предоставляемые MSIL, не зависят от платформы и генерируются компилятором, зависящим от языка, из исходного кода. JIT-компилятор компилирует MSIL в машинный код на основе требований.
Что такое сборка?
Сборка — это файл, который автоматически генерируется компилятором, который состоит из набора типов и ресурсов, которые созданы для совместной работы и формирования логической единицы функциональности. Мы также можем сказать, что сборка — это скомпилированный код и логическая единица кода.
Сборки реализуются в виде исполняемых файлов (.exe) или файлов динамической библиотеки (.dll).
Отличается ли ASP.NET от ASP? Если да, то объясните, чем?
Да, ASP.NET и ASP (Active Server Pages) — это разные технологии. Давайте посмотрим, чем они отличаются друг от друга.
- ASP.NET использует языки .NET, такие как C# и VB.NET, которые компилируются в Microsoft Intermediate Language (MSIL). ASP использует VBScript. Код ASP интерпретируется во время выполнения.
- ASP.NET, разработанный Microsoft, используется для создания динамических веб-приложений, в то время как ASP — это серверная технология Microsoft, используемая для создания веб-страниц.
- ASP.NET полностью объектно-ориентированный, но ASP частично объектно-ориентированный.
- ASP.NET имеет полную поддержку XML для простого обмена данными, тогда как ASP не имеет встроенной поддержки XML.
- ASP.NET использует технологию ADO.NET для подключения и работы с базами данных. ASP использует технологию ADO.
Объясните ролевую безопасность в .NET
Безопасность на основе ролей используется для реализации мер безопасности в .NET на основе ролей, назначенных пользователям в организации. В организации авторизация пользователей выполняется на основе их ролей.
Например, Windows имеет доступ на основе ролей, как администраторы, пользователи и гости.
Объясните различные типы сборки.
Сборки делятся на 2 типа. Это:
Частная сборка:
- Она доступна только приложению.
- Нам нужно скопировать эту частную сборку отдельно во все папки приложения, где мы хотим использовать эту сборку. Без копирования мы не сможем получить доступ к частной сборке.
- Она должна быть установлена в установочном каталоге приложения.
Общая или публичная сборка:
- Она может быть общей для нескольких приложений.
- Публичная сборка не требует отдельного копирования во все папки приложения. На системном уровне требуется только одна копия публичной сборки, мы можем использовать одну и ту же копию несколькими приложениями.
- Она устанавливается в глобальном кэше сборок (GAC).
Каков порядок событий в жизненном цикле страницы?
Ниже приведены восемь событий, которые происходят в порядке успешного отображения страницы:
- Page_PreInit
- Page_Init
- Page_InitComplete
- Page_PreLoad
- Page_Load
- Page_LoadComplete
- Page_PreRender
- Render
Что такое сборщик мусора?
Сборщик мусора освобождает неиспользуемые объекты кода в памяти. Куча памяти разделена на 3 поколения:
- Поколение 0: содержит короткоживущие объекты.
- Поколение 1: хранит среднеживущие объекты.
- Поколение 2: предназначено для долгоживущих объектов.
Сборка мусора относится к проверке объектов в поколениях управляемой кучи, которые больше не используются приложением. Он также выполняет необходимые операции для освобождения их памяти. Сборщик мусора должен выполнить сборку, чтобы освободить часть памяти.
В процессе сборки мусора:
- Распознается список живых объектов.
- Обновляются ссылки для сжатых объектов.
- Пространство памяти, занимаемое мертвыми объектами, собирается повторно. Оставшиеся объекты перемещаются в более старый сегмент.
МетодSystem.GC.Collect()
используется для выполнения сборки мусора в .NET.
Что такое кэширование?
Кэширование означает временное хранение данных в памяти, чтобы приложение могло легко получить доступ к данным из памяти, а не искать их в исходном месте. Это увеличивает скорость и эффективность работы приложения.
Существует три типа кэширования:
- Кэширование страниц
- Кэширование данных
- Кэширование фрагментов
Можно ли применять темы к приложениям ASP.NET?
Да. Изменив следующий код в файле web.config, мы можем применять темы к приложениям ASP.NET:
<configuration> <system.web> <pages theme="windows"/> </system.web> </configuration>
Объясните MVC.
MVC означает Model View Controller. Это архитектура для создания приложений .NET. Ниже приведены три основных логических компонента MVC: модель, представление и контроллер.
Модель: они хранят данные и связанную с ними логику. Он обрабатывает хранение объектов и извлечение из баз данных для приложения. Например:
Объект Controller извлекает информацию о сотрудниках из базы данных.
Он обрабатывает данные о сотрудниках и отправляет обратно в базу данных или использует ее для визуализации тех же данных.
Представление: представление обрабатывает часть пользовательского интерфейса приложения. Они получают информацию из моделей для своего отображения. Например, любое представление о сотруднике будет включать множество компонентов, таких как текстовые поля, раскрывающиеся списки и т. д.
Контроллер: они обрабатывают взаимодействие с пользователем, выясняют ответы на пользовательский ввод, а также визуализируют окончательный вывод. Например, контроллер Employee будет обрабатывать все взаимодействия и вводы из представления Employee и обновлять базу данных с помощью модели Employee.
Что такое кросс-страничный постинг?
Всякий раз, когда мы нажимаем кнопку отправки на веб-странице, данные сохраняются на той же странице. Но если данные хранятся на другой странице и связаны с текущей, то это известно как кросс-страничная публикация. Кросс-страничная публикация достигается с помощью свойства POSTBACKURL
.
Чтобы получить значения, которые опубликованы на этой странице, на которую была опубликована страница, можно использовать метод FindControl.
Что такое делегат в .NET?
Делегат — это объект .NET, который определяет сигнатуру метода и может передавать функцию в качестве параметра.
Делегат всегда указывает на метод, который соответствует его конкретной сигнатуре. Пользователи могут инкапсулировать ссылку на метод в объекте делегата.
Когда мы передаем объект делегата в программу, он вызовет указанный метод. Чтобы создать пользовательское событие в классе, мы можем использовать делегат.
Какие средства контроля безопасности доступны в ASP.NET?
Ниже приведены пять элементов управления безопасностью, доступных в ASP.NET:
-
<asp: Login>
Предоставляет возможность входа, которая позволяет пользователям вводить свои учетные данные с помощью полей идентификатора и пароля. -
<asp: LoginName>
Используется для отображения имени пользователя, который вошел в систему. -
<asp: LoginView>
Предоставляет различные представления в зависимости от выбранного шаблона. -
<asp: LoginStatus>
Используется для проверки того, аутентифицирован ли пользователь. -
<asp: PasswordRecovery>
Отправляет пользователю электронное письмо при сбросе пароля.
Что такое упаковка и распаковка в .NET?
Упаковка — это процесс прямого преобразования типа значения в ссылочный тип. Упаковка неявная.
Распаковка — это процесс, при котором ссылочный тип преобразуется обратно в тип значения. Распаковка явная.
Ниже приведен пример для демонстрации операций упаковки и распаковки:
int a = 10; // тип значения object o = a; // упаковка int b = (int)o; // распаковка
Что такое MIME в .NET?
MIME означает Multipurpose Internet Mail Extensions (многоцелевые расширения интернет-почты). Это расширение протокола электронной почты, которое позволяет пользователям использовать протокол для легкого обмена файлами по электронной почте.
Серверы вставляют заголовок MIME в начало веб-передачи, чтобы обозначить, что это транзакция MIME.
Затем клиенты используют этот заголовок для выбора подходящего «плеера» для типа данных, на который указывает заголовок. Некоторые из этих плееров встроены в веб-браузер.
Каково назначение манифеста в .NET Framework?
Манифест хранит метаданные сборки. Он содержит метаданные, которые требуются для многих вещей, как указано ниже:
- Информация о версии сборки.
- Проверка области действия сборки.
- Проверка ссылок на классы.
- Идентификация безопасности.
Объясните различные типы файлов cookie, доступные в ASP.NET?
В ASP.NET доступны два типа файлов cookie. Это:
- Сеансовый файл cookie: он хранится на клиентской машине в течение одного сеанса и действителен до тех пор, пока пользователь не выйдет из системы.
- Постоянный файл cookie: он хранится на пользовательской машине в течение указанного периода времени для его истечения. Это может быть час, день, месяц или никогда.
Что означает CAS в .NET?
Безопасность доступа к коду (CAS) необходима для предотвращения несанкционированного доступа к программам и ресурсам во время выполнения. Она предназначена для решения проблем, возникающих при получении кода из внешних источников, которые могут содержать ошибки и уязвимости, делающие систему пользователя уязвимой.
CAS предоставляет ограниченный доступ к коду для выполнения только определенных операций вместо предоставления всех в определенный момент времени. CAS создает часть собственной архитектуры безопасности .NET.
Что представляет собой раздел appSettings в файле web.config?
Мы можем использовать блок appSettings в файле web.config, если мы хотим задать пользовательские значения для всего приложения. Пример кода, приведенный ниже, будет использовать ConnectionString для подключения к базе данных во всем проекте:
<em> <configuration> <appSettings> <add key= "ConnectionString" value="server=local; pwd=password; database=default" /> </appSettings> </configuration> </em>
В чем разница между абстрактным классом и интерфейсом?
Основные различия между абстрактным классом и интерфейсом перечислены ниже:
Абстрактный класс
- Используется для объявления свойств, событий, методов и полей.
- Предоставляет частичную реализацию функциональности, которая должна быть реализована путем наследования классов.
- Поддерживаются различные виды модификаторов доступа, такие как private, public, protected и т. д.
- Может содержать статические члены.
- Невозможно достичь множественного наследования.
Интерфейс
- Поля не могут быть объявлены с помощью интерфейсов.
- Используется для объявления поведения реализующего класса.
- Поддерживается только модификатор public.
- Не содержит статических членов.
- Достигается множественное наследование.
Какие типы памяти поддерживаются в .NET Framework?
В .NET присутствуют два типа памяти. Это:
Стек: Стек — это тип хранимого значения, который отслеживает каждый исполняемый поток и его местоположение. Он используется для статического выделения памяти.
Куча: Куча — это тип хранимой ссылки, который отслеживает более точные объекты или данные. Он используется для динамического выделения памяти.
Объясните локализацию и глобализацию.
Локализация — это процесс настройки нашего приложения для работы в соответствии с текущей культурой и регионом.
Глобализация — это процесс проектирования приложения таким образом, чтобы его могли использовать пользователи со всего мира, поддерживая несколько языков.
Какие параметры управляют поведением пула соединений?
Есть 4 параметра, которые управляют поведением пула подключений. Это:
- Время ожидания подключения
- Мин. размер пула
- Макс. размер пула
- Пул
Что такое MDI и SDI?
MDI (Multiple Document Interface): MDI позволяет открывать несколько окон, у него будет одно родительское окно и столько же дочерних окон. Компоненты являются общими из родительского окна, например, панель инструментов, панель меню и т. д.
SDI (Single Document Interface): SDI открывает каждый документ в отдельном окне. Каждое окно имеет свои собственные компоненты, например, панель инструментов, панель меню и т. д. Поэтому он не ограничен родительским окном.
Объясните различные части Сборки.
Различные части сборки:
-
Манифест — каждая статическая или динамическая сборка содержит набор данных, который содержит сведения о том, как элементы в сборке связаны друг с другом. Манифест сборки состоит из полных метаданных, необходимых для указания требований к версии и идентификатора безопасности сборки, а также метаданных, необходимых для определения области действия сборки и разрешения ссылок на классы и ресурсы.
Манифест сборки будет храниться либо в отдельном файле PE (Portable Executable), который содержит только информацию о манифесте сборки, либо в файле PE (.exe или .dll) с кодом MSIL (Microsoft Intermediate Language). - Метаданные типа — метаданные предоставляют вам дополнительную информацию, такую как типы, имена типов, имена методов и т. д. о содержимом сборки. Метаданные будут автоматически сгенерированы компиляторами из исходных файлов, и компилятор встроит эти метаданные в целевые выходные файлы, такие как .exe, .dll или .netmodule (в случае многомодульной сборки).
- MSIL — Microsoft Intermediate Language (MSIL) — это код, реализующий типы. Он включает инструкции для загрузки, хранения, инициализации и вызова методов для объектов. Наряду с этим он также включает инструкции для потока управления, прямого доступа к памяти, арифметических и логических операций, обработки исключений и т. д. Он генерируется компилятором с использованием одного или нескольких файлов исходного кода. Во время выполнения компилятор JIT (Just In Time) среды выполнения CLR (Common Language Runtime) преобразует код MSIL в машинный код для операционной системы.
- Ресурсы — Ресурсы могут быть списком связанных файлов, таких как файлы .bmp или .jpg. Эти ресурсы являются статическими, что означает, что они не изменяются во время выполнения. Ресурсы не являются исполняемыми элементами.