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