Съдържание[Крия][Покажи]
- 1. Какво точно е C#?
- 2. Какво отличава C# от C?
- 3. Какво точно е клас?
- 4. Какво всъщност е обект?
- 5. Каква е разликата между термините static, public и void?
- 6. Дефиниране на конструктори.
- 7. Какво е C# в събирането на отпадъци?
- 8. Какво точно означава структура в C#?
- 9. Как се компилира C# кодът?
- 10. Ясно опишете различните C# класове.
- 11. Какво точно представляват назъбените масиви?
- 12. Каква е разликата между параметрите out и ref?
- 13. Какво е деструктор в C#?
- 14. Какво е индексатор в C#?
- 15. Каква е разликата между управляван и неуправляван код?
- 16. Опишете сериализацията.
- 17. Как полетата и свойствата се различават едно от друго в C#?
- 18. Как можете да опишете подробно използването на изрази в C#?
- 19. Как бихте внедрили множество интерфейси с едно и също име на метод в един и същ клас?
- 20. Каква е разликата между Task и Thread в C#?
- 21. Какво представлява функцията finalize в C#?
- 22. Направете разлика между финализирани блокове и финализиране.
- 23. Опишете C# метода dispose of в детайли.
- 24. Какво е претоварване на C# метод? Изяснете.
- 25. Каква е разликата между само за четене и константи?
- 26. Какво представляват потребителски контрол и потребителски контрол?
- 27. Какво е мултикаст делегат в C#?
- 28. Какво точно представлява групирането на обекти в C#?
- 29. Какво точно представляват генериците в C#.NET?
- 30. Възможно ли е да се замени частен виртуален метод?
- 31. Правете разлика между претоварване на метод и пренареждане на метод в C#?
- 32. В C# каква е разликата между String и StringBuilder?
- 33. Какво всъщност са делегатите?
- 34. Кога трябва да използвате многопоточност в C# и кога трябва да го избягвате?
- 35. Какво е мултикаст делегат в C#?
- 36. В C# каква е разликата между късно свързване и ранно свързване?
- 37. Правите разлика между Directcast и Ctype?
- 38. Как се използва HashSet в C#?
- 39. Моля, обяснете групирането на нишки в C#.
- 40. Каква е разликата между ключовите думи Const и ReadOnly в C#?
- 41. Какви подробности относно C# XSD файла можете да предоставите?
- 42. Какво означават за вас свойствата на Get и Set Accessor?
- 43. Какво точно е инжектиране на зависимости в C#?
- Заключение
C# (известен преди като C sharp) е обектно-ориентиран език за програмиране, който често се използва от разработчиците за извършване на няколко дейности и постигане на множество цели.
Обектно-ориентираните езици за програмиране, като C++, Python и Java, се предлагат в различни вкусове. Тези езици за програмиране са проектирани да функционират в определена рамка. По същия начин C# е създаден и разработен за специфична рамка, а именно NET.
.NET рамката е създадена от Microsoft. Той предоставя широка платформа за разработване на приложения, декларации, инструкции за приложения и т.н. C# може да се използва за уеб разработка, игри, мобилни приложения, Windows приложения и други подобни проекти.
С такива предимства използването на C# се разшири и нуждата от специалисти, които могат да го използват точно, се удвои. Защото C# е толкова популярен програмен език, множество големи и малки фирми базират своите продукти на него.
И така, тренирайте въпроси за основно и напреднало ниво на C#, за да постигнете успех на интервютата.
1. Какво точно е C#?
Microsoft C# е съвременен, с общо предназначение, обектно-ориентирано програмиране език. C# е предназначен за Common Language Infrastructure (CLI), която се състои от изпълним код и среда за изпълнение, която позволява използването на множество езици на високо ниво на различни компютърни системи и архитектури.
2. Какво отличава C# от C?
C обикновено е известен като процедурен език, докато C# е по-обектно-ориентиран. Основната разлика е, че C# позволява автоматизирано събиране на отпадъци чрез Common Language Runtime (CLR), докато C не позволява. C# изисква .NET framework за работа, докато C е независим от платформата език.
3. Какво точно е клас?
Класът служи като шаблон за изграждане на обекти. Наред с техниките, той има атрибути. От един клас можем да създадем няколко екземпляра на обект.
4. Какво всъщност е обект?
Екземпляр на клас, известен като обект, е начинът, по който осъществяваме достъп до функционалностите на класа. За да конструираме обект, можем да използваме ключовата дума „new“. Функциите, членовете на данните и поведението на клас, който произвежда обект в паметта, се съхраняват.
5. Каква е разликата между термините static, public и void?
Навсякъде в програмата има достъп до публично дефинирани променливи. Статичните променливи могат да бъдат достъпни глобално без изискване за изграждане на екземпляр на клас. В C# модификатор на тип, наречен Void, се използва за указване на връщания тип на метод.
6. Дефиниране на конструктори.
Конструкторът е специфична за клас функция член. Когато се формира обект, конструкторът се извиква автоматично. Класът конструира всички стойности на членовете на данните, докато се инициализира.
7. Какво е C# в събирането на отпадъци?
Процесът на почистване на паметта, която е била заета от нежелани елементи, е известен като събиране на боклук. Определено количество памет се присвоява автоматично на обект от клас, когато той се създава в паметта на стека. Сега, след като сте приключили с работата по елемента, мястото в паметта, което преди е заемал, се губи. Паметта трябва да се освободи.
8. Какво точно означава структура в C#?
В C# структурата е тип данни, който се състои от множество типове данни, като методи, полета, конструктори, константи, свойства, индексатори, оператори и дори други структури. Структурата спомага за консолидирането на много видове данни в една единица. По този начин те са аналогични на курсовете. Структурите са стойностни типове, докато класовете са референтни типове.
9. Как се компилира C# кодът?
Когато се създава проект, изходният код на C# се компилира в междинен език (IL). IL е колекция от инструкции, която генерира машинен код за изпълнение на машинен процесор. Кодът се изпраща от препроцесора към компилатора, след това към асемблера и накрая към линкера на четири етапа.
10. Ясно опишете различните C# класове.
- Статичен: Това е вид клас, който не може да бъде създаден, следователно не можем да използваме ключовата дума new, за да направим обект от него, но можем да извикаме членовете на класа директно, като използваме името на класа им.
- Резюме: За да дефинирате абстрактни класове, използвайте ключовата дума abstract. Не могат да се създават обекти за абстрактни класове. Трябва да бъде наследен в подклас, ако искате да го използвате. Прости дефиниции на абстрактни и неабстрактни методи са разрешени в рамките на абстрактния клас.
- Частично: Този клас ви позволява да разделите вашите свойства, методи и събития в няколко изходни файла, които впоследствие се комбинират в един клас по време на изграждане.
- Запечатан: Запечатан клас не може да бъде наследен от друг клас и има ограничени характеристики. Модификаторите за достъп не могат да се добавят към запечатания клас.
11. Какво точно представляват назъбените масиви?
Масив с елементи на масив се нарича назъбен масив. Елементите на назъбените масиви могат да бъдат с много форми и размери.
12. Каква е разликата между параметрите out и ref?
Когато дава аргумент като реф, параметърът трябва да бъде инициализиран, преди да бъде предаден на метода. Изходен параметър, от друга страна, не е необходимо да се инициализира, преди да бъде предоставен на метод.
13. Какво е деструктор в C#?
Деструкторът е тип метод в C#, който е част от клас. Основната функция на деструктора е да изтрива екземпляри на клас, когато вече не са необходими, за да освободи памет. Деструкторите понякога са известни като финализатори.
14. Какво е индексатор в C#?
Индексаторите се използват в C# за намиране на екземпляри на клас или структура. Следователно индексираните стойности могат да бъдат достъпни подобно на масив, но без да се налага изрично да се декларира тип или член на екземпляр.
15. Каква е разликата между управляван и неуправляван код?
Управляваният код ви позволява да изпълнявате код в .NET framework в управлявана CLR среда за изпълнение.
Контролираният код се изпълнява в управляваната среда за изпълнение, а не в операционната система. Предоставя разнообразие от услуги като събирач на боклук, обработка на изключения и т.н.
Неуправляемият код е код, който не се изпълнява в CLR и работи извън рамката .NET. Те не предоставят езикови услуги на високо ниво и следователно работят без тях. C++ е един такъв пример.
16. Опишете сериализацията.
Трябва да се създаде поток от байтове от елемента, за да се прехвърли през мрежа. Сериализацията е актът на трансформиране на елемент в поток от байтове. Интерфейсът за сериализиране трябва да бъде внедрен, за да може даден елемент да се сериализира. Обратното на конструиране на обект от поток от байтове се нарича де-сериализация.
17. Как полетата и свойствата се различават едно от друго в C#?
Полето е член на клас или обект от всякакъв вид, който служи като място за съхраняване на данни, докато свойство е член на клас, който предлага метод за четене, писане и изчисляване на стойността на частно поле.
18. Как можете да опишете подробно използването на изрази в C#?
Инструкцията за използване се използва за ограничаване на използването на един или повече ресурси в приложението. Ресурсите се консумират и освобождават постоянно.
Основната задача на този оператор е да управлява нежеланите ресурси и автоматично да ги освобождава. След като обектът, който използва ресурса, е формиран, уверете се, че функцията за изхвърляне на обекта е извикана, за да освободи ресурсите, изисквани от този обект; тук е полезно използването на изрази.
19. Как бихте внедрили множество интерфейси с едно и също име на метод в един и същ клас?
За да внедрите няколко интерфейса с едно и също име на метод, избягвайте имплементирането им в тялото на функцията. Вместо това бихте предоставили името на интерфейса директно в тялото на метода. Компилаторът ще разпознае кои методи на интерфейса са посочени, адресирайки проблема.
20. Каква е разликата между Task и Thread в C#?
Нишката е истинска нишка на операционната система със собствен стек и ресурси на ядрото. Нишката осигурява най-голям контрол. Нишката ви позволява да прекъснете (), да спрете () или да възобновите (). Състоянието на дадена нишка може да се наблюдава или да се задават нейните атрибути, като размер на стека, състояние на апартамент и култура. CLR поддържа набор от нишки, обвити от ThreadPool.
Паралелната библиотека на задачите има клас, наречен Task. За разлика от ThreadPool, задачата няма собствена нишка на операционната система. Задачите се изпълняват от TaskScheduler, въпреки че планировчикът по подразбиране се изпълнява от ThreadPool. Възможно е да бъдете уведомявани, когато дадена Задача приключи и да получите резултат.
21. Какво представлява функцията finalize в C#?
Обектният клас, който се използва за почистващи действия, дефинира функцията finalize (). Когато препратка към даден обект не се използва за продължителен период от време, събирачът на отпадъци често ще извика тази функция.
Събирачът на отпадъци автоматично освобождава контролирани ресурси, но ако желаете да освободите ненужни ресурси като манипулатори на файлове, връзки за данни и т.н., трябва изрично да имплементирате функцията за финализиране.
22. Направете разлика между финализирани блокове и финализиране.
Завършеният блок се извиква, след като блоковете try-and-catch са завършени, тъй като е необходим за обработка на изключение. Блокът от код се изпълнява независимо дали изключението е уловено. Кодът на блока като цяло е по-чист.
Методът finalize се извиква точно преди събирането на боклука. Основните отговорности на финализирания метод са да изчисти неуправлявания код, който се задейства автоматично всеки път, когато екземпляр не бъде извикан повторно.
23. Опишете C# метода dispose of в детайли.
Функцията disposeof() освобождава неизползваните ресурси на обекта. Неизползвани ресурси, като файлове, връзки за данни и т.н. Тази функция е посочена в интерфейса IDisposable, който се реализира от класа чрез деклариране на тялото на интерфейса IDisposable.
Функцията dispose не се извиква автоматично; програмистът трябва да го внедри ръчно за ефективно използване на ресурсите.
24. Какво е претоварване на C# метод? Изяснете.
Претоварването на метод е типичен подход в C#, който се използва за конструиране на редица методи с едно и също име и определени сигнатури. Тази процедура се повтаря със същия клас.
Когато процедурата за претоварване на метода приключи, компилаторът започва операции за извикване на определени действия въз основа на претоварването на метода.
25. Каква е разликата между само за четене и константи?
Постоянните променливи се декларират и инициализират по време на компилация. След това тази стойност не може да бъде променена. От друга страна, само за четене се използва, след като стойността е разпределена по време на изпълнение.
26. Какво представляват потребителски контрол и потребителски контрол?
Компилираният код се използва за разработване на персонализирани контроли. Те могат да бъдат включени в кутията с инструменти и са лесни за използване. Чрез плъзгане и пускане на тези контроли разработчиците могат да ги включат в своите уеб формуляри.
Потребителските контроли и ASP-включените файлове са доста сходни. Те също са лесни за правене. Потребителските контроли, от друга страна, не могат да се добавят към кутията с инструменти. Те също не могат да бъдат издърпани и изпуснати от него.
27. Какво е мултикаст делегат в C#?
Делегатът за множествено предаване поддържа препратки или адреси към няколко функции едновременно. Когато извикаме мултикаст делегата, той ще извика и всички други функции, към които се отнася. За да извикате няколко метода, използвайте цялата сигнатура на метода, точно като делегата. Като пример:
28. Какво точно представлява групирането на обекти в C#?
Обединяването на обекти е техника за проектиране в софтуера, която рециклира нещата, вместо да ги изгражда отново. Той постига това, като съхранява избрани елементи в пул и ги прави достъпни за използване, когато приложение ги поиска. Тази процедура подобрява производителността чрез намаляване на ненужното генериране на обекти.
29. Какво точно представляват генериците в C#.NET?
Generics се използват за създаване на кодови класове за многократна употреба, за да се намали излишъкът на кода, да се подобри безопасността на типа и да се подобри скоростта. Можем да конструираме колекционни класове с генерични.
В системата трябва да се използва общо пространство от имена вместо класове като ArrayList. Пространство от имена за колекции. Използването на параметризирани типове се насърчава от генериците.
30. Възможно ли е да се замени частен виртуален метод?
Частен виртуален метод не може да бъде заменен, тъй като е частен за класа и не може да бъде достъпен извън него.
31. Правете разлика между претоварване на метод и пренареждане на метод в C#?
Замяната на метод е процесът на промяна на фундаменталната дефиниция на производен клас. Методите на производния клас в крайна сметка се държат различно в резултат на тази стратегия.
Претоварването на метод, от друга страна, може да се опише като акт на генериране на много методи с едно и също име, но различни сигнатури под един и същи клас.
32. В C# каква е разликата между String и StringBuilder?
Низовият обект е неизменен, което означава, че не може да бъде променен, след като е бил създаден. Всеки опит за промяна на низовия обект ще доведе до създаването на нов низов обект.
Обектът за изграждане на низове, от друга страна, е ковък и може да бъде променен, както разработчикът сметне за подходящо.
33. Какво всъщност са делегатите?
В C++ делегатите са фундаментално същите като указателите на функции. Единствената разлика между двете е, че делегатите са безопасни за тип, докато указателите на функции не са. Делегатите са необходими, защото позволяват изграждането на генерични типобезопасни функции.
34. Кога трябва да използвате многопоточност в C# и кога трябва да го избягвате?
Многонишковостта, често известна като нишкова обработка, е ефективен подход за увеличаване на скоростта на програма, в която множество дейности се изпълняват едновременно. Той позволява на различни нишки да се изпълняват независимо, вместо да чакат предходната стъпка да бъде завършена. Това има способността да увеличи темпото на програмата.
Въпреки това, когато няколко от процесите на програмата са свързани помежду си, многонишковостта не се препоръчва. Например, ако Стъпка Б зависи от това, че Стъпка А трябва да бъде завършена първа, многонишковостта би причинила проблеми с производителността и софтуерни недостатъци. Нишките стават все по-чувствителни, докато програмата се развива в сложност.
35. Какво е мултикаст делегат в C#?
Делегатът за множествено предаване в C#, за разлика от основния делегат, се отнася до множество целеви методи. Когато се използва делегат за множествено предаване, се извикват всички функции, посочени от делегата. Те се реализират с помощта на класа MulticastDelegate на системата.
36. В C# каква е разликата между късно свързване и ранно свързване?
- Ранното свързване се извършва по време на компилиране, докато късното свързване се извършва по време на изпълнение.
- Късното свързване често е по-бавно от ранното, тъй като се случва по време на изпълнение.
- За разлика от късното свързване, което използва обекта за разрешаване на извиквания на метод, ранното свързване разрешава извиквания на метод, използвайки информация за класа.
37. Правите разлика между Directcast и Ctype?
Видът обект, който изисква типът по време на изпълнение да съответства на посочения тип в DirectCast, се преобразува с помощта на DirectCast.
Когато е указано преобразуване между израз и тип, Ctype се използва.
38. Как се използва HashSet в C#?
В C# HashSet е неподредена колекция от отделни стойности. По принцип се използва за предотвратяване на вмъкването на дублирани елементи в колекция и се представя по-добре от списък при тази задача.
За реализирането му се използва класът HashSet, който произлиза от System.
39. Моля, обяснете групирането на нишки в C#.
В C# пулът от нишки е колекция от нишки. Тези нишки се използват за изпълнение на задачи, без да се намесват във функционалността на основната нишка. Нишка в пул от нишки се връща в пула от нишки, когато приключи изпълнението си.
Класът System съдържа класове, които обработват нишката в пула от нишки и нейните действия. Нарязване на резба. ThreadPool е пространство от имена.
40. Каква е разликата между ключовите думи Const и ReadOnly в C#?
- ReadOnly не може да бъде деклариран в рамките на метода, докато Const може.
- Const е константа по време на компилиране, докато ReadOnly е константа по време на изпълнение.
- Стойностите ReadOnly могат да бъдат променяни, но стойностите Const не могат.
41. Какви подробности относно C# XSD файла можете да предоставите?
XSD означава XML Schema Definition. Ако няма XSD файл, свързан с XML файла, той може да има всякакви атрибути, елементи и тагове. XSD файлът предоставя рамка за XML файла, определяйки какви компоненти и атрибути трябва да присъстват в XML файла, както и техния ред.
42. Какво означават за вас свойствата на Get и Set Accessor?
В C# Get и Set са наречени аксесори, тъй като са направени с помощта на свойства. Свойството позволява четене и запис на стойността на частно поле. Такива частни полета са достъпни чрез инструменти за достъп.
Докато свойството Get се използва за връщане на стойността на свойство, свойството Set се използва за задаване на стойността.
43. Какво точно е инжектиране на зависимости в C#?
Инжектирането на зависимости (DI) е техника за проектиране в C#, която се използва за създаване на слабо свързано програмиране. Тази процедура прехвърля създаването и обвързването на зависими обекти извън класа, на който те разчитат. Основната цел е бъдещите модификации на кода да бъдат по-управляеми.
Заключение
C# е основният език за програмиране, който се използва във всички езици за програмиране от по-високо ниво. C# разработчиците са много търсени и могат да намерят атрактивни перспективи за кариера в индустрии като front-end разработка, back-end програмиране и разработка на приложения. И тъй като Microsoft го поддържа, популярността на C# само ще расте.
Гореспоменатите са най-важните въпроси за C# интервю за опитни професионалисти и начинаещи. Вижте Серията интервюта на Hashdork за помощ при подготовката на интервюто.
Оставете коментар