Obsah[Skryť][Šou]
- 1. Čo je to vlastne C#?
- 2. Čo odlišuje C# od C?
- 3. Čo je to vlastne trieda?
- 4. Čo je to vlastne predmet?
- 5. Aký je rozdiel medzi pojmami statický, verejný a neplatný?
- 6. Definujte konštruktory.
- 7. Čo je C# v garbage collection?
- 8. Čo presne znamená štruktúra v C#?
- 9. Ako sa skompiluje kód C#?
- 10. Jasne opíšte rôzne triedy C#.
- 11. Čo presne sú Jagged Arrays?
- 12. Aký je rozdiel medzi parametrami out a ref?
- 13. Čo je deštruktor v C#?
- 14. Čo je indexer v C#?
- 15. Aký je rozdiel medzi spravovaným a nespravovaným kódom?
- 16. Opíšte serializáciu.
- 17. Ako sa v C# líšia polia a vlastnosti?
- 18. Ako môžete podrobne opísať používanie príkazov v C#?
- 19. Ako by ste implementovali viacero rozhraní s rovnakým názvom metódy v rovnakej triede?
- 20. Aký je v C# rozdiel medzi Task a Thread?
- 21. Čo je to funkcia finalize v C#?
- 22. Rozlišujte medzi finalizáciou blokov a finalizáciou.
- 23. Podrobne opíšte metódu likvidácie v C#.
- 24. Čo je preťaženie metódy C#? Objasniť.
- 25. Aký je rozdiel medzi len na čítanie a konštantami?
- 26. Čo je používateľská kontrola a vlastná kontrola?
- 27. Čo je to multicast delegát v C#?
- 28. Čo presne je združovanie objektov v C#?
- 29. Čo presne sú generiká v C#.NET?
- 30. Je možné prepísať súkromnú virtuálnu metódu?
- 31. Rozdiel medzi preťažením metódy a prepisovaním metódy v C#?
- 32. Aký je v C# rozdiel medzi String a StringBuilder?
- 33. Čo sú vlastne delegáti?
- 34. Kedy by ste mali používať multithreading v C# a kedy by ste sa mu mali vyhnúť?
- 35. Čo je to multicast delegát v C#?
- 36. Aký je v C# rozdiel medzi neskorou väzbou a skorou väzbou?
- 37. Rozdiel medzi Directcast a Ctype?
- 38. Ako sa používa HashSet v C#?
- 39. Vysvetlite združovanie vlákien v jazyku C#.
- 40. Aký je rozdiel medzi kľúčovými slovami Const a ReadOnly v C#?
- 41. Aké podrobnosti o súbore C# XSD môžete poskytnúť?
- 42. Čo pre vás znamenajú vlastnosti Get and Set Accessor?
- 43. Čo presne je vkladanie závislostí v C#?
- záver
C# (predtým známy ako C sharp) je objektovo orientovaný programovací jazyk, ktorý vývojári často používajú na vykonávanie viacerých činností a dosahovanie viacerých cieľov.
Objektovo orientované programovacie jazyky, ako napríklad C++, Python a Java, prichádzajú v rôznych variantoch. Tieto programovacie jazyky sú navrhnuté tak, aby fungovali v určitom rámci. Podobne je C# vytvorený a vyvinutý pre špecifický rámec, konkrétne NET.
Rámec .NET vytvoril Microsoft. Poskytuje rozsiahlu platformu pre vývoj aplikácií, deklarácií, aplikačných inštrukcií atď. C# možno použiť na vývoj webu, hry, mobilné aplikácie, Windows aplikácie a ďalšie podobné projekty.
Vďaka takýmto výhodám sa používanie C# rozšírilo a potreba špecialistov, ktorí ho dokážu presne využiť, sa zdvojnásobila. Pretože C# je veľmi populárny programovací jazyk, na ňom zakladá svoje produkty množstvo veľkých i malých firiem.
Takže precvičte si základné a pokročilé otázky v C#, aby ste dosiahli úspech v rozhovoroch.
1. Čo je to vlastne C#?
Microsoft C# je moderný, univerzálny, objektovo orientované programovanie Jazyk. C# je určený pre Common Language Infrastructure (CLI), ktorý obsahuje spustiteľný kód a runtime prostredie, ktoré umožňuje použitie mnohých jazykov na vysokej úrovni na rôznych počítačových systémoch a architektúrach.
2. Čo odlišuje C# od C?
C je zvyčajne známy ako procedurálny jazyk, zatiaľ čo C# je viac objektovo orientovaný. Hlavným rozdielom je, že C# umožňuje automatizovaný zber odpadu prostredníctvom Common Language Runtime (CLR), zatiaľ čo C nie. C# vyžaduje na spustenie .NET framework, zatiaľ čo C je platformovo nezávislý jazyk.
3. Čo je to vlastne trieda?
Trieda slúži ako šablóna pre budovanie objektov. Spolu s technikami má atribúty. Z jednej triedy môžeme vytvoriť niekoľko inštancií objektu.
4. Čo je to vlastne predmet?
Inštancia triedy známa ako objekt je spôsob, akým pristupujeme k funkciám triedy. Na vytvorenie objektu môžeme použiť kľúčové slovo „new“. Ukladajú sa funkcie, dátové členy a správanie triedy, ktorá vytvára objekt v pamäti.
5. Aký je rozdiel medzi pojmami statický, verejný a neplatný?
Kdekoľvek v programe je možné pristupovať k verejne definovaným premenným. K statickým premenným je možné pristupovať globálne bez požiadavky na vytvorenie inštancie triedy. V C# sa na označenie návratového typu metódy používa modifikátor typu s názvom Void.
6. Definujte konštruktory.
Konštruktor je členská funkcia špecifická pre triedu. Keď sa vytvorí objekt, automaticky sa zavolá konštruktor. Trieda vytvára všetky hodnoty údajových členov tak, ako je inicializovaná.
7. Čo je C# v garbage collection?
Proces čistenia pamäte, ktorá bola obsadená nežiaducimi položkami, je známy ako garbage collection. Určité množstvo pamäte sa automaticky priradí objektu triedy, keď sa vytvorí v pamäti haldy. Teraz, keď ste dokončili prácu na položke, pamäťové miesto, ktoré predtým zaberala, je zbytočné. Je potrebné uvoľniť pamäť.
8. Čo presne znamená štruktúra v C#?
V C# je štruktúra dátový typ, ktorý sa skladá z mnohých dátových typov, ako sú metódy, polia, konštruktory, konštanty, vlastnosti, indexátory, operátory a dokonca aj iné štruktúry. Štruktúra pomáha pri konsolidácii mnohých druhov údajov do jedného celku. Týmto spôsobom sú analogické kurzom. Štruktúry sú typy hodnôt, zatiaľ čo triedy sú referenčné typy.
9. Ako sa skompiluje kód C#?
Keď sa vytvorí projekt, zdrojový kód C# sa skompiluje do jazyka Intermediate Language (IL). IL je súbor inštrukcií, ktoré generujú strojový kód na vykonanie na strojovom procesore. Kód je odoslaný z preprocesora do kompilátora, potom do assembleru a nakoniec do linkera v štyroch fázach.
10. Jasne opíšte rôzne triedy C#.
- Static: Je to druh triedy, ktorá nemôže byť vytvorená, preto nemôžeme použiť kľúčové slovo new na vytvorenie objektu, ale môžeme volať členov triedy priamo pomocou ich názvu triedy.
- Abstrakt: Ak chcete definovať abstraktné triedy, použite kľúčové slovo abstrakt. Pre abstraktné triedy nemožno vytvárať žiadne objekty. Ak ho chcete použiť, musí byť zdedený v podtriede. V rámci abstraktnej triedy sú povolené jednoduché definície abstraktných a neabstraktných metód.
- Čiastočné: Táto trieda vám umožňuje rozdeliť vaše vlastnosti, metódy a udalosti do niekoľkých zdrojových súborov, ktoré sa následne kombinujú do jednej triedy v čase zostavovania.
- Zapečatená: Zapečatená trieda nemôže byť dedená z inej triedy a má obmedzené vlastnosti. Modifikátory prístupu nemožno pridať do zapečatenej triedy.
11. Čo presne sú Jagged Arrays?
Pole s prvkami poľa sa označuje ako zubaté pole. Prvky Jagged Arrays môžu mať mnoho tvarov a veľkostí.
12. Aký je rozdiel medzi parametrami out a ref?
Keď dávate argument ako referenciu, parameter musí byť inicializovaný pred odovzdaním do metódy. Na druhej strane, parameter out nemusí byť inicializovaný pred dodaním do metódy.
13. Čo je deštruktor v C#?
Deštruktor je typ metódy v C#, ktorá je súčasťou triedy. Primárnou funkciou deštruktora je vymazať inštancie triedy, keď už nie sú potrebné, aby sa uvoľnila pamäť. Deštruktory sú niekedy známe ako finalizátory.
14. Čo je indexer v C#?
Indexery sa v C# používajú na nájdenie inštancií triedy alebo štruktúry. K indexovaným hodnotám je teda možné pristupovať podobne ako k poľu, ale bez toho, aby ste museli explicitne deklarovať typ alebo člen inštancie.
15. Aký je rozdiel medzi spravovaným a nespravovaným kódom?
Spravovaný kód vám umožňuje spúšťať kód v rámci .NET v riadenom prostredí CLR runtime.
Riadený kód sa vykonáva v riadenom prostredí runtime a nie v operačnom systéme. Poskytuje rôzne služby, ako je zberač odpadu, spracovanie výnimiek atď.
Nespravovaný kód je kód, ktorý sa nevykonáva na CLR a funguje mimo rámca .NET. Neposkytujú jazykové služby na vysokej úrovni, a preto fungujú bez nich. C++ je jedným z takýchto príkladov.
16. Opíšte serializáciu.
Z položky sa musí vytvoriť prúd bajtov, aby ju bolo možné preniesť cez sieť. Serializácia je akt transformácie položky na prúd bajtov. Aby bolo možné položku serializovať, musí byť implementované rozhranie Serialize. Opak konštrukcie objektu z prúdu bajtov sa nazýva de-serializácia.
17. Ako sa v C# líšia polia a vlastnosti?
Pole je člen triedy alebo objekt akéhokoľvek druhu, ktorý slúži ako miesto na ukladanie údajov, zatiaľ čo vlastnosť je člen triedy, ktorý ponúka metódu na čítanie, zápis a výpočet hodnoty súkromného poľa.
18. Ako môžete podrobne opísať používanie príkazov v C#?
Príkaz using sa používa na obmedzenie používania jedného alebo viacerých zdrojov v rámci aplikácie. Zdroje sa spotrebúvajú a uvoľňujú neustále.
Hlavnou úlohou tohto príkazu je spravovať nechcené zdroje a automaticky ich uvoľňovať. Po vytvorení objektu, ktorý využíva zdroj, sa uistite, že je zavolaná funkcia disponovania objektu na uvoľnenie zdrojov požadovaných týmto objektom; tu je použitie príkazov užitočné.
19. Ako by ste implementovali viacero rozhraní s rovnakým názvom metódy v rovnakej triede?
Ak chcete implementovať niekoľko rozhraní s rovnakým názvom metódy, vyhnite sa ich implementácii v rámci tela funkcie. Namiesto toho by ste zadali názov rozhrania priamo do tela metódy. Kompilátor rozpozná, na ktoré metódy rozhrania sa odkazuje, a vyrieši problém.
20. Aký je v C# rozdiel medzi Task a Thread?
Vlákno je skutočné vlákno operačného systému s vlastným zásobníkom a prostriedkami jadra. Vlákno poskytuje najväčšiu kontrolu. Vlákno vám umožňuje prerušiť (), pozastaviť () alebo obnoviť (). Je možné sledovať stav vlákna alebo nastaviť jeho atribúty, ako je veľkosť zásobníka, stav bytu a kultúra. CLR uchováva skupinu vlákien zabalených do oblasti ThreadPool.
Paralelná knižnica úloh má triedu s názvom Úloha. Na rozdiel od ThreadPool, úloha nemá svoje vlastné vlákno operačného systému. Úlohy vykonáva TaskScheduler, hoci predvolený plánovač vykonáva ThreadPool. Je možné byť informovaný o dokončení úlohy a získať výsledok.
21. Čo je to funkcia finalize v C#?
Trieda objektu, ktorá sa používa na akcie čistenia, definuje funkciu finalize (). Keď sa odkaz na objekt nepoužíva dlhší čas, zberač odpadu často zavolá túto funkciu.
Zberač odpadu automaticky uvoľňuje kontrolované zdroje, ale ak chcete uvoľniť nepotrebné zdroje, ako sú popisovače súborov, dátové pripojenia atď., musíte explicitne implementovať funkciu finalizácie.
22. Rozlišujte medzi finalizáciou blokov a finalizáciou.
Dokončený blok sa volá po dokončení blokov pokusu a chytenia, pretože je potrebný na spracovanie výnimiek. Blok kódu sa vykoná bez ohľadu na to, či bola výnimka zachytená. Kód bloku je vo všeobecnosti čistejší.
Metóda finalizácie sa vyvolá tesne pred zberom odpadu. Hlavnou úlohou dokončenej metódy je vyčistiť nespravovaný kód, ktorý sa automaticky spustí vždy, keď inštancia nie je znovu vyvolaná.
23. Podrobne opíšte metódu likvidácie v C#.
Funkcia disposof() uvoľňuje nevyužité prostriedky objektu. Nepoužité zdroje, ako sú súbory, dátové pripojenia atď. Táto funkcia je špecifikovaná v rozhraní IDisposable, ktoré je implementované triedou deklarovaním tela rozhrania IDisposable.
Funkcia disponovať nie je volaná automaticky; programátor ho musí implementovať manuálne, aby sa efektívne využili zdroje.
24. Čo je preťaženie metódy C#? Objasniť.
Preťažovanie metód je typickým prístupom v C#, ktorý sa používa na vytvorenie množstva metód s rovnakým názvom a špecifikovanými podpismi. Tento postup sa opakuje s rovnakou triedou.
Keď je procedúra preťaženia metódy dokončená, kompilátor začne operácie na volanie špecifikovaných akcií na základe preťaženia metódy.
25. Aký je rozdiel medzi len na čítanie a konštantami?
Konštantné premenné sú deklarované a inicializované počas kompilácie. Potom už túto hodnotu nie je možné zmeniť. Na druhej strane, iba na čítanie sa používa, keď bola pridelená hodnota v čase spustenia.
26. Čo je používateľská kontrola a vlastná kontrola?
Kompilovaný kód sa používa na vývoj vlastných ovládacích prvkov. Tieto môžu byť súčasťou súpravy nástrojov a ľahko sa používajú. Potiahnutím týchto ovládacích prvkov ich môžu vývojári zahrnúť do svojich webových formulárov.
Používateľské ovládacie prvky a súbory obsahujúce ASP sú dosť podobné. Sú tiež jednoduché na výrobu. Na druhej strane používateľské ovládacie prvky nemožno pridať do sady nástrojov. Tiež sa z neho nedajú vytiahnuť a spadnúť.
27. Čo je to multicast delegát v C#?
Delegát multicast uchováva odkazy alebo adresy na niekoľko funkcií súčasne. Keď zavoláme delegáta multicastu, vyvolá aj všetky ostatné funkcie, na ktoré odkazuje. Ak chcete volať niekoľko metód, použite celý podpis metódy, rovnako ako delegát. Ako príklad:
28. Čo presne je združovanie objektov v C#?
Združovanie objektov je technika navrhovania v softvéri, ktorá veci skôr recykluje, než aby ich znovu vytvárala. Dosahuje to ukladaním vybraných položiek do fondu a ich sprístupnením na použitie, keď si ich aplikácia vyžiada. Tento postup zlepšuje výkon znížením zbytočného generovania objektov.
29. Čo presne sú generiká v C#.NET?
Generiká sa používajú na vytváranie opakovane použiteľných tried kódu s cieľom znížiť redundanciu kódu, zlepšiť bezpečnosť typu a zvýšiť rýchlosť. Môžeme zostaviť triedy kolekcií s generikami.
V systéme by sa mal namiesto tried ako ArrayList použiť všeobecný menný priestor. Menný priestor pre kolekcie. Generiká podporujú používanie parametrizovaných typov.
30. Je možné prepísať súkromnú virtuálnu metódu?
Súkromnú virtuálnu metódu nemožno prepísať, pretože je súkromná pre triedu a nie je možné k nej pristupovať zvonku.
31. Rozdiel medzi preťažením metódy a prepisovaním metódy v C#?
Prepísanie metódy je proces zmeny základnej definície odvodenej triedy. Metódy odvodenej triedy sa nakoniec v dôsledku tejto stratégie správajú odlišne.
Na druhej strane preťaženie metódy možno opísať ako akt generovania mnohých metód s rovnakým názvom, ale odlišnými podpismi v rámci rovnakej triedy.
32. Aký je v C# rozdiel medzi String a StringBuilder?
Reťazový objekt je nemenný, čo znamená, že ho už po vytvorení nemožno zmeniť. Akýkoľvek pokus o zmenu objektu reťazca bude mať za následok vytvorenie nového objektu reťazca.
Objekt tvorcu reťazcov je na druhej strane tvárny a môže byť zmenený, ako to vývojár považuje za vhodné.
33. Čo sú vlastne delegáti?
V C++ sú delegáti v podstate to isté ako ukazovatele funkcií. Jediný rozdiel medzi nimi je, že delegáti sú typovo bezpeční, zatiaľ čo ukazovatele funkcií nie. Delegáti sú potrební, pretože umožňujú konštrukciu generických typovo bezpečných funkcií.
34. Kedy by ste mali používať multithreading v C# a kedy by ste sa mu mali vyhnúť?
Multithreading, často známy ako threading, je efektívny prístup na zvýšenie rýchlosti programu, v ktorom sa súčasne vykonáva množstvo aktivít. Umožňuje vykonávať rôzne vlákna nezávisle, namiesto čakania na dokončenie predchádzajúceho kroku. To má schopnosť zvýšiť tempo programu.
Keď je však niekoľko procesov programu prepojených, multithreading sa neodporúča. Napríklad, ak by krok B závisel od dokončenia kroku A ako prvého, multithreading by spôsobil problémy s výkonom a softvérové chyby. Threading sa stáva čoraz citlivejším, ako sa program vyvíja v komplexnosti.
35. Čo je to multicast delegát v C#?
Delegát multicast v C#, na rozdiel od základného delegáta, odkazuje na množstvo cieľových metód. Keď sa použije delegát multicast, volajú sa všetky funkcie, na ktoré delegát ukazuje. Sú implementované pomocou systémovej triedy MulticastDelegate.
36. Aký je v C# rozdiel medzi neskorou väzbou a skorou väzbou?
- Skorá väzba sa uskutoční v čase kompilácie, zatiaľ čo neskorá väzba sa uskutoční počas spustenia.
- Neskorá väzba je často pomalšia ako skorá väzba, pretože k nej dochádza za behu.
- Na rozdiel od neskorej väzby, ktorá používa objekt na riešenie volaní metód, skorá väzba rieši volania metód pomocou informácií o triede.
37. Rozdiel medzi Directcast a Ctype?
Druh objektu, ktorý vyžaduje, aby sa typ spustenia zhodoval so zadaným typom v DirectCast, sa skonvertuje pomocou DirectCast.
Keď je zadaná konverzia medzi výrazom a typom, použije sa Ctype.
38. Ako sa používa HashSet v C#?
V C# je HashSet neusporiadaná zbierka odlišných hodnôt. Vo všeobecnosti sa používa na zabránenie vkladania duplicitných prvkov do kolekcie a pri tejto úlohe funguje lepšie ako zoznam.
Na jeho implementáciu sa používa trieda HashSet, ktorá pochádza zo System.
39. Vysvetlite združovanie vlákien v jazyku C#.
V C# je fond vlákien kolekciou vlákien. Tieto vlákna sa používajú na vykonávanie úloh bez toho, aby zasahovali do funkčnosti primárneho vlákna. Vlákno v oblasti vlákien sa po dokončení behu vráti do oblasti vlákien.
Trieda System obsahuje triedy, ktoré spracovávajú vlákno v oblasti vlákien a jeho akcie. Navliekanie závitov. ThreadPool je menný priestor.
40. Aký je rozdiel medzi kľúčovými slovami Const a ReadOnly v C#?
- ReadOnly nemožno deklarovať v rámci metódy, zatiaľ čo Const áno.
- Const je konštanta v čase kompilácie, zatiaľ čo ReadOnly je konštanta behu.
- Hodnoty ReadOnly sa dajú zmeniť, ale hodnoty Const nie.
41. Aké podrobnosti o súbore C# XSD môžete poskytnúť?
XSD je skratka pre XML Schema Definition. Ak so súborom XML nie je spojený žiadny súbor XSD, môže mať akékoľvek atribúty, prvky a značky. Súbor XSD poskytuje rámec pre súbor XML, ktorý určuje, aké komponenty a atribúty by mali byť prítomné v súbore XML, ako aj ich poradie.
42. Čo pre vás znamenajú vlastnosti Get and Set Accessor?
V C# sa Get a Set nazývajú prístupové objekty, pretože sú vytvorené pomocou vlastností. Vlastnosť umožňuje čítanie a zápis hodnoty súkromného poľa. K takýmto súkromným poliam sa pristupuje cez prístupové objekty.
Zatiaľ čo vlastnosť Get sa používa na vrátenie hodnoty vlastnosti, vlastnosť Set sa používa na nastavenie hodnoty.
43. Čo presne je vkladanie závislostí v C#?
Dependency injection (DI) je návrhová technika v C#, ktorá sa používa na vytváranie voľne prepojených programov. Tento postup prenáša vytváranie a viazanie závislých objektov mimo triedy, na ktorú sa spoliehajú. Hlavným cieľom je, aby boli budúce úpravy kódu lepšie spravovateľné.
záver
C# je primárny programovací jazyk, ktorý sa používa vo všetkých programovacích jazykoch vyššej úrovne. C# vývojári sú veľmi žiadaní a môžu nájsť atraktívne kariérne vyhliadky v odvetviach, ako je front-end vývoj, back-end programovanie a vývoj aplikácií. A keďže to Microsoft podporuje, popularita C# bude len rásť.
Vyššie uvedené sú najdôležitejšie otázky na pohovor v C# pre skúsených profesionálov a začiatočníkov. Pozri Séria rozhovorov s Hashdorkom za pomoc s prípravou na pohovor.
Nechaj odpoveď