top 50 c interview questions with answers
Често постављана основна Ц # интервјуска питања о програмирању и кодирању:
Ц # је програмски језик који је брзо порастао и такође се широко користи. Веома је тражен, свестран и такође подржава више платформи.
Не користи се само за прозоре већ и за многе друге оперативне системе. Отуда је веома важно да добро разумете овај језик да бисте стали на било који посао у индустрији тестирања софтвера.
Испод су наведени не само скуп најчешће постављаних питања о Ц # већ и неке врло важне теме које треба разумети како би се издвојиле из гомиле популације Ц #.
Како је Ц # велика тема, због лакоће адресирања свих концепата, поделио сам ову тему на три дела као што је доле споменуто:
- Питања о основним појмовима
- Питања о низовима и жицама
- Напредни концепти
Овај чланак укључује сет од 50 најбољих питања и одговора на Ц # интервјуу који покривају готово све његове важне теме на једноставан начин, како би вам помогли да се припремите за интервју.
Шта ћете научити:
Најпопуларнија питања и одговори на Ц # интервјуу
Основни појмови
П # 1) Шта је објекат и класа?
Одговор: Класа је енкапсулација својстава и метода које се користе за представљање ентитета у реалном времену. То је структура података која окупља све инстанце у једној јединици.
Објекат је дефинисан као примерак класе. Технички, то је само додељени блок меморије који се може сачувати у облику променљивих, низа или колекције.
П # 2) Који су основни концепти ООП?
Одговор: Четири основна концепта објектно оријентисаног програмирања су:
- Капсулација : Овде је унутрашњи приказ објекта скривен од погледа изван његове дефиниције. Могу се приступити само потребним информацијама, док је остатак примене података скривен.
- Одвајање: То је процес идентификовања критичног понашања и података објекта и уклањања небитних детаља.
- Наслеђивање : То је способност стварања нових часова из другог разреда. То се постиже приступом, изменама и проширивањем понашања објеката у родитељској класи.
- Полиморфизам : Име значи, једно име, више облика. То се постиже коришћењем више метода са истим именом, али различитим применама.
П # 3) Шта је управљани и неуправљани код?
Одговор: Управљани код је код који извршава ЦЛР (Цоммон Лангуаге Рунтиме), тј. Сав код апликације заснован је на .Нет платформи. Сматра се управљаним због .Нет оквира који интерно користи сакупљач смећа да очисти неискоришћену меморију.
Неуправљани код је било који код који се извршава извршењем програма било ког другог оквира, осим .Нет-а. Рунтиме апликације ће се побринути за меморију, сигурност и друге операције перформанси.
П # 4) Шта је интерфејс?
Одговор: Интерфејс је класа без имплементације. Једино што садржи је декларација метода, својстава и догађаја.
П # 5) Који су различити типови класа у Ц #?
Одговор: Различити типови класа у Ц # су:
- Делимична класа: Омогућава својим члановима да се деле или деле са више .цс датотека. Означава се кључном речи Делимично.
- Запечаћена класа: То је класа која се не може наследити. Да бисмо приступили члановима запечаћене класе, треба да креирамо објекат класе. Означава се кључном речи Запечаћено .
- Апстрактни час : То је класа чији се објекат не може инстанцирати. Класа се може наследити само. Требало би да садржи најмање један метод. Означава се кључном речи апстрактан .
- Статичка класа : То је класа која не дозвољава наслеђивање. Чланови разреда су такође статични. Означава се кључном речи статички . Ова кључна реч говори компајлеру да провери да ли има случајних случајева статичке класе.
П # 6) Објаснити компилацију кода у Ц #.
Одговор: Компилација кода у Ц # укључује следећа четири корака:
- Компајлирање изворног кода у Манагед цоде помоћу Ц # компајлера.
- Комбиновање новоствореног кода у склопове.
- Учитавање уобичајеног времена извршавања (ЦЛР).
- Извршење скупштине од стране ЦЛР.
К # 7) Које су разлике између класе и структуре?
Одговор: Доље су дате разлике између класе и структуре:
Класа | Структура |
---|---|
Подржава наслеђивање | Не подржава наслеђивање |
Предмет је прослеђен референцом (референтни тип) | Структура се прослеђује копијом (тип вредности) |
Чланови су подразумевано приватни | Чланови су подразумевано јавни |
Добро за веће сложене објекте | Добро за мале изолиране моделе |
Може да користи сакупљач отпада за управљање меморијом | Не може се користити сакупљач смећа, а самим тим и управљање меморијом |
П # 8) Која је разлика између виртуелне методе и апстрактне методе?
Одговор: Виртуална метода мора увек имати подразумевану имплементацију. Међутим, може се поништити у изведеној класи, мада није обавезно. Може се поништити помоћу прегазити кључна реч.
Апстрактна метода нема примену. Пребива у апстрактној класи. Обавезно је да изведена класа примењује апстрактну методу. Ан прегазити кључна реч овде није потребна, мада се може користити.
П # 9) Објаснити просторе имена у Ц #.
Одговор: Користе се за организацију великих кодних пројеката. „Систем“ је најчешће коришћени простор имена у Ц #. Можемо да креирамо сопствени простор имена, а такође можемо да користимо један простор имена у другом, који се назива угнежђени простори имена.
Означени су кључном речи „простор имена“.
П # 10) Шта је израз „употреба“ у Ц #?
Одговор: Кључна реч „Употреба“ означава да програм користи одређени простор имена.
На пример, користећи Систем
Ево, Систем је простор имена. Конзола класе дефинисана је под Систем. Дакле, можемо да користимо цонсоле.врителине („….“) Или реадлине у нашем програму.
П # 11) Објасните апстракцију.
Одговор: Апстракција је један од концепата ООП. Користи се за приказ само битних карактеристика класе и сакривање непотребних информација.
Узмимо пример аутомобила:
Возач аутомобила треба да зна детаље о аутомобилу, попут боје, имена, огледала, управљача, брзине, кочнице итд. Оно што не мора да зна је унутрашњи мотор, издувни систем.
Дакле, апстракција помаже у сазнању шта је неопходно и скривању унутрашњих детаља од спољног света. Сакривање интерних информација може се постићи проглашавањем таквих параметара као Приватно помоћу приватни кључна реч.
П # 12) Објаснити полиморфизам?
Одговор: Програмски, полиморфизам значи исти метод, али различите примене. Има два типа, време компајлирања и време извођења.
- Полиморфизам компајлираног времена постиже се преоптерећењем оператера.
- Полиморфизам током извођења постиже се поништавањем. Наслеђивање и виртуелне функције користе се током полиморфизма времена извођења.
На пример ,Ако класа има метод Воид Адд (), полиморфизам се постиже преоптерећењем методе, односно воид Адд (инт а, инт б), воид Адд (инт адд) су све преоптерећене методе.
П # 13) Како се у Ц # примењује руковање изузецима?
Одговор: Обрада изузетака врши се помоћу четири кључне речи у Ц #:
- покушати : Садржи блок кода за који ће се изузетак проверити.
- улов : То је програм који хвата изузетак уз помоћ руковаоца изузецима.
- коначно : То је блок кода написан за извршење без обзира да ли је изузетак ухваћен или не.
- Баци : Добавља изузетак када се појави проблем.
П # 14) Шта су Ц # И / О класе? Које су најчешће коришћене И / О класе?
Одговор: Ц # има простор имена Систем.ИО, који се састоји од класа које се користе за извршавање различитих операција над датотекама попут креирања, брисања, отварања, затварања итд.
Неке најчешће коришћене И / О класе су:
- Филе - Помаже у манипулисању датотеком.
- СтреамВритер - Користи се за писање знакова у ток.
- СтреамРеадер - Користи се за читање знакова у току.
- СтрингВритер - Користи се за читање међуспремника низа.
- СтрингРеадер - Користи се за писање међуспремника низа.
- Пут - Користи се за извођење операција повезаних са информацијама о путањи.
К # 15) Шта је класа СтреамРеадер / СтреамВритер?
Одговор: СтреамРеадер и СтреамВритер су класе простора имена Систем.ИО. Користе се када желимо да читамо или пишемо цхарацт90, односно податке засноване на читачу.
Неки од чланова СтреамРеадер-а су: Цлосе (), Реад (), Реадлине ().
Чланови СтреамВритер-а су: Цлосе (), Врите (), Врителине ().
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) Шта је деструктор у Ц #?
Одговор: Деструктор се користи за чишћење меморије и ослобађање ресурса. Али у Ц # то сакупљач смећа ради самостално. Систем.ГЦ.Цоллецт () се интерно позива за чишћење. Али понекад ће бити потребно ручно применити деструкторе.
На пример:
~Car() { Console.writeline(“….”); }
П # 17) Шта је апстрактна класа?
Одговор: Апстрактна класа је класа која се означава апстрактном кључном речи и може се користити само као основна класа. Ову класу увек треба наследити. Не може се створити инстанца класе. Ако не желимо да било који програм креира објекат класе, онда се такве класе могу учинити апстрактним.
Ниједна метода у апстрактној класи нема имплементације у истој класи. Али они се морају применити у одељењу за децу.
На пример:
abstract class AB1 { Public void Add(); } Class childClass : AB1 { childClass cs = new childClass (); int Sum = cs.Add(); }
Све методе у апстрактној класи су имплицитно виртуелне методе. Дакле, виртуелна кључна реч не би требало да се користи ни са једним методом у апстрактној класи.
П # 18) Шта су бокс и унбокинг?
Одговор: Претварање типа вредности у референтни тип назива се бокс.
На пример:
инт Вредност1 - = 10;
// ———— Бокс —————— //
објект бокедВалуе = Валуе1;
Позива се експлицитна конверзија истог референтног типа (створеног боксањем) назад у тип вредности Распакивање .
На пример:
// ———— Унбокинг —————— //
инт УнБокинг = инт (бокедВалуе);
како отворити јнлп датотеку
П # 19) Која је разлика између Изјава о наставку и прекиду?
Одговор: Изјава Бреак прекида петљу. Омогућава контролу програма за излазак из петље. Изјава Цонтинуе омогућава контролу програма да изађе само из тренутне итерације. Не прекида петљу.
П # 20) Која је разлика између коначно и финализованог блока?
Одговор: коначно блок се позива након извршавања блока три анд цатцх. Користи се за руковање изузецима. Без обзира да ли је изузетак ухваћен или не, овај блок кода ће се извршити. Обично ће овај блок имати код за чишћење.
метода финализе се позива непосредно пре сакупљања смећа. Користи се за обављање операција чишћења неуправљаног кода. Аутоматски се позива када се дата инстанца накнадно не позове.
Низови и жице
П # 21) Шта је низ? Дати синтаксу за један и вишедимензионални низ?
Одговор: Низ се користи за чување више променљивих истог типа. То је колекција променљивих похрањених на непрекидној меморијској локацији.
На пример:
двоструки бројеви = нови двоструки (10);
инт () резултат = нови инт (4) {25,24,23,25};
Једнодимензионални низ је линеарни низ где се променљиве чувају у једном реду. Изнад пример је једнодимензионални низ.
Низови могу имати више димензија. Вишедимензионални низови се називају и правоугаоним низовима.
На пример , инт (,) бројеви = нови инт (3,2) {{1,2}, {2,3}, {3,4}};
П # 22) Шта је назубљени низ?
Одговор: Назубљени низ је низ чији су елементи низови. Такође се назива и низом низова. То може бити једна или више димензија.
инт () јаггедАрраи = нови инт (4) ();
П # 23) Наведите нека својства низа.
Одговор: Својства низа укључују:
- Дужина: Добија укупан број елемената у низу.
- ИсФикедСизе: Каже да ли је низ фиксне величине или не.
- ИсРеадОнли : Говори да ли је низ само за читање или не.
П # 24) Шта је класа низа?
Одговор: Класа низа је основна класа за све низове. Пружа многа својства и методе. Присутан је у систему простора имена.
П # 25) Шта је низ? Која су својства класе стринга?
Одговор: Низ је скуп предмета од чара. Такође можемо декларисати променљиве низа у ц #.
стринг наме = “Питања Ц #”;
Класа низа у Ц # представља низ. Својства класе стринга су:
- Цхарс добити објект Цхар у тренутном низу.
- Дужина добија број објеката у тренутном низу.
П # 26) Шта је секвенца бекства? Именујте неке низање стринга у Ц #.
Одговор: Есцапе секвенца означена је косом цртом (). Обрнута коса црта указује на то да знак који следи треба тумачити дословно или је то посебан карактер. Секвенца бекства се сматра једним знаком.
Низови бежања низа су следећи:
- н - Знак за нову линију
- б - Бацкспаце
- \ - Повратна црта
- ’- Једноструки наводник
- ’’ - Двоструки навод
П # 27) Шта су регуларни изрази? Претражите низ користећи регуларне изразе?
Одговор: Регуларни израз је образац који одговара скупу уноса. Узорак се може састојати од оператора, конструкција или литералних знакова. Регек се користи за рашчлањивање низа и замену низа знакова.
На пример:
* подудара се са претходним знаком нула или више пута. Дакле, а * б регуларни израз је еквивалентан б, аб, ааб, аааб и тако даље.
Претраживање низа помоћу Регек-а:
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'); } } }
Горњи пример тражи „Питхон“ према скупу уноса из низа језика. Користи Регек.ИсМатцх који враћа труе у случају да је образац пронађен на улазу. Узорак може бити било који регуларни израз који представља улаз који желимо да подударимо.
П # 28) Које су основне стринг операције? Објасните.
Одговор: Неке од основних операција низа су:
- Цонцатенате : Два низа могу се повезати помоћу Систем.Стринг.Цонцат или помоћу оператора +.
- Модификовати : Реплаце (а, б) се користи за замену низа другим низом. Трим () се користи за обрезивање низа на крају или на почетку.
- Упоредити : Систем.СтрингЦомпарисон () користи се за упоређивање два низа, било упоређивање које разликује велика и мала слова или не. Углавном су потребна два параметра, оригинални низ и низ са којима се упоређује.
- Претрага : СтартВитх, методе ЕндсВитх користе се за претрагу одређеног низа.
П # 29) Шта је рашчлањивање? Како рашчланити низ времена и датума?
Одговор: Рашчлањивањем се низ претвара у други тип података.
На пример:
текст текста = '500';
инт нум = инт.Парсе (текст);
500 је цео број. Дакле, метода Парсе претвара низ 500 у сопствени основни тип, тј. Инт.
Следите исту методу за претварање низа ДатеТиме.
стринг датеТиме = „1. јануара 2018.“;
ДатеТиме парседВалуе = ДатеТиме.Парсе (датеТиме);
Напредни концепти
П # 30) Шта је делегат? Објасните.
Одговор: Делегат је променљива која садржи референцу на метод. Дакле, то је показивач функције или референтни тип. Сви делегати изведени су из простора имена Систем.Делегате. И делегат и метода на коју се односи могу имати исти потпис.
- Изјава делегата: јавни делегат воид АддНумберс (инт н);
Након декларације делегата, делегат мора креирати објекат помоћу нове кључне речи.
АддНумберс ан1 = нови АддНумберс (број);
Делегат пружа неку врсту енкапсулације референтне методе, која ће се интерно позвати када се позове делегат.
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; } }
У горњем примеру имамо делегата миДел који за параметар узима целобројну вредност. Програм класа има метод истог потписа као и делегат, назван АддНумберс ().
Ако постоји друга метода која се зове Старт () која креира објекат делегата, тада се објекат може доделити АддНумберс јер има исти потпис као и делегат.
П # 31) Шта су догађаји?
Одговор: Догађаји су радње корисника које генеришу обавештења апликацији на коју мора да одговори. Корисничке акције могу бити покрети миша, притискање тастера и тако даље.
Програмски, класа која покреће догађај назива се издавач, а класа која реагује / прима догађај назива се претплатник. Догађај треба да има најмање једног претплатника, а тај догађај се никада не подиже.
Делегати се користе за пријављивање догађаја.
Јавни делегат воид ПринтНумберс ();
Евент ПринтНумберс миЕвент;
П # 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; } } }
К # 33) Који су различити типови делегата?
Одговор: Различити типови делегата су:
- Један делегат : Делегат који може позвати једну методу.
- Мултицаст делегат : Делегат који може позвати више метода. Оператори + и - користе се за претплату, односно одјаву претплате.
- Генерички делегат : Не захтева дефинисање инстанце делегата. Три су типа, Ацтион, Фунцс и Предицате.
- поступак - У горе наведеном примеру делегата и догађаја, можемо заменити дефиницију делегата и догађаја помоћу кључне речи Ацтион. Делегат акције дефинише методу која се може позвати на аргументе, али не враћа резултат
Јавни делегат воид деатхИнфо ();
Јавни догађај деатхИнфо деатхДате;
// Замена акцијом //
Јавни догађај Акција деатхДате;
Акција се имплицитно односи на делегата.
-
- функције - Фунц делегат дефинира методу која се може позвати на аргументе и враћа резултат.
Фунц миДел је исто што и делегирати боол миДел (инт а, стринг б);
-
- Предикат - Дефинише методу која се може позвати на аргументе и увек враћа вредност.
Предикат миДел је исто што и делегирати боол миДел (стрингови);
К # 34) Шта значе делегати вишеструког слања?
Одговор: Делегат који указује на више метода назива се Мултицаст делегат. Мултицастинг се постиже употребом + и + = оператора.
Размотримо пример из питања бр. 32.
Постоје два претплатника за деатхЕвент, ГетПатИнфо , и ГетДеатхДетаилс . И стога смо користили + = оператор. То значи кад год миДел , позивају се оба претплатника. Делегати ће бити позвани редоследом којим су додани.
П # 35) Објасните издавачима и претплатницима на догађајима.
Одговор: Издавач је класа одговорна за објављивање порука различитих врста других класа. Порука није ништа друго него Догађај о коме је било речи у горњим питањима.
Од Пример у К # 32, Цласс Патиент је класа Публисхер. То генерише догађај деатхЕвент , који добијају остали разреди.
Претплатници бележе поруку типа који га занима. Поново из Пример од К # 32, Цласс Инсуранце и Банк су претплатници. Занима их догађај деатхЕвент типа празнина .
П # 36) Шта су синхроне и асинхроне операције?
Одговор: Синхронизација је начин за стварање кода који је сигуран за нит, где само једна нит може приступити ресурсу у било ком тренутку. Асинхрони позив чека да се метода заврши пре него што настави са протоком програма.
Синхроно програмирање лоше утиче на операције корисничког интерфејса када корисник покушава извршити дуготрајне операције јер ће се користити само једна нит. У асинхроној операцији, позив методе ће се одмах вратити тако да програм може изводити друге операције док позвана метода довршава свој посао у одређеним ситуацијама.
У Ц #, кључне речи Асинц и Аваит се користе за постизање асинхроног програмирања. Погледајте К # 43 за више детаља о синхроном програмирању.
П # 37) Шта је рефлексија у Ц #?
Одговор: Рефлексија је способност кода да приступи метаподацима склопа током извођења. Програм се одражава на себе и користи метаподатке да би обавестио корисника или изменио његово понашање. Метаподаци се односе на информације о објектима, методама.
Простор имена Систем.Рефлецтион садржи методе и класе које управљају информацијама свих учитаних типова и метода. Углавном се користи за Виндовс апликације, На пример , да бисте погледали својства дугмета у облику прозора.
Објекат МемберИнфо одраза класе користи се за откривање атрибута повезаних са класом.
Рефлексија се спроводи у два корака, прво добијамо тип објекта, а затим користимо тип за идентификацију чланова као што су методе и својства.
Да бисмо добили тип класе, можемо једноставно да користимо,
Откуцајте митипе = миЦласс.ГетТипе ();
Једном када имамо врсту класе, осталим информацијама о класи можемо лако приступити.
Систем.Рефлецтион.МемберИнфо Инфо = митипе.ГетМетход („АддНумберс“);
Горња изјава покушава да пронађе метод са именом АддНумберс у класи мој разред .
П # 38) Шта је генеричка класа?
Одговор: Генеричка или генеричка класа се користи за креирање класа или објеката који немају неки одређени тип података. Тип података се може доделити током извођења, тј. Када се користи у програму.
На пример:
Дакле, из горњег кода, у почетку видимо 2 методе упоређивања, за поређење стринга и инт.
У случају поређења параметара другог типа података, уместо да створимо много преоптерећених метода, можемо створити генеричку класу и проследити заменски тип података, тј. Т. Дакле, Т делује као тип података док се посебно не користи у методи Маин () .
П # 39) Објасните Гет и Сет својства Аццессор-а?
Одговор: Гет и Сет се називају Аццессорс. Њих користи Пропертиес. Својство пружа механизам за читање, писање вредности приватног поља. За приступ том приватном пољу користе се ови приступници.
Гет Проперти се користи за враћање вредности имовине
Сет Проперти аццессор се користи за подешавање вредности.
Коришћење гет анд сет је као у наставку:
П # 40) Шта је нит? Шта је Мултитхреадинг?
Одговор: Нит је скуп упутстава која се могу извршити, што ће нашем програму омогућити истовремену обраду. Истовремена обрада помаже нам да истовремено радимо више операција. Подразумевано, Ц # има само једну нит. Али остале нити могу се створити за извршавање кода паралелно са оригиналном нити.
Навој има животни циклус. Почиње кад год се креира класа нити и завршава се након извршења. Систем.Тхадинг је простор имена који треба да се укључи да би се створиле нити и користили његови чланови.
Нити се креирају проширењем класе навоја. Почетак() метода се користи за започињање извршавања нити.
//CallThread is the target method// ThreadStart methodThread = new ThreadStart(CallThread); Thread childThread = new Thread(methodThread); childThread.Start();
Ц # може истовремено да изврши више задатака. То се постиже руковањем различитим процесима различитим нитима. Ово се назива МултиТхреадинг.
Постоји неколико метода нити које се користе за руковање операцијама са више нити:
Покрени, спавај, прекини, обустави, настави и придружи се.
Већина ових метода су саморазумљиве.
П # 41) Наведите нека својства класе нити.
Одговор: Неколико својстава класе нити су:
- Је жив - садржи вредност Труе када је нит активна.
- Име - Може да врати име нити. Такође, може поставити име нити.
- Приоритет - враћа приоритетну вредност задатка који је поставио оперативни систем.
- ИсБацкгроунд - добија или поставља вредност која указује да ли нит треба да буде процес у позадини или у првом плану.
- ТхреадСтате - описује стање нити.
К # 42) Која су различита стања нити?
Одговор: Различита стања нити су:
- Непокренуто - Тема је створена.
- Трчање - Навој започиње извршење.
- ВаитСлеепЈоин - Позиви нити спавају, позиви чекају на другом објекту, а позиви се спајају на другој нити.
- Суспендед - Навој је суспендован.
- Прекинуто - Навој је мртав, али није промењен у стање заустављен.
- Заустављено - Навој је заустављен.
К # 43) Шта су Асинц и Аваит?
Одговор: Кључне речи Асинц и Аваит се користе за стварање асинхроних метода у Ц.
Асинхроно програмирање значи да се процес одвија независно од главних или других процеса.
Коришћење Асинц-а и Аваит-а је приказано доле:
- Кључна реч Асинц се користи за декларацију методе.
- Бројање је задатка типа инт који позива методу ЦалцулатеЦоунт ().
- Цалцулатецоунт () започиње извршење и израчунава нешто.
- Независно се ради на мојој нити, а затим се долази до изјаве чекати бројање.
- Ако Цалцулатецоунт није завршен, миМетход ће се вратити на свој метод позивања, тако да главна нит неће бити блокирана.
- Ако је Цалцулатецоунт већ завршен, тада имамо доступан резултат када контрола достигне чекати цоунт. Дакле, следећи корак ће се наставити у истој нити. Међутим, није ситуација у горе наведеном случају када је укључено кашњење од 1 секунде.
П # 44) Шта је ћорсокак?
Одговор: Застој је ситуација у којој процес није у могућности да доврши своје извршавање јер два или више процеса чекају да се један други заврши. То се обично дешава код вишеструких навоја.
Овде процес држи дељени ресурс, а други процес чека да га први процес ослободи, а нит која држи закључану ставку чека да се други процес заврши.
Размотрите следећи пример:
- Извршите задатке приступа објБ и сачекајте 1 секунду.
- У међувремену, ПерформтаскБ покушава да приступи ОбјА.
- После 1 секунде, ПеформтаскА покушава да приступи ОбјА који је закључан од ПерформтаскБ.
- ПерформтаскБ покушава да приступи ОбјБ-у који је закључан од ПерформтаскА.
Ово ствара ћорсокак.
ц ++ сачекајте 1 секунду
П # 45) Објаснити Л. ок , Монитори , и Мутек Објекат у навоју.
Одговор: Кључна реч Лоцк осигурава да само једна нит може да уђе у одређени одељак кода у било ком тренутку. У наведеном Пример , лоцк (ОбјА) значи да се брава поставља на ОбјА док је овај процес не ослободи, ниједна друга нит не може приступити ОбјА.
Мутек је такође попут браве, али истовремено може радити на више процеса. ВаитОне () се користи за закључавање, а РелеасеМутек () се користи за отпуштање браве. Али Мутек је спорији од закључавања, јер је потребно време да га се набави и ослободи.
Монитор.Ентер и Монитор.Екит имплементирају интерну блокаду. брава је пречица за Мониторе. лоцк (објА) интерно позива.
Monitor.Enter(ObjA); try { } Finally {Monitor.Exit(ObjA));}
П # 46) Шта су услови расе?
Године: Услов трке се јавља када две нити приступају истом ресурсу и покушавају да га промене истовремено. Нит која ће моћи прво приступити ресурсу не може се предвидети.
Ако имамо две нити, Т1 и Т2, и они покушавају да приступе заједничком ресурсу званом Кс. А ако обе нити покушају да упишу вредност у Кс, сачуваће се последња вредност записана у Кс.
К # 47) Шта је удруживање нити?
Године: Тхреад поол је колекција нити. Ове нити се могу користити за извршавање задатака без ометања примарне нити. Када нит заврши задатак, нит се враћа у спремиште.
Простор имена Систем.Тхреадинг.ТхреадПоол има класе које управљају нитима у спремишту и његовим операцијама.
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SomeTask));
Горња линија поставља задатак у ред. Методе СомеТаск требале би имати параметар типа Објецт.
П # 48) Шта је сериализација?
Одговор: Серијализација је поступак претварања кода у бинарни формат. Једном када се претвори у бајтове, може се лако сачувати и записати на диск или било који такав уређај за складиштење. Серијализације су углавном корисне када не желимо да изгубимо оригинални облик кода и може се преузети било када у будућности.
Свака класа која је означена атрибутом (Сериализабле) биће претворена у свој бинарни облик.
Обрнути поступак враћања Ц # кода из бинарног облика назива се Десериализација.
Да бисмо сериализовали објекат, потребно је да се објекат сериализује, ток који може садржати сериализовани објекат и простор имена Систем.Рунтиме.Сериализатион може садржати класе за сериализацију.
П # 49) Који су типови сериализације?
Одговор: Различити типови сериализације су:
- КСМЛ сериализација - Серијализује сва јавна својства у КСМЛ документу. Будући да су подаци у КСМЛ формату, њима се лако може читати и манипулисати у различитим форматима. Класе се налазе у Систем.смл.Сериализатион.
- САПУН - Класе се налазе у Систем.Рунтиме.Сериализатион. Слично КСМЛ-у, али производи потпуну омотницу усклађену са СОАП-ом коју може користити било који систем који разуме СОАП.
- Бинарна сериализација - Омогућава претварање било ког кода у бинарни облик. Може да врши сериализацију и обнављање јавне и нејавне имовине. Бржи је и заузима мање простора.
П # 50) Шта је КССД датотека?
Одговор: КССД датотека означава дефиницију КСМЛ шеме. Даје структуру за КСМЛ датотеку. То значи да одлучује о елементима које КСМЛ треба да има и којим редоследом и која својства треба да буду присутна. Без КССД датотеке повезане са КСМЛ-ом, КСМЛ може имати било које ознаке, било које атрибуте и било које елементе.
Алат Кссд.еке претвара датотеке у КССД формат. Током сериализације Ц # кода, класе претварају у КССД формат компатибилан са ксд.еке.
Закључак
Ц # брзо расте из дана у дан и игра главну улогу у индустрији за тестирање софтвера.
Сигуран сам да ће вам овај чланак знатно олакшати припрему за интервју и пружити приличну количину знања о већини Ц # тема.
Надам се да ћете бити спремни суочити се са било којим интервјуом на Ц # !!
Препоручено читање
- Интервјуирајте питања и одговоре
- Питања и одговори за испитивање ЕТЛ-а
- Топ 50 најпопуларнијих питања и одговора за интервју са ЦЦНА
- Топ 51 питања и одговори за интервју за Боотстрап
- Топ 20+ .НЕТ питања и одговори за интервјуе
- Топ 50+ питања и одговори за интервјуе из базе података
- Нека незгодна ручна тестирања питања и одговори
- 25 најбољих агилних тестова за интервју и питања и одговори