Obsah[Skrýt][Ukázat]
- 1. Co je to vlastně C#?
- 2. Co odlišuje C# od C?
- 3. Co je to vlastně třída?
- 4. Co je to vlastně předmět?
- 5. Jaký je rozdíl mezi pojmy statický, veřejný a neplatný?
- 6. Definujte konstruktory.
- 7. Co je C# v garbage collection?
- 8. Co přesně znamená struktura v C#?
- 9. Jak se zkompiluje kód C#?
- 10. Jasně popište různé třídy C#.
- 11. Co přesně jsou Jagged Arrays?
- 12. Jaký je rozdíl mezi parametry out a ref?
- 13. Co je v C# destruktor?
- 14. Co je to indexátor v C#?
- 15. Jaký je rozdíl mezi spravovaným a nespravovaným kódem?
- 16. Popište serializaci.
- 17. Jak se v C# liší pole a vlastnosti?
- 18. Jak můžete podrobně popsat používání příkazů v C#?
- 19. Jak byste implementovali mnoho rozhraní se stejným názvem metody ve stejné třídě?
- 20. Jaký je v C# rozdíl mezi Task a Thread?
- 21. Co je to funkce finalizace v C#?
- 22. Rozlišujte mezi finalizací bloků a finalizací.
- 23. Podrobně popište metodu likvidace v C#.
- 24. Co je to přetížení metody C#? Objasnit.
- 25. Jaký je rozdíl mezi pouze pro čtení a konstantami?
- 26. Co je uživatelská kontrola a vlastní kontrola?
- 27. Co je v C# delegát vícesměrového vysílání?
- 28. Co přesně je sdružování objektů v C#?
- 29. Co přesně jsou generika v C#.NET?
- 30. Je možné přepsat soukromou virtuální metodu?
- 31. Rozdíl mezi přetížením metody a přepsáním metody v C#?
- 32. Jaký je v C# rozdíl mezi String a StringBuilder?
- 33. Co jsou vlastně delegáti?
- 34. Kdy byste měli používat multithreading v C# a kdy byste se mu měli vyhnout?
- 35. Co je v C# delegát vícesměrového vysílání?
- 36. Jaký je v C# rozdíl mezi pozdní vazbou a ranou vazbou?
- 37. Rozdíl mezi Directcast a Ctype?
- 38. Jak se HashSet využívá v C#?
- 39. Vysvětlete prosím sdružování vláken v C#.
- 40. Jaký je rozdíl mezi klíčovými slovy Const a ReadOnly v C#?
- 41. Jaké podrobnosti o souboru C# XSD můžete poskytnout?
- 42. Co pro vás znamenají vlastnosti Get and Set Accessor?
- 43. Co přesně je vkládání závislostí v C#?
- Proč investovat do čističky vzduchu?
C# (dříve známý jako C sharp) je objektově orientovaný programovací jazyk, který vývojáři často používají k provádění několika činností a dosažení více cílů.
Objektově orientované programovací jazyky, jako je C++, Python a Java, přicházejí v různých variantách. Tyto programovací jazyky jsou navrženy tak, aby fungovaly v určitém rámci. Podobně je C# vytvořen a vyvinut pro konkrétní framework, konkrétně NET.
Framework .NET vytvořil Microsoft. Poskytuje rozsáhlou platformu pro vývoj aplikací, deklarací, aplikačních instrukcí a tak dále. C# lze použít pro vývoj webu, hraní her, mobilní aplikace, aplikace pro Windows a další podobné projekty.
Díky těmto výhodám se používání C# rozšířilo a potřeba specialistů, kteří jej dokážou přesně využít, se zdvojnásobila. Protože C# je tak populární programovací jazyk, na něm zakládá své produkty množství velkých i malých firem.
Procvičte si tedy základní a pokročilé otázky v C#, abyste byli v pohovorech nejlepší.
1. Co je to vlastně C#?
Microsoft C# je moderní, univerzální, objektově orientované programování Jazyk. C# je určeno pro Common Language Infrastructure (CLI), která obsahuje spustitelný kód a runtime prostředí, které umožňuje použití mnoha jazyků na vysoké úrovni na různých počítačových systémech a architekturách.
2. Co odlišuje C# od C?
C je obvykle známý jako procedurální jazyk, zatímco C# je více objektově orientovaný. Hlavní rozdíl je v tom, že C# umožňuje automatizované shromažďování odpadků prostřednictvím Common Language Runtime (CLR), zatímco C nikoli. C# vyžaduje ke spuštění .NET framework, zatímco C je platformově nezávislý jazyk.
3. Co je to vlastně třída?
Třída slouží jako šablona pro vytváření objektů. Spolu s technikami má atributy. Z jedné třídy můžeme vytvořit několik instancí objektu.
4. Co je to vlastně předmět?
Instance třídy známá jako objekt je způsob, jakým přistupujeme k funkcím třídy. Ke konstrukci objektu můžeme použít klíčové slovo „new“. Funkce, datové členy a chování třídy, která vytváří objekt v paměti, jsou uloženy.
5. Jaký je rozdíl mezi pojmy statický, veřejný a neplatný?
Kdekoli v programu lze přistupovat k veřejně definovaným proměnným. Ke statickým proměnným lze přistupovat globálně bez požadavku na vytvoření instance třídy. V C# se k označení návratového typu metody používá modifikátor typu zvaný Void.
6. Definujte konstruktory.
Konstruktor je členská funkce specifická pro třídu. Když se vytvoří objekt, konstruktor se zavolá automaticky. Třída vytváří všechny hodnoty datových členů při inicializaci.
7. Co je C# v garbage collection?
Proces čištění paměti, která byla obsazena nežádoucími položkami, se nazývá garbage collection. Určité množství paměti je automaticky přiřazeno objektu třídy, když je vytvořen v paměti haldy. Nyní, když jste dokončili práci na předmětu, je místo v paměti, které dříve zabíral, promarněno. Je třeba uvolnit paměť.
8. Co přesně znamená struktura v C#?
V C# je struktura datovým typem, který se skládá z mnoha datových typů, jako jsou metody, pole, konstruktory, konstanty, vlastnosti, indexery, operátory a dokonce i další struktury. Struktura pomáhá při konsolidaci mnoha druhů dat do jednoho celku. Tímto způsobem jsou analogické s kurzy. Struktury jsou typy hodnot, zatímco třídy jsou referenční typy.
9. Jak se zkompiluje kód C#?
Když je vytvořen projekt, zdrojový kód C# je zkompilován do Intermediate Language (IL). IL je kolekce instrukcí, které generují strojový kód pro provedení na strojovém procesoru. Kód je odeslán z preprocesoru do kompilátoru, poté do assembleru a nakonec do linkeru ve čtyřech fázích.
10. Jasně popište různé třídy C#.
- Static: Je to druh třídy, která nemůže být konkretizována, proto nemůžeme použít klíčové slovo new k vytvoření objektu, ale můžeme volat členy třídy přímo pomocí jejich názvu třídy.
- Abstrakt: Chcete-li definovat abstraktní třídy, použijte klíčové slovo abstract. Pro abstraktní třídy nelze vytvářet žádné objekty. Pokud ji chcete používat, musí být zděděna v podtřídě. V rámci třídy Abstract jsou povoleny jednoduché definice abstraktních a neabstraktních metod.
- Částečná: Tato třída vám umožňuje oddělit vaše vlastnosti, metody a události do několika zdrojových souborů, které jsou následně v době sestavení sloučeny do jediné třídy.
- Zapečetěná: Zapečetěná třída nemůže být zděděna z jiné třídy a má omezené vlastnosti. Modifikátory přístupu nelze přidat do zapečetěné třídy.
11. Co přesně jsou Jagged Arrays?
Pole s prvky pole se označuje jako zubaté pole. Prvky Jagged Arrays mohou mít mnoho tvarů a velikostí.
12. Jaký je rozdíl mezi parametry out a ref?
Při zadávání argumentu jako ref musí být parametr před předáním metodě inicializován. Na druhou stranu parametr out nemusí být inicializován před dodáním do metody.
13. Co je v C# destruktor?
Destruktor je typ metody v C#, která je součástí třídy. Primární funkcí destruktoru je odstranit instance třídy, když již nejsou vyžadovány, aby se uvolnila paměť. Destruktory jsou někdy známé jako finalizéry.
14. Co je to indexátor v C#?
Indexery se v C# používají k nalezení instancí třídy nebo struktury. K indexovaným hodnotám lze tedy přistupovat podobně jako k poli, ale bez nutnosti explicitně deklarovat typ nebo člen instance.
15. Jaký je rozdíl mezi spravovaným a nespravovaným kódem?
Spravovaný kód vám umožňuje spouštět kód v rámci .NET ve spravovaném běhovém prostředí CLR.
Řízený kód se spouští ve spravovaném běhovém prostředí, nikoli v operačním systému. Poskytuje různé služby, jako je sběrač odpadků, zpracování výjimek a tak dále.
Nespravovaný kód je kód, který se nespouští na CLR a funguje mimo rámec .NET. Neposkytují jazykové služby na vysoké úrovni, a proto fungují bez nich. C++ je jedním takovým příkladem.
16. Popište serializaci.
Aby bylo možné položku přenést přes síť, musí být z položky vytvořen proud bajtů. Serializace je akt transformace položky na proud bajtů. Aby bylo možné položku serializovat, musí být implementováno rozhraní Serialize. Opakem konstrukce objektu z proudu bajtů se nazývá de-serializace.
17. Jak se v C# liší pole a vlastnosti?
Pole je člen třídy nebo objekt jakéhokoli druhu, který slouží jako místo pro ukládání dat, zatímco vlastnost je člen třídy, který nabízí metodu pro čtení, zápis a výpočet hodnoty soukromého pole.
18. Jak můžete podrobně popsat používání příkazů v C#?
Příkaz using se používá k omezení použití jednoho nebo více zdrojů v rámci aplikace. Zdroje jsou spotřebovávány a uvolňovány neustále.
Primárním úkolem tohoto příkazu je spravovat nechtěné zdroje a automaticky je uvolňovat. Jakmile je vytvořen objekt využívající prostředek, ujistěte se, že je zavolána funkce disponování objektu k uvolnění prostředků požadovaných daným objektem; zde je použití příkazů užitečné.
19. Jak byste implementovali mnoho rozhraní se stejným názvem metody ve stejné třídě?
Chcete-li implementovat několik rozhraní se stejným názvem metody, vyhněte se jejich implementaci v těle funkce. Místo toho byste uvedli název rozhraní přímo v těle metody. Kompilátor rozpozná, na které metody rozhraní se odkazuje, a vyřeší problém.
20. Jaký je v C# rozdíl mezi Task a Thread?
Vlákno je skutečné vlákno operačního systému s vlastním zásobníkem a prostředky jádra. Vlákno poskytuje největší kontrolu. Vlákno umožňuje přerušit (), pozastavit () nebo obnovit (). Lze sledovat stav vlákna nebo nastavit jeho atributy, jako je velikost zásobníku, stav bytu a kultura. CLR uchovává fond podprocesů obalený fondem podprocesů.
Paralelní knihovna úloh má třídu nazvanou Úkol. Na rozdíl od ThreadPool nemá Task vlastní vlákno operačního systému. Úlohy jsou prováděny TaskSchedulerem, i když výchozí plánovač spouští ThreadPool. Je možné být upozorněni na dokončení úkolu a získat výsledek.
21. Co je to funkce finalizace v C#?
Třída objektu, která se používá pro akce čištění, definuje funkci finalize (). Když se odkaz na objekt nepoužívá po delší dobu, bude garbage collector často volat tuto funkci.
Kolektor odpadu automaticky uvolňuje kontrolované prostředky, ale pokud chcete uvolnit nepotřebné prostředky, jako jsou popisovače souborů, datová připojení atd., musíte explicitně implementovat funkci finalizace.
22. Rozlišujte mezi finalizací bloků a finalizací.
Dokončený blok je volán poté, co byly dokončeny bloky try-and-catch, protože je potřeba pro zpracování výjimek. Blok kódu se provede bez ohledu na to, zda byla výjimka zachycena. Kód bloku je obecně čistší.
Metoda finalize je vyvolána těsně před uvolněním paměti. Hlavní odpovědností dokončené metody je vyčistit nespravovaný kód, který se automaticky spustí, kdykoli není instance znovu vyvolána.
23. Podrobně popište metodu likvidace v C#.
Funkce dispensof() uvolní nevyužité prostředky objektu. Nevyužité prostředky, jako jsou soubory, datová připojení a tak dále. Tato funkce je specifikována v rozhraní IDisposable, které je implementováno třídou deklarováním těla rozhraní IDisposable.
Funkce disponovat není volána automaticky; pro efektivní využití zdrojů jej musí programátor implementovat ručně.
24. Co je to přetížení metody C#? Objasnit.
Přetěžování metod je typický přístup v C#, který se používá ke konstrukci řady metod se stejným názvem a specifikovanými signaturami. Tento postup se opakuje se stejnou třídou.
Když je procedura přetížení metody dokončena, kompilátor zahájí operace pro volání specifikovaných akcí na základě přetížení metody.
25. Jaký je rozdíl mezi pouze pro čtení a konstantami?
Konstantní proměnné jsou deklarovány a inicializovány během kompilace. Poté již tuto hodnotu nelze změnit. Na druhou stranu, pouze pro čtení se používá, jakmile byla hodnota přidělena za běhu.
26. Co je uživatelská kontrola a vlastní kontrola?
Kompilovaný kód se používá k vývoji vlastních ovládacích prvků. Ty mohou být součástí sady nástrojů a snadno se používají. Přetažením těchto ovládacích prvků je mohou vývojáři zahrnout do svých webových formulářů.
Uživatelské ovládací prvky a soubory obsahující ASP jsou velmi podobné. Jsou také jednoduché na výrobu. Na druhou stranu uživatelské ovládací prvky nelze přidat do sady nástrojů. Také je nelze vytáhnout a upustit.
27. Co je v C# delegát vícesměrového vysílání?
Delegát vícesměrového vysílání udržuje odkazy nebo adresy na několik funkcí současně. Když zavoláme delegáta vícesměrového vysílání, vyvolá také všechny ostatní funkce, na které odkazuje. Chcete-li volat několik metod, použijte celý podpis metody, stejně jako delegát. Jako příklad:
28. Co přesně je sdružování objektů v C#?
Sdružování objektů je technika návrhu v softwaru, která věci spíše recykluje, než aby je znovu sestavovala. Dosahuje toho ukládáním vybraných položek do fondu a jejich zpřístupněním pro použití, když si je aplikace vyžádá. Tento postup zlepšuje výkon snížením zbytečného generování objektů.
29. Co přesně jsou generika v C#.NET?
Generika se používají k vytváření opakovaně použitelných tříd kódu, aby se snížila redundance kódu, zlepšila bezpečnost typu a zvýšila rychlost. Můžeme vytvořit třídy kolekce s generiky.
V systému by měl být místo tříd jako je ArrayList použit obecný jmenný prostor. Jmenný prostor pro sbírky. Použití parametrizovaných typů je podporováno generiky.
30. Je možné přepsat soukromou virtuální metodu?
Soukromou virtuální metodu nelze přepsat, protože je soukromá pro třídu a nelze k ní přistupovat zvenčí.
31. Rozdíl mezi přetížením metody a přepsáním metody v C#?
Přepsání metody je proces změny základní definice odvozené třídy. Metody odvozené třídy se nakonec v důsledku této strategie chovají odlišně.
Na druhou stranu přetížení metod lze popsat jako akt generování mnoha metod se stejným názvem, ale odlišnými podpisy pod stejnou třídou.
32. Jaký je v C# rozdíl mezi String a StringBuilder?
Řetězcový objekt je neměnný, což znamená, že jej nelze po vytvoření změnit. Jakýkoli pokus o změnu objektu typu string bude mít za následek vytvoření nového objektu typu string.
Objekt pro vytváření řetězců je na druhé straně tvárný a může být měněn, jak vývojář uzná za vhodné.
33. Co jsou vlastně delegáti?
V C++ jsou delegáti v zásadě stejní jako ukazatele funkcí. Jediný rozdíl mezi těmito dvěma je, že delegáti jsou typově bezpeční, zatímco ukazatele funkcí nikoli. Delegáti jsou nezbytní, protože umožňují konstrukci generických typově bezpečných funkcí.
34. Kdy byste měli používat multithreading v C# a kdy byste se mu měli vyhnout?
Vícevláknové zpracování, často známé jako vlákno, je efektivní přístup ke zvýšení rychlosti programu, ve kterém se souběžně provádí mnoho činností. Umožňuje nezávisle spouštět různá vlákna namísto čekání na dokončení předchozího kroku. To má schopnost zvýšit tempo programu.
Pokud je však několik procesů programu propojeno, vícevláknové zpracování se nedoporučuje. Pokud by například krok B závisel na dokončení kroku A jako první, vícevláknové zpracování by způsobilo problémy s výkonem a softwarové chyby. Řezání vláken je stále citlivější, jak se program vyvíjí ve složitosti.
35. Co je v C# delegát vícesměrového vysílání?
Delegát vícesměrového vysílání v C#, na rozdíl od základního delegáta, odkazuje na řadu cílových metod. Když je použit delegát vícesměrového vysílání, jsou volány všechny funkce, na které delegát ukazuje. Jsou implementovány pomocí systémové třídy MulticastDelegate.
36. Jaký je v C# rozdíl mezi pozdní vazbou a ranou vazbou?
- Časná vazba probíhá v době kompilace, zatímco pozdní vazba probíhá během běhu.
- Pozdní vazba je často pomalejší než časná vazba, protože k ní dochází za běhu.
- Na rozdíl od pozdní vazby, která používá objekt k vyřešení volání metod, časná vazba řeší volání metod pomocí informací o třídě.
37. Rozdíl mezi Directcast a Ctype?
Druh objektu, který vyžaduje, aby typ běhu odpovídal zadanému typu v DirectCast, je převeden pomocí DirectCast.
Když je zadán převod mezi výrazem a typem, použije se Ctype.
38. Jak se HashSet využívá v C#?
V C# je HashSet neuspořádanou sbírkou odlišných hodnot. Obecně se používá k zabránění vkládání duplicitních prvků do kolekce a v této úloze funguje lépe než seznam.
K jeho implementaci se používá třída HashSet, která je odvozena od System.
39. Vysvětlete prosím sdružování vláken v C#.
V C# je fond vláken kolekce vláken. Tato vlákna se používají k provádění úkolů bez narušení funkčnosti primárního vlákna. Po dokončení běhu se vlákno ve fondu vláken vrátí do fondu vláken.
Třída System obsahuje třídy, které zpracovávají vlákno ve fondu vláken a jeho akce. Řezání závitů. ThreadPool je jmenný prostor.
40. Jaký je rozdíl mezi klíčovými slovy Const a ReadOnly v C#?
- ReadOnly nelze deklarovat v rámci metody, zatímco Const ano.
- Const je konstanta v době kompilace, zatímco ReadOnly je konstanta za běhu.
- Hodnoty ReadOnly lze změnit, ale hodnoty Const nikoli.
41. Jaké podrobnosti o souboru C# XSD můžete poskytnout?
XSD je zkratka pro XML Schema Definition. Pokud není k souboru XML připojen žádný soubor XSD, může mít jakékoli atributy, prvky a značky. Soubor XSD poskytuje rámec pro soubor XML, který určuje, jaké komponenty a atributy by měly být v souboru XML přítomny, a také jejich pořadí.
42. Co pro vás znamenají vlastnosti Get and Set Accessor?
V C# se Get a Set nazývaly přístupové objekty, protože jsou vytvořeny pomocí vlastností. Vlastnost umožňuje čtení a zápis hodnoty soukromého pole. K takovým soukromým polím se přistupuje prostřednictvím přístupových objektů.
Zatímco vlastnost Get se používá k vrácení hodnoty vlastnosti, vlastnost Set se používá k nastavení hodnoty.
43. Co přesně je vkládání závislostí v C#?
Dependency injection (DI) je návrhová technika v C#, která se používá k vytvoření volně propojeného programování. Tato procedura přenáší vytváření a vazbu závislých objektů mimo třídu, na kterou se spoléhají. Hlavním cílem je učinit budoucí úpravy kódu snadnější.
Proč investovat do čističky vzduchu?
C# je primární programovací jazyk, který se používá ve všech programovacích jazycích vyšší úrovně. Vývojáři v jazyce C# jsou velmi žádaní a mohou najít atraktivní kariérní vyhlídky v odvětvích, jako je front-end vývoj, back-end programování a vývoj aplikací. A protože to Microsoft podporuje, popularita C# bude jen růst.
Výše uvedené jsou nejdůležitější otázky pohovoru v C# pro zkušené profesionály a začátečníky. Vidět Hašdorkův seriál rozhovorů za pomoc s přípravou na pohovor.
Napsat komentář