Top 50 C# Interviewvragen & Antwoorden (2021 Editie) – Voor Beginners en Ervaren Ontwikkelaars
C# is een veelzijdige, objectgeoriënteerde taal die draait op het .NET-framework. Het aandrijft ASP.NET-webapplicaties, desktopsoftware en zelfs games via Unity. Als je een carrière in C# nastreeft, helpen het beheersen van deze interviewvragen je om zowel diepgang als breedte van kennis aan te tonen aan wervingsmanagers.
C# Interviewvragen voor Beginners & 2/3/5/10 Jaar Ervaring
Deze vragen dekken basisconcepten, syntaxis en veelvoorkomende valkuilen die interviewers van kandidaten verwachten te beheersen.
1. Wat is C#?
C# is een statisch getypeerde, typeveilige, objectgeoriënteerde taal die gecompileerd wordt naar Microsoft Intermediate Language (MSIL) door de .NET-runtime.
2. Leg de typen commentaar in C# uit met voorbeelden
- Enkelvoudige regel:
// Dit is een commentaar op één regel - Meerdere regels:
/* Dit is een meervoudig commentaar Het kan meerdere regels beslaan */ - XML-documentatie:
/// <summary>Stel foutmelding in</summary>
3. Kunnen meerdere catch-blokken uitgevoerd worden?
Nee. Zodra een passend catch-blok wordt uitgevoerd, gaat de controle naar het finally-blok (indien aanwezig) en vervolgens naar de code na de try-catch-structuur.
4. Wat is het verschil tussen public, static en void?
public – Toegankelijk vanuit elke code die naar het type verwijst.
static – Behoort tot het type zelf, niet tot een instantie.
void – Geeft aan dat een methode geen waarde retourneert.
5. Wat is een object?
Een object is een instantie van een klasse, aangemaakt met het sleutelwoord new. Het biedt toegang tot de leden van de klasse (methodes, eigenschappen, velden).
6. Definieer constructors.
Een constructor is een speciale methode die dezelfde naam draagt als de klasse. Hij wordt automatisch uitgevoerd wanneer een instantie wordt aangemaakt, initialiseert velden en voert initialisatie uit.
7. Wat zijn getande arrays?
Getande arrays zijn arrays van arrays. Elk element kan verwijzen naar een array van een andere lengte, wat onevenredige datastructuren mogelijk maakt.
8. Wat is het verschil tussen ref- en out-parameters?
ref vereist dat de variabele geïnitialiseerd is vóór de aanroep. out niet; de aangeroepte methode moet een waarde toewijzen voordat hij retourneert.
9. Wat is het nut van de using-instructie in C#?
Het using-blok zorgt ervoor dat een IDisposable-bron automatisch wordt vrijgegeven wanneer het blok wordt verlaten, zelfs als er een uitzondering optreedt.
10. Wat is serialisatie?
Serialisatie converteert een object naar een bytestroom voor opslag of transmissie. Deserialisatie keert het proces om, het object wordt gereconstrueerd. Types moeten gemarkeerd zijn met [Serializable] of ISerializable implementeren.
11. Kan het this-sleutelwoord worden gebruikt in een statische methode?
Nee. this verwijst naar de huidige instantie, wat statische methodes niet hebben.
12. Wat is het verschil tussen constanten en readonly-velden?
Constanten zijn compileertijdwaarden die niet kunnen veranderen. Readonly-velden worden één keer tijdens runtime toegewezen (inline of in een constructor) en kunnen daarna niet meer worden gewijzigd.
Geavanceerde C# Interviewvragen voor 3/5/10 Jaar Ervaring
13. Wat is een interface? Geef een voorbeeld.
Een interface definieert een contract van methodes en eigenschappen zonder implementatie. Voorbeeld:
public interface IGroeter { void StelNaamIn(string naam); string Groet(); }
public class VriendelijkeGroeter : IGroeter {
private string _naam;
public void StelNaamIn(string naam) => _naam = naam;
public string Groet() => $"Hallo, {_naam}!";
}
14. Wat zijn waardetypes en referentietypes?
Waardetypes (bijv. int, struct) slaan gegevens direct op de stack op. Referentietypes (bijv. class, string) houden een referentie naar het object op de heap.
15. Wat zijn Custom Controls en User Controls?
Custom controls worden gecompileerd naar DLL's en kunnen op formulieren worden geplaatst. User controls (.ascx) zijn samengestelde controles die zijn opgebouwd uit bestaande controles, handig voor herbruikbare UI-componenten.
16. Wat zijn sealed-klassen in C#?
sealed-modifier voorkomt subklassen, waardoor het gedrag van de klasse ongewijzigd blijft.
17. Wat is methode-overloading?
Methode-overloading stelt meerdere methodes in staat om een naam te delen, maar te verschillen in parameterlijsten. De compiler selecteert de juiste overload op basis van de argumenten.
18. Wat is het verschil tussen Array en ArrayList?
Een Array heeft een vaste grootte en homogene elementtypen. ArrayList (veelal vervangen door List<T>) is dynamisch en slaat objecten op.
19. Kan een private virtuele methode worden overschreven?
Nee. Een private methode is niet zichtbaar voor afgeleide klassen, dus kan niet worden overschreven.
20. Beschrijf de toegankelijkheidsmodifier protected internal.
Leden gemarkeerd met protected internal zijn toegankelijk binnen dezelfde assembly of vanuit afgeleide klassen in andere assemblies.
21. Wat zijn de verschillen tussen System.String en System.Text.StringBuilder?
String is onveranderlijk; elke wijziging creëert een nieuwe instantie. StringBuilder is veranderlijk, ontworpen voor efficiënte stringmanipulatie.
22. Verschil tussen Array.CopyTo() en Array.Clone()?
Clone() maakt een ondiepe kopie van de hele array. CopyTo() kopieert elementen naar een bestaande bestemmingarray.
23. Hoe kunnen we een array in aflopende volgorde sorteren?
Gebruik Array.Sort() gevolgd door Array.Reverse(), of lever een aangepaste comparer.
24. Schrijf C#-syntaxis om een uitzondering op te vangen.
Voorbeeld:
try { HaalAlleDataOp(); } catch (Exception ex) { // Fout afhandelen }
25. Verschil tussen een interface en een abstracte klasse?
Interfaces declareren alleen handtekeningen; alle leden zijn impliciet public en abstract. Abstracte klassen kunnen concrete implementaties en private leden bieden.
26. Verschil tussen Finalize() en Dispose()?
Dispose vrijgeeft onbeheerde bronnen deterministisch. Finalize (destructor) wordt aangeroepen door de GC en is non-deterministisch.
27. Wat zijn cirkelreferenties?
Twee of meer objecten verwijzen naar elkaar, wat garbage collection kan voorkomen en geheugenlekken kan veroorzaken.
28. Wat zijn generics in C#?
Generics maken typeveilige, herbruikbare code mogelijk (bijv. List<T>), verminderen runtime-casting en verbeteren prestaties.
29. Wat is een objectpool in .NET?
Een objectpool houdt een set geïnitialiseerde objecten gereed voor hergebruik, minimaliseren dure allocaties en garbage collection.
30. Lijst veelgebruikte uitzonderingstypen in .NET.
ArgumentException, ArgumentNullException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException, OverflowException, IndexOutOfRangeException, InvalidCastException, InvalidOperationException, IOException, NullReferenceException, OutOfMemoryException, StackOverflowException, etc.
31. Wat zijn custom exceptions?
Custom exceptions zijn door de gebruiker gedefinieerde typen afgeleid van Exception, afgestemd op specifieke foutscenario's.
32. Wat zijn delegates?
Delegates zijn typeveilige functiepointers die callbacks en gebeurtenisafhandeling mogelijk maken.
33. Hoe erf je van een klasse in C#?
Gebruik de dubbele punt-syntaxis:
public class Afgeleide : Basisklasse { }
34. Wat is de basisklasse waar alle .NET-klassen van afstammen?
System.Object.
35. Verschil tussen methode overschrijven en overloading?
Overschrijven verandert de implementatie van een virtuele methode in een afgeleide klasse. Overloading creëert meerdere methodes met dezelfde naam maar verschillende handtekeningen.
36. Op welke manieren kan een methode overloaded worden?
Door parameter-type, volgorde of aantal te variëren.
37. Waarom kun je geen toegankelijkheid opgeven voor methodes binnen een interface?
Interfaceleden zijn impliciet public; toegankelijkheid opgeven zou redundant zijn.
38. Hoe sta je toe dat een klasse geërfd kan worden, maar een methode niet overschreven?
Declareer de methode als sealed binnen een niet-gesealde klasse.
39. Wat gebeurt er als geërfde interfaces conflicterende methodenamen hebben?
Implementeer de methode één keer in de afgeleide klasse, zodat aan alle interfacecontracten wordt voldaan.
40. Verschil tussen een struct en een klasse?
Structs zijn waardetypes opgeslagen op de stack, kunnen niet van andere structs erven, en zijn conventioneel onveranderlijk. Klassen zijn referentietypes opgeslagen op de heap.
41. Hoe gebruikt u nullable types in .NET?
Voeg ? toe aan een waardetype:
int? id = null; if (id.HasValue) { /* gebruik id.Value */ }
42. Hoe kunt u een array met niet-standaardwaarden aanmaken?
Gebruik Enumerable.Repeat of initialisaties van verzamelingen.
43. Verschil tussen is en as operators?
is controleert typecompatibiliteit en retourneert een boolean. as cast en retourneert null als de cast mislukt.
44. Wat is een multicast delegate?
Een delegate die naar meerdere methodes verwijst; het aanroepen ervan roept alle gekoppelde methodes in volgorde aan.
45. Wat zijn indexers in C#?
Indexers laten objecten als arrays indexeren:
public int this[int index] { get { … } set { … } }
46. Verschil tussen throw en throw ex?
throw behoudt de oorspronkelijke stacktrace; throw ex reset deze, wat debuggen bemoeilijkt.
47. Wat zijn C#-attributen en hun betekenis?
Attributen voegen metadata toe aan typen en leden; ze kunnen tijdens runtime via reflectie worden opgevraagd.
48. Hoe implementeer je een singleton-ontwerppatroon?
Voorbeeld:
public sealed class Singleton {
private static readonly Singleton _instantie = new Singleton();
public static Singleton Instantie => _instantie;
private Singleton() { }
}
49. Verschil tussen DirectCast en CType?
DirectCast vereist dat de runtime-type precies overeenkomt met het doeltype. CType voert een conversie uit gedefinieerd door het doeltype, mogelijk met conversie-operators.
50. Is C# managed of unmanaged code?
C# is managed code; de CLR compileert het naar MSIL en beheert geheugenbeheer.
51. Wat is een console-applicatie?
Een console-applicatie draait in een opdrachtprompt-venster en is vaak de eerste stap voor .NET-beginners.
52. Voorbeeld van het verwijderen van een element uit een Queue
Gebruik Dequeue() om het voorste element te verwijderen:
Queue<int> wachtrij = new Queue<int>(); wachtrij.Enqueue(1); wachtrij.Enqueue(2); wachtrij.Enqueue(3); int verwijderd = wachtrij.Dequeue(); // verwijderd = 1
C Taal
- Robotics & Automation News kondigt 2021 Awards-ceremonie aan – Virtueel evenement eind 2021
- Supply Chain Finance 2019: Trends, uitdagingen en kernvragen
- MEO Klas 4 Elektrisch Mondeling Examen – Uitgebreide Q&A en Praktische Richtlijnen
- Lights-out productie voor CNC-winkels: FAQ's & implementatiegids
- 2021's Top 5 Gecomprimeerde Lucht & Gas Artikelen: Belangrijkste Innovaties & Industriestandaarden
- Belangrijkste Cloudmetrics Die Eindgebruikerservaring en Prestaties Drijven
- 2024 Cloud Interview Gids: Expert Vragen & Antwoorden
- Top 5 Must-Have Resources voor IIoT Systeemingenieurs & Architecten (2017)
- 5G's Top Vijf Uitdagingen: Spectrum, Kosten, Dekking, Apparaten en Beveiliging Navigeren
- 5G en Edge: Opkomende cybersecurity-uitdagingen voor 2021
- Top 10 C# IDE's voor Windows, macOS en Linux – 2021 Review