1581 просмотр
от 4 июня 2024
C#

Вопросы и ответы с собеседований по C# и .NET

Вопросы и ответы с собеседований для C# и .NET разработчиков. Типы данных, модификаторы доступа, особенности реализации наследования, сборка мусора, устройство компиляции .NET, LINQ и отложенное выполнение, делегаты и многое другое.

1

Какие типы данных есть в C#?

1

bool (System.Boolean): true/false. byte (System.Byte): целое число от 0 до 255, занимает 1 байт. sbyte (System.SByte): целое число от -128 до 127, занимает 1 байт. short (System.Int16): целое число от -32768 до 32767, занимает 2 байта. ushort (System.UInt16): целое число от 0 до 65535, занимает 2 байта. int (System.Int32): целое число от -2147483648 до 2147483647, занимает 4 байта. uint (System.UInt32): целое число от 0 до 4294967295, занимает 4 байта. long (System.Int64): целое число от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807, занимает 8 байт. ulong (System.UInt64): целое число от 0 до 18 446 744 073 709 551 615, занимает 8 байт. float (System.Single): число с плавающей точкой от -3.4*1038 до 3.4*1038, занимает 4 байта. double (System.Double): число с плавающей точкой от ±5.0*10-324 до ±1.7*10308, занимает 8 байта. decimal (System.Decimal): десятичное дробное число. Если употребляется без десятичной запятой, имеет значение от ±1.0*10-28 до ±7.9228*1028, может хранить 28 знаков после запятой, занимает 16 байт. char (System.Char): одиночный символ в кодировке Unicode, занимает 2 байта. string (System.String): набор символов Unicode. object (System.Object): значение любого типа данных, занимает 4 байта на 32-разрядной платформе и 8 байт на 64-разрядной платформе.

Комментарии
0/3000
2

Что такое System.Object?

Все классы в .NET, даже те, которые мы сами создаем, а также базовые типы, такие как System.Int32, являются неявно производными от класса System.Object. Даже если мы не указываем класс System.Object в качестве базового, по умолчанию он всё равно стоит на вершине иерархии наследования. Поэтому все типы и классы могут реализовать те методы, которые определены в System.Object, а именно: 1. ToString служит для получения строкового представления данного объекта. 2. GetHashCode позволяет возвратить некоторое числовое значение, которое будет соответствовать данному объекту или его хэш-код. 3. GetType позволяет получить тип данного объекта. 4. Equals позволяет сравнить два объекта на равенство.

Комментарии
0/3000
3

Какие операции со строками вы знаете?

1. Конкатенация - string.Concat(s1, s2) 2. Сравнение - string.Compare(s1, s2) 3. Поиск в строке - s1.IndexOf(char) 4. Разбитие/разделение - s1.Split(new char[] { char }) 5. Обрезка - s1.Trim() или s1..Trim(new char[] { char1, char2 }) 6. Вставка - s1.Insert(index, substring) 7. Удаление части строки - s1.Remove(index, count) 8. Замена - s1.Replace(a, b) 9. Смена регистра - s1.ToLower() и s1.ToUpper()

Комментарии
0/3000
4

Какие модификаторы доступа есть в C#?

Все типы и члены типов имеют уровень доступности. Он определяет возможность их использования из другого кода в вашей или в других сборках. Сборка — это .dll или .exe, созданные путем компиляции одного или нескольких CS-файлов в одной компиляции. Следующие модификаторы доступа позволяют указать доступность типа или члена при объявлении: public: доступ к типу или члену возможен из любого другого кода в той же сборке или другой сборке, ссылающейся на него. Уровень доступности общедоступных элементов типа определяется уровнем доступности самого типа. private: доступ к типу или члену возможен только из кода в том же объекте class или struct. protected: доступ к типу или члену возможен только из кода в том же объекте class, либо в class, производном от этого class. internal: доступ к типу или члену возможен из любого кода в той же сборке, но не из другой сборки. Другими словами, internal доступ к типам или членам можно получить из кода, который является частью той же компиляции. protected internal: доступ к типу или члену возможен из любого кода в той сборке, где он был объявлен, или из производного class в другой сборке. private protected: доступ к типу или элементу возможен из типов, производных от объекта class и объявляемых в сборке, содержащей этот объект.

Комментарии
0/3000
5

В чём разница между const и readonly?

Значение const фиксируется на этапе компиляции и не может быть изменено во время исполнения кода. Значение readonly фиксируется на этапе исполнения в конструкторе класса. Из конструктора может меняться и многократно.

Комментарии
0/3000
6

Поддерживает ли C# множественное наследование?

С# поддерживает множественное наследование в виде наследования от класса и нескольких интерфейсов, или просто от нескольких интерфейсов. Но не поддерживает наследование от нескольких классов.

Комментарии
0/3000
7

Как запретить наследование от класса?

Для этого служит ключевое слово sealed.

Комментарии
0/3000
8

Можно ли разрешить наследование класса, но запретить перекрытие метода?

Да. Указываем класс как public, а метод как sealed.

Комментарии
0/3000
9

Разница между управляемым и неуправляемым кодом?

Управляемый код – это код, созданный компилятором .NET. Он не зависит от архитектуры целевой машины, поскольку выполняется CLR (Common Language Runtime), а не самой операционной системой. CLR и управляемый код предлагают разработчикам несколько преимуществ, таких как сборка мусора, проверка типов и обработка исключений. С другой стороны, неуправляемый код напрямую компилируется в родной машинный код и зависит от архитектуры целевой машины. Он выполняется непосредственно операционной системой. В неуправляемом коде разработчик должен убедиться, что он вручную решает вопросы использования и выделения памяти (особенно из-за утечек памяти), безопасности типов и исключений. В .NET компилятор Visual Basic и C# создает управляемый код. Чтобы получить неуправляемый код, приложение должно быть написано на C или C++.

Комментарии
0/3000
Авторизуйтесь, чтобы открыть доступ к контенту
11

Что такое упаковка и распаковка?

12

Что такое сборка мусора?

13

В чём разница между stack и heap?

14

Как устроена компиляция в .NET?

15

В чем разница между интерфейсом и абстрактным классом в .NET?

16

Что такое виртуальный метод?

17

Что такое LINQ?

18

Что такое отложенное и немедленное выполнение в LINQ?

19

Что такое делегаты в .NET?

20

Что такое ref и out?

21

Что такое generics?

22

Что такое GetHashCode?

23

Что такое Finalize?

24

В чем различие между Finalize и Dispose?

25

В чём разница между throw и throw ex?

26

Что такое атрибут?

27

Что такое "as" и "is"?

Смежные категории
Docker
7 вопросов
Коллекция полезных команд для Docker
1272 просмотра
Базы данных
10 вопросов
Вопросы с собеседований о репликации баз данных
1407 просмотров
Computer Science
12 вопросов
Вопросы с собеседований про операционные системы
1018 просмотров
Computer Science
15 вопросов
Вопросы и ответы с собеседований по DDD
1445 просмотров
Computer Science
11 вопросов
Вопросы и ответы про интернет-протоколы
1359 просмотров
Базы данных
60 вопросов
Вопросы и ответы с собеседований по SQL
2193 просмотра
Рекомендуем
Computer Science
28 вопросов
Объяснение паттернов проектирования с примерами
1341 просмотр
Computer Science
12 вопросов
Вопросы с собеседований про операционные системы
1018 просмотров
Базы данных
60 вопросов
Вопросы и ответы с собеседований по SQL
2193 просмотра
Computer Science
13 вопросов
Вопросы и ответы с собеседований про ООП
1134 просмотра
Computer Science
15 вопросов
Вопросы и ответы с собеседований по DDD
1445 просмотров
Computer Science
11 вопросов
Вопросы и ответы про интернет-протоколы
1359 просмотров
Другие разделы

Лента

Активность пользователей Девстанции

Перейти к ленте

Лидеры

Рейтинг самых результативных пользователей сообщества

Перейти к лидерам

Треды

Общение по интересам и связь с разработчиками

Перейти к тредам

Задачи

Решение алгоритмических задач с собеседований

Перейти к задачам

Вопросы

Ответы на вопросы с технических собеседований

Вы находитесь здесь

Викторины

Интерактивные викторины по вопросам с собеседований

Перейти к викторинам
Мы в Telegram
Новости проекта, общение с разработчиками, общение по интересам - присоединяйтесь!