top 50 c interview questions with answers
Често задавани основни въпроси за интервю за C # за програмиране и кодиране:
C # е език за програмиране, който бързо се разраства и се използва широко. Той е с голямо търсене, универсален и също така поддържа междуплатформена платформа.
Той не се използва само за Windows, но и за много други операционни системи. Следователно е много важно да имате силно разбиране на този език, за да попаднете на която и да е работа в индустрията за тестване на софтуер.
По-долу са включени не само набор от най-често задаваните въпроси на C #, но и някои много важни теми, които трябва да бъдат разбрани, за да се откроят от тълпата на популацията C #.
Тъй като C # е обширна тема, за лесното справяне с всички концепции, аз разделих тази тема на три части, както е споменато по-долу:
- Въпроси по основни понятия
- Въпроси за масиви и низове
- Разширени концепции
Тази статия включва набор от топ 50 въпроса и отговори за интервю за C #, обхващащи почти всички важни теми с прости думи, за да ви помогне да се подготвите за интервюто си.
Какво ще научите:
Най-популярни C # интервюта въпроси и отговори
Основни понятия
В # 1) Какво е обект и клас?
Отговор: Класът е капсулиране на свойства и методи, които се използват за представяне на обект в реално време. Това е структура от данни, която обединява всички екземпляри в една единица.
Обектът се дефинира като екземпляр на клас. Технически това е просто разпределен блок памет, който може да се съхранява под формата на променливи, масив или колекция.
В # 2) Какви са основните концепции за ООП?
Отговор: Четирите основни концепции на обектно-ориентираното програмиране са:
- Капсулиране : Тук вътрешното представяне на обект е скрито от изгледа извън дефиницията на обекта. Достъпът е само до необходимата информация, докато останалата част от изпълнението на данните е скрита.
- Абстракция: Това е процес на идентифициране на критичното поведение и данни на даден обект и премахване на неподходящите детайли.
- Наследяване : Това е способността да създавате нови класове от друг клас. Това се прави чрез достъп, модификация и разширяване на поведението на обектите в родителския клас.
- Полиморфизъм : Името означава, едно име, много форми. Постига се чрез наличието на множество методи с едно и също име, но различни реализации.
В # 3) Какво е управляван и неуправляван код?
Отговор: Управляваният код е код, който се изпълнява от CLR (Common Language Runtime), т.е. целият код на приложението се базира на платформата .Net. Счита се за управляван поради .Net рамката, която вътрешно използва събирача на боклук за изчистване на неизползваната памет.
Неуправляван код е всеки код, който се изпълнява от изпълнението на приложението на която и да е друга рамка освен .Net. Времето за изпълнение на приложението ще се погрижи за паметта, сигурността и други операции за изпълнение.
В # 4) Какво е интерфейс?
Отговор: Интерфейсът е клас без изпълнение. Единственото нещо, което съдържа, е декларирането на методи, свойства и събития.
В # 5) Какви са различните видове класове в C #?
Отговор: Различните видове клас в C # са:
- Частичен клас: Той позволява на членовете му да бъдат разделени или споделени с множество .cs файлове. Обозначава се с ключовата дума Частично.
- Запечатан клас: Това е клас, който не може да бъде наследен. За достъп до членовете на запечатан клас трябва да създадем обекта на класа. Обозначава се с ключовата дума Запечатан .
- Абстрактен клас : Това е клас, чийто обект не може да бъде създаден. Класът може да бъде наследен само. Той трябва да съдържа поне един метод. Обозначава се с ключовата дума абстрактно .
- Статичен клас : Това е клас, който не позволява наследяване. Членовете на класа също са статични. Обозначава се с ключовата дума статични . Тази ключова дума казва на компилатора да проверява за случайни случаи на статичния клас.
Q # 6) Обяснете компилацията на код в C #.
Отговор: Компилацията на код в C # включва следните четири стъпки:
- Компилиране на изходния код в управляван код от C # компилатор.
- Комбиниране на новосъздадения код в сглобки.
- Зареждане на Common Language Runtime (CLR).
- Изпълнение на събранието от CLR.
Q # 7) Какви са разликите между клас и структура?
Отговор: По-долу са дадени разликите между клас и структура:
Клас | Структура |
---|---|
Поддържа наследяване | Не поддържа наследяване |
Класът се предава чрез препратка (референтен тип) | Struct е Pass by Copy (Тип стойност) |
По подразбиране членовете са частни | Членовете са публични по подразбиране |
Добър за по-големи сложни обекти | Добър за малки изолирани модели |
Може да използва колектор за отпадъци за управление на паметта | Не може да се използва Garbage collector и следователно няма управление на паметта |
В # 8) Каква е разликата между виртуалния метод и абстрактния метод?
Отговор: Виртуалният метод винаги трябва да има изпълнение по подразбиране. Той обаче може да бъде заменен в производния клас, въпреки че не е задължителен. Той може да бъде заменен с помощта на замяна ключова дума.
Абстрактният метод няма изпълнение. Той се намира в абстрактния клас. Задължително е производният клас да изпълнява абстрактния метод. An замяна ключовата дума тук не е необходима, въпреки че може да се използва.
Q # 9) Обяснете пространствата от имена в C #.
Отговор: Те се използват за организиране на големи кодови проекти. „Система“ е най-широко използваното пространство от имена в C #. Можем да създадем наше собствено пространство от имена и също така да използваме едно пространство от имена в друго, което се нарича вложени пространства от имена.
Те се означават с ключовата дума „пространство от имена“.
В # 10) Какво представлява изразът „използване“ в C #?
Отговор: Ключовата дума „Използване“ означава, че конкретното пространство от имена се използва от програмата.
Например, с помощта на System
Тук, Система е пространство от имена. Конзолата на класа е дефинирана под Система. И така, можем да използваме console.writeline (“....”) Или readline в нашата програма.
В # 11) Обяснете абстракцията.
Отговор: Абстракцията е една от концепциите за ООП. Използва се за показване само на основните характеристики на класа и скриване на ненужна информация.
Нека вземем пример за кола:
Шофьорът на колата трябва да знае подробностите за колата, като цвят, име, огледало, кормилно управление, предавка, спирачка и др. Това, което той не трябва да знае, е вътрешен двигател, изпускателна система.
И така, абстракцията помага да се знае какво е необходимо и да се скрият вътрешните детайли от външния свят. Скриването на вътрешната информация може да се постигне чрез деклариране на такива параметри като Частни с помощта на частни ключова дума.
В # 12) Обяснете полиморфизма?
Отговор: Програмно, полиморфизмът означава един и същ метод, но различни изпълнения. Той е от 2 вида, време за компилация и време за изпълнение.
- Полиморфизъм по време на компилация се постига чрез претоварване на оператора.
- Полиморфизъм по време на изпълнение се постига чрез заместване. Наследствените и виртуалните функции се използват по време на полиморфизъм по време на изпълнение.
Например ,Ако клас има метод Void Add (), полиморфизмът се постига чрез претоварване на метода, т.е. void Add (int a, int b), void Add (int add) са всички претоварени методи.
В # 13) Как се реализира обработка на изключения в C #?
Отговор: Обработката на изключения се извършва с помощта на четири ключови думи в C #:
- опитвам : Съдържа блок код, за който ще бъде проверено изключение.
- улов : Това е програма, която улавя изключение с помощта на манипулатора на изключения.
- накрая : Това е блок от код, написан за изпълнение, независимо дали е уловено изключение или не.
- Хвърли : Изхвърля изключение, когато възникне проблем.
В # 14) Какво представляват C # I / O класовете? Какви са често използваните I / O класове?
Отговор: C # има пространство от имена System.IO, състоящо се от класове, които се използват за извършване на различни операции с файлове като създаване, изтриване, отваряне, затваряне и т.н.
Някои често използвани I / O класове са:
- Файл - Помага при манипулиране на файл.
- StreamWriter - Използва се за записване на символи в поток.
- StreamReader - Използва се за четене на символи в поток.
- StringWriter - Използва се за четене на буфер на низове.
- StringReader - Използва се за писане на буфер на низове.
- Път - Използва се за извършване на операции, свързани с информацията за пътя.
Q # 15) Какво е клас StreamReader / StreamWriter?
Отговор: StreamReader и StreamWriter са класове на пространство от имена System.IO. Те се използват, когато искаме да четем или пишем charact90, съответно базирани на Reader данни.
Някои от членовете на StreamReader са: Close (), Read (), Readline ().
Членовете на StreamWriter са: Close (), Write (), Writeline ().
Class Program1 { using(StreamReader sr = new StreamReader(“C:ReadMe.txt”) { //----------------code to read-------------------// } using(StreamWriter sw = new StreamWriter(“C:ReadMe.txt”)) { //-------------code to write-------------------// } }
В # 16) Какво е деструктор в C #?
Отговор: Destructor се използва за почистване на паметта и освобождаване на ресурсите. Но в C # това се прави от боклука самостоятелно. System.GC.Collect () се извиква вътрешно за почистване. Но понякога може да се наложи ръчно да се внедрят деструктори.
Например:
~Car() { Console.writeline(“….”); }
В # 17) Какво представлява абстрактният клас?
Отговор: Абстрактният клас е клас, който се обозначава с абстрактна ключова дума и може да се използва само като основен клас. Този клас винаги трябва да се наследява. Екземпляр на самия клас не може да бъде създаден. Ако не искаме никоя програма да създава обект от клас, тогава такива класове могат да бъдат направени абстрактни.
Всеки метод в абстрактния клас няма реализации в същия клас. Но те трябва да бъдат внедрени в детския клас.
Например:
abstract class AB1 { Public void Add(); } Class childClass : AB1 { childClass cs = new childClass (); int Sum = cs.Add(); }
Всички методи в абстрактния клас са имплицитно виртуални методи. Следователно виртуалната ключова дума не трябва да се използва с никакви методи в абстрактния клас.
Въпрос # 18) Какво представляват бокса и разопаковането?
Отговор: Преобразуването на тип стойност в референтен тип се нарича Boxing.
Например:
int Стойност1 - = 10;
// ———— Бокс —————— //
обект boxedValue = Стойност1;
Извиква се преобразуване на същия референтен тип (създаден от бокс) обратно към тип стойност Разопаковане .
Например:
// ———— UnBoxing —————— //
int UnBoxing = int (boxedValue);
unix примери за скриптове за черупки за начинаещи
В # 19) Каква е разликата между Изявление за продължаване и прекъсване?
Отговор: Изявлението Break прекъсва цикъла. Това прави контрола на програмата за излизане от цикъла. Изявлението Continue прави контрола на програмата за излизане само от текущата итерация. Това не прекъсва цикъла.
В # 20) Каква е разликата между окончателно и финализиране на блока?
Отговор: накрая block се извиква след изпълнението на try and catch block. Използва се за обработка на изключения. Независимо дали е уловено изключение или не, този блок код ще бъде изпълнен. Обикновено този блок ще има код за почистване.
методът finalize се извиква непосредствено преди събирането на боклука. Използва се за извършване на операции по почистване на неуправляван код. Той автоматично се извиква, когато даден екземпляр не бъде извикан впоследствие.
Масиви и низове
В # 21) Какво е масив? Дайте синтаксиса за единичен и многомерен масив?
Отговор: Масивът се използва за съхраняване на множество променливи от един и същи тип. Това е колекция от променливи, съхранени в съседно място на паметта.
Например:
двойни числа = ново двойно (10);
int () резултат = нов int (4) {25,24,23,25};
Едномерният масив е линеен масив, където променливите се съхраняват в един ред. Горе пример е едномерен масив.
Масивите могат да имат повече от едно измерение. Многомерните масиви се наричат още правоъгълни масиви.
Например , int (,) числа = нов int (3,2) {{1,2}, {2,3}, {3,4}};
В # 22) Какво представлява назъбеният масив?
Отговор: Назъбеният масив е масив, чиито елементи са масиви. Нарича се също като масив от масиви. Тя може да бъде единична или множество измерения.
int () jaggedArray = нов int (4) ();
Q # 23) Назовете някои свойства на Array.
Отговор: Свойствата на масив включват:
- Дължина: Получава общия брой елементи в масив.
- IsFixedSize: Указва дали масивът е с фиксиран размер или не.
- IsReadOnly : Указва дали масивът е само за четене или не.
В # 24) Какво е клас на масив?
Отговор: Класът Array е базовият клас за всички масиви. Той предоставя много свойства и методи. Той присъства в системата за пространства от имена.
В # 25) Какво е низ? Какви са свойствата на String Class?
Отговор: String е колекция от обекти char. Можем също да декларираме променливи на низ в c #
низ име = “Въпроси на C #”;
Низовият клас в C # представлява низ. Свойствата на низовия клас са:
- Символи вземете обекта Char в текущия низ.
- Дължина получава броя на обектите в текущия низ.
В # 26) Какво представлява Escape Sequence? Назовете някои последователности за извеждане на String в C #.
Отговор: Последователност Escape се обозначава с обратна наклонена черта (). Обратната наклонена черта показва, че символът, който го следва, трябва да се тълкува буквално или е специален знак. Евакуационната последователност се счита за единичен знак.
Последователностите за извеждане на низове са както следва:
- n - Символ за нов ред
- b - Backspace
- \ - Наклонена черта
- ’- единична оферта
- ’’ - Двойна оферта
В # 27) Какво представляват регулярните изрази? Да търсите низ, използвайки регулярни изрази?
Отговор: Регулярният израз е шаблон, който съответства на набор от входни данни. Моделът може да се състои от оператори, конструкции или символни литерали. Regex се използва за синтактичен анализ и заместване на символния низ.
Например:
* съответства на предходния знак нула или повече пъти. И така, a * b регулярният израз е еквивалентен на b, ab, aab, aaab и т.н.
Търсене на низ с помощта на Regex:
static void Main(string() args) { string() languages = { 'C#', 'Python', 'Java' }; foreach(string s in languages) { if(System.Text.RegularExpressions.Regex.IsMatch(s,'Python')) { Console.WriteLine('Match found'); } } }
Горният пример търси “Python” спрямо набора от входове от масива от езици. Той използва Regex.IsMatch, който връща true в случай, че шаблонът бъде намерен във входа. Шаблонът може да бъде всеки регулярен израз, представляващ входа, на който искаме да съответства.
В # 28) Кои са основните струнни операции? Обяснете.
Отговор: Някои от основните низови операции са:
- Обединете : Две низа могат да бъдат обединени или чрез System.String.Concat, или чрез + оператор.
- Промяна : Replace (a, b) се използва за замяна на низ с друг низ. Trim () се използва за подрязване на низа в края или в началото.
- Сравнете : System.StringComparison () се използва за сравняване на два низа, или сравнение, чувствително към малки или големи букви. Основно отнема два параметъра, оригинален низ и низ, с които да се сравняват.
- Търсене : StartWith, методите EndsWith се използват за търсене на определен низ.
В # 29) Какво е разбор? Как да анализирате низ от дата и час?
Отговор: Анализирането преобразува низ в друг тип данни.
Например:
низ текст = “500”;
int num = int.Parse (текст);
500 е цяло число. И така, методът Parse преобразува низа 500 в свой собствен основен тип, т.е. int.
Следвайте същия метод, за да конвертирате низ от DateTime.
низ dateTime = “1 януари 2018 г.”;
DateTime parsedValue = DateTime.Parse (dateTime);
Разширени концепции
В # 30) Какво е делегат? Обяснете.
Отговор: Делегат е променлива, която съдържа препратката към метод. Следователно това е функционален указател или референтен тип. Всички делегати са получени от System.Delegate пространство от имена. И делегатът, и методът, към който се отнася, могат да имат един и същ подпис.
- Деклариране на делегат: публичен делегат void AddNumbers (int n);
След декларирането на делегат, обектът трябва да бъде създаден от делегата с помощта на новата ключова дума.
AddNumbers an1 = нови AddNumbers (брой);
Делегатът предоставя вид капсулиране на референтния метод, който вътрешно ще бъде извикан, когато бъде извикан делегат.
public delegate int myDel(int number); public class Program { public int AddNumbers(int a) { int Sum = a + 10; return Sum; } public void Start() { myDel DelgateExample = AddNumbers; } }
В горния пример имаме делегат myDel, който приема цяла стойност като параметър. Програмата за клас има метод със същия подпис като делегата, наречен AddNumbers ().
Ако има друг метод, наречен Start (), който създава обект на делегата, тогава обектът може да бъде присвоен на AddNumbers, тъй като има същия подпис като този на делегата.
В # 31) Какво представляват събитията?
Отговор: Събитията са действия на потребителя, които генерират известия към приложението, на което то трябва да отговори. Потребителските действия могат да бъдат движения на мишката, натискане на клавиши и т.н.
Програмно, клас, който предизвиква събитие, се нарича издател, а клас, който отговаря / получава събитието, се нарича абонат. Събитието трябва да има поне един абонат, който никога не се вдига.
Делегатите се използват за деклариране на събития.
Публичен делегат void PrintNumbers ();
Събитие PrintNumbers myEvent;
В # 32) Как да използвам Делегати със събития?
Отговор: Делегатите се използват за набиране на събития и обработка на тях. Винаги първо трябва да се декларира делегат и след това да се декларират Събитията.
Нека да видим пример:
Помислете за клас, наречен Пациент. Помислете за два други класа, Застраховане и Банка, които изискват информация за смъртта на пациента от клас пациенти. Тук абонатите са застраховка и банка, а класът пациент става издател. То задейства смъртното събитие и другите два класа трябва да получат събитието.
namespace ConsoleApp2 { public class Patient { public delegate void deathInfo();//Declaring a Delegate// public event deathInfo deathDate;//Declaring the event// public void Death() { deathDate(); } } public class Insurance { Patient myPat = new Patient(); void GetDeathDetails() { //-------Do Something with the deathDate event------------// } void Main() { //--------Subscribe the function GetDeathDetails----------// myPat.deathDate += GetDeathDetails; } } public class Bank { Patient myPat = new Patient(); void GetPatInfo () { //-------Do Something with the deathDate event------------// } void Main() { //--------Subscribe the function GetPatInfo ----------// myPat.deathDate += GetPatInfo; } } }
Q # 33) Какви са различните видове Делегати?
Отговор: Различните видове Делегати са:
- Единичен делегат : Делегат, който може да извика единичен метод.
- Делегат на мултикаст : Делегат, който може да извика множество методи. + и - операторите се използват съответно за абонамент и отписване.
- Общ делегат : Не изисква да бъде дефиниран екземпляр на делегата. Той е от три вида, Action, Funcs и Predicate.
- Действие - В горния пример за делегати и събития можем да заменим дефиницията на делегат и събитие, като използваме ключовата дума Action. Делегатът за действие определя метод, който може да бъде извикан за аргументи, но не връща резултат
Публичен делегат void deathInfo ();
Публично събитие deathInfo deathDate;
// Замяна с действие //
Публично събитие Действие deathDate;
Действието имплицитно се отнася до делегат.
-
- функции - Делегат на Func дефинира метод, който може да бъде извикан за аргументи и връща резултат.
Функция myDel е същото като делегирайте bool myDel (int a, низ b);
-
- Предикат - Определя метод, който може да бъде извикан на аргументи и винаги връща bool.
Предскажете myDel е същото като делегирайте bool myDel (низ);
Q # 34) Какво означават Делегатите за многоадресни услуги?
Отговор: Делегат, който сочи към повече от един метод, се нарича Multicast Delegate. Мултикастингът се постига чрез използване на оператора + и + =.
Да разгледаме примера от Q # 32.
Има двама абонати за deathEvent, GetPatInfo , и GetDeathDetails . И следователно сме използвали оператор + =. Това означава, когато myDel се извиква и двамата абонати. Делегатите ще бъдат извикани в реда, в който са добавени.
Въпрос # 35) Обяснете издателите и абонатите в Събития.
Отговор: Publisher е клас, отговорен за публикуването на съобщение от различни видове други класове. Съобщението не е нищо друго освен Събитие, както беше обсъдено в горните въпроси.
От Пример в Q # 32, Class Patient е класът Publisher. Той генерира Събитие deathEvent , която се получава от останалите класове.
Абонатите улавят съобщението от типа, от който се интересува. Отново от Пример от Q # 32, Class Insurance и Bank са абонати. Те се интересуват от събитие deathEvent от тип нищожен .
В # 36) Какво представляват синхронните и асинхронните операции?
Отговор: Синхронизацията е начин за създаване на безопасен за нишки код, при който само една нишка може да има достъп до ресурса по всяко време. Асинхронното повикване чака методът да завърши, преди да продължи с програмния поток.
Синхронното програмиране влияе зле на потребителските интерфейси, когато потребителят се опитва да изпълнява отнемащи време операции, тъй като ще се използва само една нишка. При асинхронна операция извикването на метода веднага ще се върне, за да може програмата да изпълнява други операции, докато извиканият метод завършва работата си в определени ситуации.
В C # ключовите думи Async и Await се използват за постигане на асинхронно програмиране. Погледнете Q # 43 за повече подробности относно синхронното програмиране.
Q # 37) Какво е отражение в C #?
Отговор: Отражението е способността на кода да има достъп до метаданните на сборката по време на изпълнение. Програмата рефлектира върху себе си и използва метаданните, за да информира потребителя или да промени поведението си. Метаданните се отнасят до информация за обекти, методи.
Пространството от имена System.Reflection съдържа методи и класове, които управляват информацията за всички заредени типове и методи. Използва се главно за приложения на Windows, Например , за да видите свойствата на бутон във форма на windows.
Обектът MemberInfo на отражението на класа се използва за откриване на атрибутите, свързани с клас.
Отражението се реализира в две стъпки, първо, получаваме типа на обекта и след това използваме типа, за да идентифицираме членове като методи и свойства.
За да получим тип клас, можем просто да използваме,
Въведете mytype = myClass.GetType ();
След като имаме тип клас, другата информация за класа може лесно да бъде достъпна.
System.Reflection.MemberInfo Info = mytype.GetMethod („AddNumbers“);
Горното изявление се опитва да намери метод с име AddNumbers в час Моят клас .
В # 38) Какво е родов клас?
Отговор: Generics или Generic class се използва за създаване на класове или обекти, които нямат специфичен тип данни. Типът данни може да бъде присвоен по време на изпълнение, т.е. когато се използва в програмата.
Например:
И така, от горния код виждаме първоначално 2 метода за сравнение, за да сравним низ и int.
В случай на сравнение на параметри от друг тип данни, вместо да създаваме много претоварени методи, можем да създадем общ клас и да предадем заместващ тип данни, т.е. Т. Така че T действа като тип данни, докато не се използва конкретно в метода Main () .
Q # 39) Обяснете Get и Set свойства на Accessor?
Отговор: Get и Set се наричат Accessors. Те се използват от Properties. Свойството осигурява механизъм за четене, запис на стойността на частно поле. За достъп до това частно поле се използват тези аксесоари.
Get Property се използва за връщане на стойността на свойство
Set Access accessor се използва за задаване на стойността.
Използването на get и set е както по-долу:
В # 40) Какво е нишка? Какво е Multithreading?
Отговор: Нишката е набор от инструкции, които могат да бъдат изпълнени, което ще позволи на нашата програма да извършва едновременна обработка. Едновременната обработка ни помага да правим повече от една операция наведнъж. По подразбиране C # има само една нишка. Но другите нишки могат да бъдат създадени за изпълнение на кода паралелно с оригиналната нишка.
Нишката има жизнен цикъл. Той започва всеки път, когато се създаде клас на нишка и се прекратява след изпълнението. System.Thading е пространството от имена, което трябва да бъде включено за създаване на нишки и използване на неговите членове.
Нишките се създават чрез разширяване на Thread Class. Старт () метод се използва за започване на изпълнение на нишка.
//CallThread is the target method// ThreadStart methodThread = new ThreadStart(CallThread); Thread childThread = new Thread(methodThread); childThread.Start();
C # може да изпълнява повече от една задача наведнъж. Това се прави чрез обработка на различни процеси от различни нишки. Това се нарича MultiThreading.
Има няколко метода на нишки, които се използват за обработка на многонишкови операции:
Стартиране, заспиване, прекъсване, спиране, възобновяване и присъединяване.
Повечето от тези методи се обясняват.
Q # 41) Назовете някои свойства на Thread Class.
Отговор: Малко свойства на клас нишки са:
- IsAlive - съдържа стойност True, когато нишката е активна.
- Име - Може да върне името на нишката. Също така може да зададете име за нишката.
- Приоритет - връща приоритетната стойност на заданието, зададено от операционната система.
- IsBackground - получава или задава стойност, която показва дали нишката трябва да бъде фонов процес или преден план.
- ThreadState - описва състоянието на нишката.
Q # 42) Какви са различните състояния на нишката?
Отговор: Различните състояния на една нишка са:
- Без стартиране - Темата е създадена.
- Бягане - Нишката започва изпълнение.
- WaitSleepJoin - Извикванията на нишки спят, обажданията чакат на друг обект и обажданията се присъединяват към друга нишка.
- Окачен - Темата е спряна.
- Прекъснато - Темата е мъртва, но не е променена в състояние спряно.
- Спряна - Нишката е спряла.
Q # 43) Какво представляват Async и Await?
Отговор: Ключовите думи Async и Await се използват за създаване на асинхронни методи в C.
Асинхронното програмиране означава, че процесът протича независимо от основните или други процеси.
Използването на Async и Await е показано по-долу:
- Ключовата дума Async се използва за декларацията на метода.
- Броят е на задача от тип int, която извиква метода CalculateCount ().
- Calculatecount () започва изпълнението и изчислява нещо.
- Независимата работа се извършва върху моята нишка и след това се изчаква изчисляването на изчислението.
- Ако Calculatecount не е завършен, myMethod ще се върне към метода си за извикване, като по този начин основната нишка не се блокира.
- Ако Calculatecount вече е приключил, тогава имаме наличен резултат, когато контролата достигне county. Така че следващата стъпка ще продължи в същата тема. Ситуацията в горния случай обаче не е свързана със забавяне от 1 секунда.
В # 44) Какво е задънена улица?
Отговор: Deadlock е ситуация, при която процесът не е в състояние да завърши изпълнението си, тъй като два или повече процеса чакат взаимно да завършат. Това обикновено се случва при многопоточност.
Тук споделен ресурс се задържа от процес и друг процес изчаква първия процес да го освободи, а нишката, която държи заключения елемент, чака друг процес да завърши.
Помислете за следния пример:
- Изпълнявайте задачи за достъп objB и чака 1 секунда.
- Междувременно PerformtaskB се опитва да осъществи достъп до ObjA.
- След 1 секунда PeformtaskA се опитва да получи достъп до ObjA, който е заключен от PerformtaskB.
- PerformtaskB се опитва да осъществи достъп до ObjB, който е заключен от PerformtaskA.
Това създава Deadlock.
Q # 45) Обяснете L ок , Монитори , и Mutex Обект в резба.
Отговор: Ключовата дума Lock гарантира, че само една нишка може да влезе в даден раздел на кода по всяко време. В горното Пример , lock (ObjA) означава, че заключването е поставено на ObjA, докато този процес го освободи, никоя друга нишка няма достъп до ObjA.
Mutex също е като ключалка, но може да работи в множество процеси едновременно. WaitOne () се използва за заключване и ReleaseMutex () се използва за освобождаване на заключването. Но Mutex е по-бавен от заключването, тъй като отнема време да го придобиете и освободите.
Monitor.Enter и Monitor.Exit изпълнява вътрешно заключване. заключване е пряк път за монитори. lock (objA) вътрешни повиквания.
Monitor.Enter(ObjA); try { } Finally {Monitor.Exit(ObjA));}
Q # 46) Какво е условие за състезание?
Години: Състезателно състояние възниква, когато две нишки имат достъп до един и същ ресурс и се опитват да го променят едновременно. Нишката, която ще може първо да осъществи достъп до ресурса, не може да се предвиди.
Ако имаме две нишки, T1 и T2, и те се опитват да получат достъп до споделен ресурс, наречен X. И ако и двете нишки се опитат да напишат стойност в X, последната стойност, записана в X, ще бъде запазена.
Q # 47) Какво е обединяване на нишки?
Години: Thread pool е колекция от нишки. Тези нишки могат да се използват за изпълнение на задачи, без да се нарушава основната нишка. След като нишката завърши задачата, нишката се връща в пула.
Пространството от имена System.Threading.ThreadPool има класове, които управляват нишките в пула и неговите операции.
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SomeTask));
Горният ред поставя задача на опашка. Методите SomeTask трябва да имат параметър от тип Object.
В # 48) Какво е сериализация?
Отговор: Сериализацията е процес на конвертиране на код в неговия двоичен формат. След като се преобразува в байтове, той може лесно да се съхранява и записва на диск или други подобни устройства за съхранение. Сериализациите са полезни главно, когато не искаме да загубим оригиналната форма на кода и той може да бъде извлечен по всяко време в бъдеще.
Всеки клас, който е маркиран с атрибута (Serializable), ще бъде преобразуван в неговата двоична форма.
Обратният процес на връщане на C # кода от бинарната форма се нарича десериализация.
За да сериализираме обект, трябва обектът да бъде сериализиран, поток, който може да съдържа сериализирания обект и пространство от имена System.Runtime.Serialization може да съдържа класове за сериализация.
Q # 49) Какви са типовете сериализация?
Отговор: Различните видове сериализация са:
- XML сериализация - Той сериализира всички публични свойства на XML документа. Тъй като данните са в XML формат, те могат лесно да се четат и манипулират в различни формати. Класовете се намират в System.sml.Serialization.
- САПУН - Класовете се намират в System.Runtime.Serialization. Подобно на XML, но създава пълен плик, съвместим със SOAP, който може да се използва от всяка система, която разбира SOAP.
- Двоична сериализация - Позволява всеки код да бъде преобразуван в неговата двоична форма. Може да сериализира и възстановява публични и непублични имоти. Той е по-бърз и заема по-малко място.
В # 50) Какво представлява XSD файл?
Отговор: XSD файл означава XML Schema Definition. Той дава структура за XML файла. Това означава, че той решава елементите, които XML трябва да има и в какъв ред и какви свойства трябва да присъстват. Без XSD файл, свързан с XML, XML може да има всякакви тагове, всякакви атрибути и всякакви елементи.
Инструментът Xsd.exe преобразува файловете в XSD формат. По време на сериализацията на код C # класовете се преобразуват в XSD съвместим формат от xsd.exe.
как да генерирам произволни числа в c ++ между 0 и 100
Заключение
C # расте бързо от ден на ден и играе основна роля в индустрията за тестване на софтуер.
Сигурен съм, че тази статия значително ще улесни подготовката ви за интервюто и ще ви предостави доста знания за повечето теми на C #.
Надявам се, че ще сте готови да се изправите уверено на всяко интервю на C # !!
Препоръчително четене
- Интервюирайте въпроси и отговори
- Въпроси и отговори за интервю за ETL тестване
- Топ 50 на най-популярните въпроси и отговори за интервю за CCNA
- Топ 51 въпроси и отговори за интервю за Bootstrap
- Топ 20+ .NET интервюта и отговори
- Топ 50+ въпроси и отговори за интервюта за база данни
- Някои сложни ръчни тестови въпроси и отговори
- 25 най-добри пъргави тестови интервюта Въпроси и отговори