Чек-лист для .NET программиста: С# и .NET

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

.NET Framework отвечает за выполнение программы написанной на языке C# (а также F#, Visual Basic и других). Основными компонентами фреймворка являются общеязыковая среда выполнения (Common Language Runtime, CLR) и набор библиотек классов (Base Class Library, BCL). CLR отвечает за JIT-компиляцию, обработку исключений, сборку мусора и многое другое, в то время как BCL предоставляет доступ к базовым типам данных, коллекциям, потокам ввода-вывода, средствам диагностики приложения и тп. В силу своего возраста .NET Framework с точки зрения разработки серверных и кроссплатформенных приложений обладает рядом недостатков, с которыми удачно справляется более новая технология .NET Core.

Вопросы по теме

  1. Как работает JIT компилятор?
  2. Чем отличаются ссылочные типы от значимых?
  3. Какими несколькими способами можно сохранить значимый тип в куче?
  4. Какими экземплярными/статическими методами наделен класс Object?
  5. В чем разница между поверхностным и глубоким клонированием объекта? (ответ здесь)
  6. Почему метод GetType класса Object не является виртуальным?
  7. В каких случаях использование структур более оправдано, чем использование классов?
  8. Чем отличаются var от dynamic?
  9. Какие типы в .NET являются неизменяемыми?
  10. Почему StringBuilder быстрее string при большом количестве конкатенаций в цикле?
  11. В чем преимущества неизменяемости типа string?
  12. Как работает интернирование строк в .NET?
  13. Что такое интерполяция строк в .NET?
  14. В чем отличие абстрактного класса от интерфейса?
  15. В какой области памяти хранится статический класс?
  16. Когда освобождается статическая память?
  17. В каких случаях вызывается статический конструктор нестатического класса?
  18. Какая связь между делегатами и событиями?
  19. В чем отличие делегатов Func и Action?
  20. Является ли тип delegate неизменяемым?
  21. Как реализовать замыкание в C#?
  22. Какая разница между анонимным методом и лямбда выражением?
  23. Как работает сборщик мусора?
  24. Какие существуют поколения и в чем заключается их необходимость?
  25. Для чего необходим интерфейс IDisposable?
  26. Как создать собственный метод расширения?
  27. Какие отличия между коллекциями Dictionary и Hashtable?
  28. Какие отличия между коллекциями List и HashSet?
  29. Почему инициализация свойства capacity при создании объекта List
    new List<int>(12345) может значительно улучшить производительность при частых вызовах метода Add?
  30. Нужно ли переопределять метод GetHashCode вместе с методом Equals?
  31. В чем разница между интерфейсами IEnumerable и IEnumerator?
  32. Что такое рефлексия и почему ее использовании может негативно отразиться на быстродействии приложения?
  33. Какое предназначение блока finally при обработке исключений?
  34. В чем разница между throw и throw ex?
  35. Можно ли рефлекцией получить доступ к приватному полю объекта?
  36. Можно ли конвертировать делегат в дерево выражений и наоборот?
  37. Возможны ли утечки памяти в .NET (управляемый код)?
  38. Что такое слабые ссылки и как их реализовать?
  39. Что такое сериализация? Какие виды сериализации существуют в .NET?
  40. Какое назначение домена приложения?
  41. Каким способом можно передать данные из одного домена приложения в другой?

Книги

Статьи

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s