Introductie C # OOP Vragen en antwoorden over sollicitatiegesprekken
C # is een object-georiënteerde, functionele, generieke en component-georiënteerde programmeertaal. Het wordt gebruikt om verschillende applicaties te bouwen, het is met name sterk in het bouwen van Windows desktop-applicaties en games. Webontwikkeling kan ook efficiënt worden gedaan met C # en het wordt steeds populairder voor mobiele ontwikkelingen. Het is dus een uitstekende keuze voor elke programmeur die web- en game-ontwikkeling wil doen. Het is een statisch getypte taal, dus geschreven broncode wordt grondig gecontroleerd voordat het een toepassing wordt. Het is een complexe taal om te leren en het beheersen ervan kan een aanzienlijke hoeveelheid tijd vergen. Er zijn verschillende platformonafhankelijke tools beschikbaar waarmee in C # geschreven applicaties kunnen worden gebruikt die zowel mobiel als desktop kunnen worden gebruikt.
Als je op zoek bent naar een baan die gerelateerd is aan C # OOP, moet je je voorbereiden op de sollicitatievragen voor C # OOP 2019. Hoewel elk interview anders is en de reikwijdte van een baan ook anders, kunnen we je helpen met de beste C # OOP-interviewvragen met antwoorden, die je helpen de sprong te wagen en je succes in je interview te krijgen.
Hieronder staan de top 2019 C # OOP-interviewvragen die vaak worden gesteld in een interview. Deze topvragen zijn als volgt verdeeld in twee delen:
Deel 1 - Interviewvragen C # OOP (basis)
Dit eerste deel behandelt de basisvragen en antwoorden over C # OOP-vragen
1. Wat is het verschil tussen Interface en Abstract Class?
Antwoord:
Enig verschil is hieronder opgesomd:
- Een abstracte klasse kan niet-abstracte methoden (concrete methoden) hebben, terwijl in het geval van een interface alle methoden abstract moeten zijn.
- Een abstracte klasse kan variabelen declareren of gebruiken, terwijl een interface dit niet mag doen.
- In een abstracte klasse zijn alle gegevensleden of functies standaard privé, terwijl ze in de interface allemaal openbaar zijn, we kunnen ze niet handmatig wijzigen.
- Een abstracte klasse gebruikt constructor terwijl we in een interface geen type constructor hebben.
- Een klasse kan een willekeurig aantal interfaces implementeren, maar een subklasse kan maximaal één abstracte klasse gebruiken.
2. Wat zijn afgevaardigden en het gebruik ervan?
Antwoord:
Een gemachtigde object is een variabele van het referentietype die wordt gebruikt om de verwijzing naar een methode te bevatten. De referentie kan worden gewijzigd tijdens runtime die wordt bewaard door een object van een gemachtigde. Een gedelegeerd object kan veel functiereferenties bevatten die ook bekend staan als Invocatielijst die functies in een reeks FIFO verwijst, we kunnen nieuwe functies in runtime door een + = -operator in deze lijst vermelden en kunnen verwijderen door - = -operator.
Afgevaardigden worden vooral gebruikt voor het implementeren van evenementen en de terugbelmethoden. Alle afgevaardigden zijn impliciet afgeleid van het systeem. Deel klasse af.
Laten we doorgaan naar de volgende C # OOP-interviewvragen
3. Wat is een verschil tussen late binding en vroege binding?
Antwoord:
In Compile time polymorphism of Early Binding zullen we meerdere methoden met dezelfde naam gebruiken, maar een ander type parameter of misschien het nummer of de parameter hierdoor kunnen we verschillend-verschillende taken uitvoeren met dezelfde methodenaam in dezelfde klasse die ook bekend als methode-overbelasting.
public class TestData
(
public int Add(int a, int b, int c)
(
return a + b + c;
)
public int Add(int a, int b)
(
return a + b;
)
)
class Program
(
static void Main(string() args)
(
TestData dataClass = new TestData();
int add2 = dataClass.Add(45, 34, 67);
int add1 = dataClass.Add(23, 34);
)
)
Dynamisch / runtime polymorfisme staat ook bekend als late binding. Hier zijn de methode naam en de methode handtekening (aantal parameters en parameter type moeten hetzelfde zijn en kunnen een andere implementatie hebben). Methode opheffen is een voorbeeld van dynamisch polymorfisme.
public class Drawing
(
public virtual double Area()
(
return 0;
)
)
public class Square : Drawing
(
public double Length ( get; set; )
public Square()
(
Length = 6;
)
public override double Area()
(
return Math.Pow(Length, 2);
)
)
public class Rectangle : Drawing
(
public double Height ( get; set; )
public double Width ( get; set; )
public Rectangle()
(
Height = 5.3;
Width = 3.4;
)
public override double Area()
(
return Height * Width;
)
)
class Program
(
static void Main(string() args)
(
Drawing square = new Square();
Console.WriteLine("Area :" + square.Area());
Drawing rectangle = new Rectangle();
Console.WriteLine("Area :" + rectangle.Area());
)
)
4. Wat zou er gebeuren als de overgeërfde interfaces conflicterende methodenamen hebben?
Antwoord:
Dit zijn de gebruikelijke C # OOP-interviewvragen die in een interview worden gesteld. als we conflicterende methoden in dezelfde klasse hebben, kunnen we hun lichaam niet onafhankelijk in dezelfde klasse implementeren vanwege dezelfde naam en dezelfde handtekening, dus moeten we de interfacenaam vóór de methode gebruiken om deze methode-verwarring te verwijderen.
interface testInterface1 (
void Show();
)
interface testInterface2 (
void Show();
)
class Abc: testInterface1,
testInterface2 (
void testInterface1.Show() (
Console.WriteLine("For testInterface1 !!");
)
void testInterface2.Show() (
Console.WriteLine("For testInterface2 !!");
)
)
5. Wat zijn de verschillende manieren waarop een methode kan worden overbelast?
Antwoord:
Methode overbelasting is een andere naam voor compileertijd polymorfisme, waar we een methode kunnen maken met dezelfde naam maar met een andere handtekening. Het wordt tijdens het compileren gedaan en we kunnen het op verschillende manieren doen, maar de naam van de methode zou hetzelfde blijven.
Een aantal parameters kan verschillen.
Type parameter kan verschillen.
Volgorde van parameter kan verschillen.
Voorbeeld -
static int volume ( int x )(
return (x * x * x);
)
static double volume (float f, int i)(
return 3.14 * f * f * I;
)
static long volume (long l, int b, int n)(
return l * b * h;
)
Deel 2 - Interviewvragen C # OOP (geavanceerd)
Dit eerste deel behandelt geavanceerde C # OOP interviewvragen en antwoorden
6. Wat is een toegankelijkheidsmodificator en hoeveel staan er in C #?
Antwoord:
Toegangsmodificeerders zijn sleutelwoorden die worden gebruikt om de aangegeven toegankelijkheid van een lid of type op te geven. In C # zijn er 5 verschillende soorten toegangsmodificaties.
Openbaar - Geen beperkingen op toegang tot openbare leden.
Privé - beperkte toegang binnen een klassedefinitie, als er geen is opgegeven, is dit de standaardinstelling.
Beschermd - toegang is beperkt tot binnen de klassedefinitie en elke klasse die erft van de klasse.
Intern - toegang is uitsluitend beperkt tot de klassen die worden gedefinieerd door het huidige project
Beschermd intern - lid is overal in dezelfde assembly toegankelijk en ook toegankelijk door die klasse te erven, het kan alleen buiten de assembly toegankelijk zijn in afgeleide klasse.
7. Wat is een virtuele methode in C #?
Antwoord:
Een virtuele methode is een methode die opnieuw kan worden gedefinieerd in afgeleide klassen. Een virtuele methode heeft een implementatie in een basisklasse en is afgeleid van de klasse. Het wordt gebruikt wanneer de basisfunctionaliteit van een methode hetzelfde is, maar soms is meer functionaliteit nodig in de afgeleide klasse. Er wordt een virtuele methode gemaakt in de basisklasse die in de afgeleide klasse kan worden overschreven. We maken een virtuele methode in de basisklasse met behulp van het virtuele trefwoord en die methode wordt overschreven in de afgeleide klasse met het trefwoord override.
Wanneer een virtuele methode wordt aangeroepen, wordt het runtime-type van het object gecontroleerd op een overheersend lid. Het overheersende lid in de meest afgeleide klasse wordt genoemd, wat het oorspronkelijke lid kan zijn als geen afgeleide klasse het lid heeft overschreven. Standaard zijn methoden niet-virtueel. We kunnen een niet-virtuele methode niet negeren.
Laten we doorgaan naar de volgende C # OOP-interviewvragen
8. Hoe NULL in C # te vermijden?
Antwoord:
Null is geen object. We kunnen een klasse hebben, maar een variabele met een NULL-waarde betekent dat deze niet naar een object verwijst. We kunnen een stuk code tegenkomen dat veel voorwaardelijke instructies bevat die zouden controleren of de waarde van een variabele NULL is. Laten we eens kijken naar een statische methode:
public static string DisplayUpperString (string s) (
string upper = string.Empty;
If( s == null ) (
upper = null;
)
else (
upper = s.ToUpper();
)
return upper;
)
Deze code is prima en zet een gegeven string om in hoofdletters.
Maar overweeg vanuit OO-perspectief een object te construeren dat niets vertegenwoordigt, in plaats van het te evalueren voor NULL.
public static String DisplayUpperString (PossibleString s) (
string upper = s.ToPossibleUpper ();
terugkeer bovenste;
)
De functie is nu minder rommelig, beter leesbaar en gebruikt niet langer de controle op een NULL-waarde.
9. Wat is de uitbreidingsmethode in C # en hoe deze te gebruiken?
Antwoord:
Dit zijn de veelgestelde C # OOP-interviewvragen die in een interview worden gesteld. Een extensiemethode is een speciaal soort statische methode, maar ze worden aangeroepen alsof het instantiemethoden van het uitgebreide type waren. Met deze methode kunt u methoden toevoegen aan bestaande typen zonder een nieuw afgeleid type te maken, het oorspronkelijke type opnieuw te compileren of anderszins te wijzigen. Extensiemethoden zijn alleen beschikbaar als u de naamruimte expliciet in uw broncode importeert met een gebruiksrichtlijn.
10. Kan dit trefwoord worden gebruikt binnen een statische methode?
Antwoord:
Omdat 'dit' trefwoord een verwijzing naar de huidige instantie van een klasse retourneert, kunnen we dit niet gebruiken in een statische methode. En statische leden bestaan zonder een instantie van de klas en roepen met de naam van de klas, niet per instantie. We kunnen dus zeggen dat "dit" sleutelwoord een speciaal type referentievariabele is die impliciet wordt gedefinieerd binnen elke constructor en niet-statische methode als een eerste parameter van de typeklasse waarin het is gedefinieerd.
Aanbevolen artikel
Dit is een gids voor Lijst met C # OOP-interviewvragen en -antwoorden, zodat de kandidaat deze C # OOP-interviewvragen gemakkelijk kan beantwoorden. Hier in dit bericht hebben we bestudeerd over de beste C # OOP-interviewvragen die vaak worden gesteld in interviews. U kunt ook de volgende artikelen bekijken voor meer informatie -
- Hadoop: sollicitatievragen voor Admin
- 12 geweldige sollicitatievragen voor Spark
- 10 Belangrijke sollicitatievragen over Ab initio
- 25 Belangrijkste sollicitatievragen voor informatica
- Wat zijn de voordelen van C # en Js