top 50 c interview questions with answers
Основні запитання щодо інтерв’ю на C # щодо програмування та кодування:
C # - це мова програмування, яка швидко зростала і також широко використовується. Він користується великим попитом, є універсальним і також підтримує крос-платформність.
Він використовується не лише для Windows, але і для багатьох інших операційних систем. Отже, дуже важливо добре розуміти цю мову, щоб потрапити на будь-яку роботу в галузі тестування програмного забезпечення.
Нижче наведено не просто набір найбільш часто задаваних питань C #, але також деякі дуже важливі теми, які слід зрозуміти, щоб виділитись серед натовпу населення C #.
Оскільки C # є великою темою, для зручності розгляду всіх понять, я розділив цю тему на три частини, як зазначено нижче:
- Запитання щодо основних понять
- Запитання щодо масивів та рядків
- Розширені концепції
Ця стаття містить набір 50 найкращих запитань та відповідей на співбесіду на C #, які охоплюють майже всі важливі теми простими словами, щоб допомогти вам підготуватися до співбесіди.
Що ви дізнаєтесь:
Найпопулярніші запитання та відповіді на інтерв’ю на C #
Основні поняття
Q # 1) Що таке Об'єкт і Клас?
Відповідь: Клас - це інкапсуляція властивостей та методів, які використовуються для представлення сутності в реальному часі. Це структура даних, яка об’єднує всі екземпляри в єдину одиницю.
Об'єкт визначається як екземпляр Класу. Технічно це лише виділений блок пам'яті, який можна зберігати у вигляді змінних, масиву або колекції.
Q # 2) Які основні концепції ООП?
Відповідь: Чотири основних концепції об’єктно-орієнтованого програмування:
- Капсуляція : Тут внутрішнє представлення об’єкта приховане від зору поза визначенням об’єкта. Можна отримати доступ лише до необхідної інформації, тоді як решта реалізації даних прихована.
- Абстракція: Це процес виявлення критичної поведінки та даних об’єкта та усунення недоречних деталей.
- Спадщина : Це можливість створювати нові класи з іншого класу. Це робиться шляхом доступу, модифікації та розширення поведінки об'єктів у батьківському класі.
- Поліморфізм : Ім'я означає, одне ім'я, багато форм. Це досягається наявністю декількох методів з однаковою назвою, але різними реалізаціями.
Запитання №3) Що таке керований та некерований код?
Відповідь: Керований код - це код, який виконується CLR (Common Language Runtime), тобто весь код програми базується на платформі .Net. Він вважається керованим через платформу .Net, яка внутрішньо використовує збирач сміття для очищення невикористаної пам'яті.
Некерований код - це будь-який код, який виконується під час виконання програми будь-якого іншого середовища, крім .Net. Час виконання програми буде дбати про пам'ять, безпеку та інші операційні операції.
Q # 4) Що таке інтерфейс?
Відповідь: Інтерфейс - це клас без реалізації. Єдине, що він містить, це оголошення методів, властивостей та подій.
Q # 5) Які існують різні типи класів у C #?
Відповідь: Різні типи класів на C #:
- Частковий клас: Це дозволяє своїм членам ділитися або ділитися з декількома файлами .cs. Він позначається ключовим словом Частково.
- Запечатаний клас: Це клас, який неможливо успадкувати. Щоб отримати доступ до членів запечатаного класу, нам потрібно створити об’єкт класу. Він позначається ключовим словом Герметичний .
- Абстрактний клас : Це клас, об'єкт якого неможливо створити. Клас можна успадкувати лише. Він повинен містити принаймні один метод. Він позначається ключовим словом реферат .
- Статичний клас : Це клас, який не допускає успадкування. Учасники класу також статичні. Він позначається ключовим словом статичний . Це ключове слово вказує компілятору перевірити наявність випадкових випадків статичного класу.
Q # 6) Поясніть компіляцію коду на C #.
Відповідь: Компіляція коду на C # включає наступні чотири кроки:
- Компіляція вихідного коду в керований код компілятором C #.
- Поєднання новоствореного коду у збірки.
- Завантаження загальномовної середовища виконання (CLR).
- Виконання збірки CLR.
Q # 7) Які відмінності між класом та структурою?
Відповідь: Нижче наведені відмінності між класом та структурою:
Клас | Структура |
---|---|
Підтримує спадщину | Не підтримує спадкування |
Клас передається за посиланням (тип посилання) | Структура - це передача за допомогою копії (тип значення) |
Учасники за замовчуванням приватні | За замовчуванням учасники є загальнодоступними |
Добре для великих складних об'єктів | Добре для невеликих ізольованих моделей |
Може використовувати колектор відходів для управління пам’яттю | Не можна використовувати збирач сміття, а отже, не керувати пам'яттю |
Q # 8) У чому різниця між віртуальним методом і абстрактним методом?
Відповідь: Віртуальний метод завжди повинен мати реалізацію за замовчуванням. Однак його можна замінити у похідному класі, хоча це не є обов'язковим. Це можна замінити за допомогою замінити ключове слово.
Абстрактний метод не має реалізації. Він знаходиться в абстрактному класі. Обов’язковим є те, що похідний клас реалізує абстрактний метод. Ан замінити ключове слово тут не потрібно, хоча його можна використовувати.
Q # 9) Поясніть простори імен у C #.
Відповідь: Вони використовуються для організації великих кодових проектів. “Система” - це найпоширеніший простір імен у C #. Ми можемо створити власний простір імен, а також використовувати один простір імен в іншому, який називається вкладеними просторами імен.
Вони позначаються ключовим словом “простір імен”.
Q # 10) Що таке оператор 'з використанням' у C #?
Відповідь: Ключове слово “Using” означає, що програма використовує конкретний простір імен.
Наприклад, за допомогою System
Ось, Система - це простір імен. Консоль класу визначається в розділі Система. Отже, ми можемо використовувати console.writeline (“….”) Або readline у нашій програмі.
Q # 11) Поясніть абстракцію.
Відповідь: Абстракція - одна з концепцій ООП. Він використовується для відображення лише основних особливостей класу та приховування непотрібної інформації.
Візьмемо приклад автомобіля:
Водій автомобіля повинен знати такі деталі про автомобіль, як колір, ім'я, дзеркало, рульове управління, шестерня, гальмо тощо. Він не повинен знати, це внутрішній двигун, вихлопна система.
Отже, абстракція допомагає пізнати необхідне та приховати внутрішні деталі від зовнішнього світу. Приховування внутрішньої інформації можна досягти, оголосивши такі параметри як 'Приватні' за допомогою приватний ключове слово.
Q # 12) Поясніть поліморфізм?
Відповідь: Програмно, поліморфізм означає той самий метод, але різні реалізації. Це 2 типи, час компіляції та час роботи.
- Компілятивний поліморфізм досягається перевантаженням оператора.
- Поліморфізм виконання досягається заміною. Спадкові та віртуальні функції використовуються під час поліморфізму виконання.
Наприклад ,Якщо клас має метод Void Add (), поліморфізм досягається перевантаженням методу, тобто void Add (int a, int b), void Add (int add) - це всі перевантажені методи.
Q # 13) Як реалізовано обробку винятків у C #?
Відповідь: Обробка винятків здійснюється за допомогою чотирьох ключових слів у C #:
- спробуй : Містить блок коду, для якого буде перевірятися виняток.
- улов : Це програма, яка ловить виняток за допомогою обробника винятків.
- нарешті : Це блок коду, написаний для виконання, незалежно від того, вловлено виняток чи ні.
- Кинути : Видає виняток, коли виникає проблема.
Q # 14) Що таке класи вводу-виводу C #? Які загальновживані класи вводу-виводу?
Відповідь: C # має простір імен System.IO, що складається з класів, які використовуються для виконання різних операцій з файлами, таких як створення, видалення, відкриття, закриття тощо.
Деякі загальновживані класи вводу-виводу:
- Файл - Допомагає в маніпулюванні файлом.
- StreamWriter - Використовується для запису символів у потік.
- StreamReader - Використовується для читання символів у потоці.
- StringWriter - Використовується для читання буфера рядків.
- StringReader - Використовується для запису буфера рядків.
- Шлях - Використовується для виконання операцій, пов'язаних з інформацією про шлях.
Q # 15) Що таке клас StreamReader / StreamWriter?
Відповідь: StreamReader та StreamWriter - це класи простору імен System.IO. Вони використовуються, коли ми хочемо читати або писати charact90, дані на основі Reader, відповідно.
Деякі учасники StreamReader: Закрити (), Прочитати (), Прочитати ().
Членами 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-------------------// } }
Q # 16) Що таке деструктор в C #?
Відповідь: Деструктор використовується для очищення пам'яті та звільнення ресурсів. Але в C # це робить збирач сміття самостійно. System.GC.Collect () викликається внутрішньо для очищення. Але іноді може знадобитися впровадити деструктори вручну.
Наприклад:
~Car() { Console.writeline(“….”); }
Q # 17) Що таке абстрактний клас?
Відповідь: Абстрактний клас - це клас, який позначається абстрактним ключовим словом і може використовуватися лише як базовий клас. Цей клас завжди повинен передаватися у спадок. Екземпляр самого класу створити неможливо. Якщо ми не хочемо, щоб будь-яка програма створювала об’єкт класу, тоді такі класи можна зробити абстрактними.
Будь-який метод в абстрактному класі не має реалізацій у тому самому класі. Але вони повинні бути впроваджені в дитячому класі.
Наприклад:
abstract class AB1 { Public void Add(); } Class childClass : AB1 { childClass cs = new childClass (); int Sum = cs.Add(); }
Всі методи в абстрактному класі є неявно віртуальними методами. Отже, віртуальне ключове слово не повинно використовуватися з будь-якими методами в абстрактному класі.
Q # 18) Що таке бокс та розпакування?
Відповідь: Перетворення типу значення на еталонний тип називається Boxing.
Наприклад:
int Значення1 - = 10;
// ———— Бокс —————— //
об'єкт boxedValue = Значення1;
Викликається явне перетворення того самого посилального типу (створеного боксом) у тип значення Розпакування .
Наприклад:
// ———— Unboxing —————— //
int UnBoxing = int (boxedValue);
що використовувати замість ccleaner
Q # 19) Яка різниця між Продовжувати та Розбивати заяву?
Відповідь: Оператор Break розриває цикл. Це робить управління програмою для виходу з циклу. Оператор 'Продовжити' робить управління програмою для виходу лише з поточної ітерації. Це не розриває петлю.
Q # 20) У чому різниця між блоком нарешті та завершити?
Відповідь: нарешті блок викликається після виконання блоку try and catch. Він використовується для обробки винятків. Незалежно від того, зловлено виняток чи ні, цей блок коду буде виконаний. Зазвичай цей блок матиме код очищення.
метод finalize викликається безпосередньо перед збиранням сміття. Застосовується для очищення некерованого коду. Він автоматично викликається, коли даний екземпляр не викликається згодом.
Масиви та рядки
Q # 21) Що таке масив? Наведіть синтаксис для одно- та багатовимірного масиву?
Відповідь: Масив використовується для зберігання кількох змінних одного типу. Це сукупність змінних, що зберігаються у сусідній пам'яті.
Наприклад:
подвійні числа = новий подвійний (10);
int () оцінка = нова int (4) {25,24,23,25};
Одновимірний масив - це лінійний масив, де змінні зберігаються в одному рядку. Вгорі приклад є одновимірним масивом.
Масиви можуть мати більше одного виміру. Багатовимірні масиви також називають прямокутними масивами.
Наприклад , int (,) numbers = new int (3,2) {{1,2}, {2,3}, {3,4}};
Q # 22) Що таке зубчастий масив?
Відповідь: Нерівний масив - це масив, елементами якого є масиви. Він також називається масивом масивів. Це може бути як один, так і кілька вимірів.
int () jaggedArray = new int (4) ();
Q # 23) Назвіть деякі властивості Array.
Відповідь: Властивості масиву включають:
- Довжина: Отримує загальну кількість елементів у масиві.
- Розмір: Показує, чи є масив фіксованим за розміром чи ні.
- IsReadOnly : Показує, чи є масив лише для читання чи ні.
Q # 24) Що таке клас масиву?
Відповідь: Клас Array є базовим класом для всіх масивів. Він надає безліч властивостей і методів. Він присутній у системі простору імен.
Q # 25) Що таке рядок? Які властивості має клас String?
Відповідь: Рядок - це колекція об'єктів символів. Ми також можемо оголосити рядкові змінні в c #.
рядок ім'я = “Питання C #”;
Клас рядків у C # представляє рядок. Властивості класу рядків:
- Символи отримати об'єкт Char у поточному рядку.
- Довжина отримує кількість об'єктів у поточному рядку.
Q # 26) Що таке послідовність втечі? Назвіть кілька послідовностей екранування в рядку C #.
Відповідь: Послідовність втечі позначається зворотною рискою рискою (). Зворотна коса риса вказує на те, що символ, який слідує за ним, слід тлумачити буквально або це спеціальний символ. Послідовність втечі розглядається як один символ.
Рядові послідовності екранування такі:
- n - символ нового рядка
- b - Backspace
- \ - зворотний слеш
- ’- Одинарна котирування
- ’’ - Подвійна цитата
Q # 27) Що таке регулярні вирази? Шукати рядок за допомогою регулярних виразів?
Відповідь: Регулярний вираз - це шаблон, який відповідає набору вводу. Шаблон може складатися з операторів, конструкцій або символьних літералів. Regex використовується для синтаксичного розбору та заміни рядка символів.
Наприклад:
* відповідає попередньому символу нуль або більше разів. Отже, регулярний вираз a * b еквівалентний b, ab, aab, aaab тощо.
Пошук рядка за допомогою регулярного виразу:
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, який повертає істину у випадку, якщо шаблон знаходиться у вхідних даних. Шаблон може бути будь-яким регулярним виразом, що представляє вхідні дані, яким ми хочемо відповідати.
Q # 28) Які основні рядкові операції? Поясніть.
Відповідь: Деякі з основних рядкових операцій:
- Об’єднати : Два рядки можна об’єднати або за допомогою System.String.Concat, або за допомогою оператора +.
- Змінити : Заміна (a, b) використовується для заміни рядка іншим рядком. Trim () використовується для обрізки рядка в кінці або на початку.
- Порівняйте : System.StringComparison () використовується для порівняння двох рядків, або з урахуванням регістру, або з урахуванням регістру. В основному береться два параметри, оригінальний рядок та рядок, з якими потрібно порівняти.
- Пошук : StartWith, методи EndsWith використовуються для пошуку певного рядка.
Q # 29) Що таке розбір? Як проаналізувати рядок часу та дати?
Відповідь: Синтаксичний розбір перетворює рядок в інший тип даних.
Наприклад:
текст рядка = “500”;
int num = int.Parse (текст);
500 - ціле число. Отже, метод Parse перетворює рядок 500 у власний базовий тип, тобто int.
Дотримуйтесь того самого методу, щоб перетворити рядок DateTime.
рядок dateTime = “1 січня 2018 року”;
DateTime parsedValue = DateTime.Parse (dateTime);
Розширені концепції
Q # 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, оскільки він має той самий підпис, що і підпис делегата.
Q # 31) Що таке події?
Відповідь: Події - це дії користувача, які генерують повідомлення програмі, на яку вона повинна відповісти. Дії користувача можуть бути рухами миші, натисканням клавіш тощо.
За програмою клас, який викликає подію, називається видавцем, а клас, який відповідає / приймає подію, називається передплатником. Подія повинна мати принаймні одного абонента, інакше ця подія ніколи не піднімається.
Делегати використовуються для оголошення подій.
Публічний делегат void PrintNumbers ();
Номер події Друк myEvent;
Q # 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. Делегат Action визначає метод, який можна викликати на аргументах, але не повертає результат
Публічний делегат void deathInfo ();
Публічна подія deathInfo deathDate;
// Заміна на Action //
Публічна акція Action deathDate;
Дія неявно відноситься до делегата.
-
- функції - Делегат Func визначає метод, який можна викликати в аргументах, і повертає результат.
Функція myDel це те саме, що делегувати bool myDel (int a, рядок b);
-
- Присудок - Визначає метод, який можна викликати на аргументах і завжди повертає bool.
Присудок myDel це те саме, що делегувати bool myDel (рядок);
Q # 34) Що означають багатоадресні представники?
Відповідь: Делегат, який вказує на більше ніж один метод, називається Делегатом багатоадресної передачі. Багатоадресна передача досягається за допомогою операторів + і + =.
Розглянемо приклад із запитання №32.
Є два абоненти для deathEvent, GetPatInfo , і GetDeathDetails . І отже, ми використовували оператор + =. Це означає, що коли myDel викликається, дзвонять абоненти. Делегати будуть викликані в тому порядку, в якому вони будуть додані.
Q # 35) Поясніть видавцям та передплатникам у подіях.
Відповідь: Publisher - це клас, відповідальний за публікацію повідомлень різних типів інших класів. Повідомлення - це не що інше, як подія, про яку йшлося у вищезазначених питаннях.
Від Приклад у запитанні №32, Class Patient - це клас Publisher. Це генерує подію deathEvent , яку отримують інші класи.
Абоненти фіксують повідомлення того типу, який їх цікавить. Знову ж таки, з Приклад з Q # 32, Class Insurance та Bank є абонентами. Їх цікавить подія deathEvent типу порожнеча .
Q # 36) Що таке синхронні та асинхронні операції?
Відповідь: Синхронізація - це спосіб створення захищеного від потоку коду, коли лише один потік може отримати доступ до ресурсу в даний момент часу. Асинхронний виклик чекає завершення методу, перш ніж продовжувати потік програми.
Синхронне програмування погано впливає на користувальницькі інтерфейси, коли користувач намагається виконувати трудомісткі операції, оскільки буде використано лише один потік. При асинхронній операції виклик методу негайно повернеться, щоб програма могла виконувати інші операції, поки викликаний метод завершує свою роботу в певних ситуаціях.
У C # ключові слова Async та Await використовуються для досягнення асинхронного програмування. Подивіться на Q # 43, щоб отримати докладнішу інформацію про синхронне програмування.
Q # 37) Що таке відображення в C #?
Відповідь: Відображення - це здатність коду отримувати доступ до метаданих збірки під час виконання. Програма розмірковує про себе і використовує метадані, щоб інформувати користувача або змінювати його поведінку. Метадані відносяться до інформації про об'єкти, методи.
Простір імен System.Reflection містить методи та класи, які керують інформацією всіх завантажених типів та методів. В основному використовується для додатків Windows, Наприклад , щоб переглянути властивості кнопки у формі windows.
Об'єкт MemberInfo відображення класу використовується для виявлення атрибутів, пов'язаних з класом.
Відображення реалізується у два етапи, спочатку ми отримуємо тип об’єкта, а потім використовуємо тип для ідентифікації таких членів, як методи та властивості.
Щоб отримати тип класу, ми можемо просто використовувати,
Введіть mytype = myClass.GetType ();
Коли у нас є тип класу, можна легко отримати доступ до іншої інформації про клас.
Інформація про System.Reflection.MemberInfo = mytype.GetMethod (“AddNumbers”);
Наведений вище вислів намагається знайти метод з ім'ям AddNumbers у класі мій клас .
Q # 38) Що таке загальний клас?
Відповідь: Загальний або загальний клас використовується для створення класів або об'єктів, які не мають певного типу даних. Тип даних може бути призначений під час виконання, тобто, коли він використовується в програмі.
Наприклад:
Отже, з наведеного коду ми бачимо 2 методи порівняння спочатку для порівняння рядка та int.
У разі порівняння параметрів іншого типу даних, замість того, щоб створювати багато перевантажених методів, ми можемо створити загальний клас і передати замінний тип даних, тобто Т. Отже, T діє як тип даних, поки він не використовується спеціально в методі Main () .
Q # 39) Поясніть отримання та встановлення властивостей Accessor?
Відповідь: Get і Set називаються Accessors. Вони використовуються Properties. Властивість забезпечує механізм зчитування та запису значення приватного поля. Для доступу до цього приватного поля використовуються ці аксесуари.
Отримати властивість використовується для повернення вартості властивості
Доступ Set Set використовується для встановлення значення.
Використання get і set наведено нижче:
Q # 40) Що таке нитка? Що таке багатопоточність?
Відповідь: Потік - це набір інструкцій, які можна виконати, що дозволить нашій програмі виконувати одночасну обробку. Одночасна обробка допомагає нам робити кілька операцій одночасно. За замовчуванням C # має лише один потік. Але інші потоки можуть бути створені для виконання коду паралельно вихідному потоку.
Нитка має життєвий цикл. Він починається кожного разу, коли створюється клас потоку, і завершується після виконання. Система - це простір імен, який потрібно включити для створення потоків та використання його членів.
Потоки створюються розширенням класу потоків. Почати () метод використовується для початку виконання потоку.
//CallThread is the target method// ThreadStart methodThread = new ThreadStart(CallThread); Thread childThread = new Thread(methodThread); childThread.Start();
C # може виконувати одночасно більше одного завдання. Це робиться шляхом обробки різних процесів різними потоками. Це називається MultiThreading.
Існує кілька методів потоків, які використовуються для обробки багатопотокових операцій:
Почати, спати, перервати, призупинити, відновити та приєднатися.
Більшість із цих методів є зрозумілими.
Q # 41) Назвіть деякі властивості класу Thread.
Відповідь: Кілька властивостей класу потоків:
- Живий - містить значення True, коли потік активний.
- Ім'я - Може повернути назву потоку. Крім того, можна встановити ім'я для потоку.
- Пріоритет - повертає пріоритетне значення завдання, встановленого операційною системою.
- IsBackground - отримує або встановлює значення, яке вказує, чи повинен потік бути фоновим процесом або переднім планом.
- ThreadState - описує стан потоку.
Q # 42) Які різні стани нитки?
Відповідь: Різними станами нитки є:
- Не розпочато - Нитка створена.
- Біг - Потік починає виконання.
- WaitSleepJoin - Виклики потоку сплять, дзвінки очікують на інший об'єкт, а дзвінки приєднуються до іншого потоку.
- Призупинено - Потік призупинено.
- Перервано - Нитка мертва, але не змінена на стан зупинена.
- Зупинився - Нитка зупинилася.
Q # 43) Що таке Async та Await?
Відповідь: Ключові слова Async та Await використовуються для створення асинхронних методів у C.
інструменти збору вимог, що використовуються бізнес-аналітиками
Асинхронне програмування означає, що процес працює незалежно від основних та інших процесів.
Використання Async та Await показано, як показано нижче:
- Ключове слово Async використовується для оголошення методу.
- Відлік - це завдання типу int, яке викликає метод CalculateCount ().
- Calculatecount () починає виконання і щось обчислює.
- Незалежна робота виконується над моїм потоком, а потім досягається оператор очікування підрахунку.
- Якщо Calculatecount не закінчено, myMethod повернеться до методу виклику, отже основний потік не заблокується.
- Якщо Обчислити кількість вже закінчено, тоді ми маємо доступний результат, коли елемент керування досягне очікування. Отже, наступний крок продовжиться в тій самій темі. Однак ситуація у вищезазначеному випадку не стосується затримки в 1 секунду.
Q # 44) Що таке глухий кут?
Відповідь: Тупикова ситуація - це ситуація, коли процес не може завершити своє виконання, оскільки два або більше процесів чекають завершення один одного. Зазвичай це відбувається при багатопоточності.
Тут спільний ресурс утримується процесом, а інший процес чекає, поки його випустить перший процес, а потік, що містить заблокований елемент, чекає завершення іншого процесу.
Розглянемо нижченаведений приклад:
- Виконуйте завдання, доступні objB, і чекаєте 1 секунду.
- Тим часом PerformtaskB намагається отримати доступ до ObjA.
- Через 1 секунду PeformtaskA намагається отримати доступ до ObjA, який заблокований PerformtaskB.
- PerformtaskB намагається отримати доступ до ObjB, який заблокований PerformtaskA.
Це створює глухий кут.
Q # 45) Поясніть L ок , Монітори , і Мутекс Об'єкт у різьбі.
Відповідь: Ключове слово 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) Що таке об’єднання потоків?
Роки: Пул потоків - це сукупність потоків. Ці потоки можна використовувати для виконання завдань, не порушуючи основний потік. Як тільки потік виконає завдання, потік повертається до пулу.
Простір імен System.Threading.ThreadPool має класи, які керують потоками в пулі та його операціями.
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SomeTask));
Вищевказаний рядок ставить завдання в чергу. Методи SomeTask повинні мати параметр типу Object.
Q # 48) Що таке серіалізація?
Відповідь: Серіалізація - це процес перетворення коду в його двійковий формат. Після перетворення в байти його можна легко зберегти та записати на диск або будь-які подібні пристрої зберігання. Серіалізації корисні в основному, коли ми не хочемо втратити початкову форму коду, і його можна отримати будь-коли в майбутньому.
Будь-який клас, який позначений атрибутом (Серіалізується), буде перетворений у свою двійкову форму.
Зворотний процес повернення коду C # із двійкової форми називається десериалізацією.
Для серіалізації об’єкта нам потрібен серіалізований об’єкт, потік, який може містити серіалізований об’єкт та простір імен System.Runtime.Serialization може містити класи для серіалізації.
Q # 49) Які існують типи серіалізації?
Відповідь: Різні типи серіалізації:
- Серіалізація XML - Він серіалізує всі загальнодоступні властивості документа XML. Оскільки дані у форматі XML, їх можна легко читати та обробляти у різних форматах. Класи знаходяться в System.sml.Serialization.
- МИЛО - Класи знаходяться в System.Runtime.Serialization. Подібно до XML, але створює повний конверт, сумісний із SOAP, який може використовувати будь-яка система, яка розуміє SOAP.
- Бінарна серіалізація - Дозволяє будь-який код перетворюватись у свою двійкову форму. Може здійснювати серіалізацію та відновлювати державне та непублічне майно. Це швидше і займає менше місця.
Q # 50) Що таке файл XSD?
Відповідь: Файл XSD означає «Визначення схеми XML». Це дає структуру для XML-файлу. Це означає, що він вирішує елементи, які повинен мати XML, і в якому порядку та які властивості повинні бути присутніми. Без файлу XSD, пов'язаного з XML, XML може мати будь-які теги, будь-які атрибути та будь-які елементи.
Засіб Xsd.exe перетворює файли у формат XSD. Під час серіалізації коду C # класи перетворюються у формат, сумісний з XSD, за допомогою xsd.exe.
Висновок
C # швидко зростає з кожним днем, і він відіграє важливу роль у галузі тестування програмного забезпечення.
Я впевнений, що ця стаття значно полегшить вам підготовку до співбесіди та дасть вам значну кількість знань з більшості тем на C #.
Сподіваюся, ви будете готові впевнено зіткнутися з будь-яким інтерв'ю на C # !!
Рекомендована література
- Запитання та відповіді на інтерв’ю
- Запитання та відповіді на інтерв’ю для тестування ETL
- 50 найкращих запитань та відповідей на інтерв’ю CCNA
- Найпопулярніші 51 запитання та відповіді на інтерв’ю Bootstrap
- Топ 20+ запитань та відповідей на інтерв’ю .NET
- Найкращі запитання та відповіді на співбесіду з 50+ базами даних
- Деякі хитрі ручні тестування Питання та відповіді
- 25 найкращих запитань та відповідей на інтерв’ю для спритного тестування