top 30 oops interview questions
Denne vejledning giver et komplet sæt af ofte stillede spørgsmål og svar til objektorienteret programmering (OOP) Interview:
Softwareudvikling har omkring 70 års historie, hvor forskellige sprog som FORTRAN, Pascal, C, C ++ blev opfundet. Der var en række udsagn, der fungerer som kommandoer til hardware for at udføre nogle grundlæggende matematiske beregninger, hvilket gør proceduremæssige sprog til design af forskellige softwareapplikationer.
Med opfindelsen af Internettet var der brug for sikre, stabile og platformuafhængige og robuste sprog til design af komplekse applikationer.
Objektorienteret programmering er platformuafhængig, bærbar, sikret og udstyret med forskellige begreber som indkapsling, abstraktion, arv og polymorfisme.
Fordele ved OOPS er genanvendelighed, udvidelsesmulighed og modularitet, der forbedrer produktiviteten, lettere at vedligeholde på grund af modularitet, hurtigere og lavere omkostninger ved udvikling på grund af genbrug af kode, producerer sikrede applikationer i høj kvalitet.
Hvad du vil lære:
Grundlæggende objektorienterede programmeringskoncepter
Objektorienteret programmering involverer intellektuelle objekter, data og adfærd forbundet med det for at bringe løsninger på forretningsproblemer. I Java-programmeringssprog, for at designe løsninger til forretningsproblemer, anvender udviklere begreber som abstraktion, indkapsling, arv og polymorfisme.
Forskellige begreber som f.eks Abstraktion der ignorerer irrelevante detaljer, Indkapsling der fokuserer på, hvilket minimum der kræves uden at afsløre nogen kompleksitet i forhold til interne funktionaliteter, Arv at arve egenskaber for den overordnede klasse eller implementere flere arv ved hjælp af en grænseflade, og Polymorfisme der udvider egenskaberne ved metodeoverbelastning (statisk polymorfisme) og metodeoverstyring (dynamisk polymorfisme).
Ofte stillede spørgsmål om OOPS-interview
Q # 1) Forklar kort hvordan du mener med objektorienteret programmering i Java?
Svar: OOP beskæftiger sig med objekter, såsom virkelige enheder såsom pen, mobil, bankkonto, der har tilstand (data) og adfærd (metoder).
Ved hjælp af adgang sikres specificerer adgang til disse data og metoder. Begreber indkapsling og abstraktion tilbyder dataskjulning og adgang til det væsentlige, arv og polymorfisme hjælper med at genbruge koden og overbelaste / tilsidesætte metoder og konstruktører, hvilket gør applikationer platformuafhængige, sikre og robuste ved hjælp af sprog som Java.
Q # 2) Forklar Er Java et rent objektorienteret sprog?
Svar: Java er ikke et helt rent objektorienteret programmeringssprog. Følgende er årsagerne:
- Java understøtter og bruger primitive datatyper som int, float, double, char osv.
- Primitive datatyper gemmes som variabler eller på stakken i stedet for bunken.
- I Java kan statiske metoder få adgang til statiske variabler uden at bruge et objekt, i modsætning til objektorienterede begreber.
Q # 3) Beskriv klasse og objekt i Java?
Svar: Klasse og objekt spiller en integreret rolle i objektorienterede programmeringssprog som Java.
- Klasse er en prototype eller en skabelon, der har tilstand og adfærd understøttet af et objekt og bruges til oprettelse af objekter.
- Objektet er en forekomst af klassen, for eksempel, Menneske er en klasse med staten som at have et hvirvelsystem, hjerne, farve og højde og har opførsel som canThink (), ableToSpeak () osv.
Spørgsmål nr. 4) Hvad er forskellene mellem klasse og objekter i Java?
Svar: Følgende er et par store forskelle mellem klasse og objekter i Java:
Klasse | Objekt |
---|---|
Virkelige eksempler på klasse kan være en • En opskrift til tilberedning af mad. • Blå udskrifter til en bilmotor. | Virkelige eksempler på objekt kan være • En mad tilberedt efter opskrift. • Motor konstrueret i henhold til blåtryk. |
Klassen er en logisk enhed | Objekt er fysisk enhed |
Klasse er en skabelon, hvorfra objekt kan oprettes | Objekt er en forekomst af klassen |
Klasse er en prototype, der har tilstand og opførsel af lignende objekter | Objekter er enheder, der findes i det virkelige liv, såsom mobile, mus eller intellektuelle objekter såsom bankkonto |
Klassen erklæres med klasse nøgleord som klasse Klassenavn {} | Objekt oprettes via nyt nøgleord som Medarbejder emp = ny Medarbejder (); |
Under klasseoprettelsen er der ingen fordeling af hukommelse | Under oprettelse af objekt tildeles hukommelse til objektet |
Der er kun envejsklasse er defineret ved hjælp af klasse nøgleordet | Objektoprettelse kan ske på mange måder, f.eks. Ved at bruge nyt nøgleord, newInstance () -metode, klon () og fabriksmetode. |
Spørgsmål nr. 5) Hvorfor er der behov for objektorienteret programmering?
Svar: OOP giver adgangsspecifikatorer og dataskydningsfunktioner for mere sikkerhed og kontrol af dataadgang, overbelastning kan opnås med funktion og operatøroverbelastning, kode genbrug er mulig, da allerede oprettede objekter i et program kan bruges i andre programmer.
Dataredundans, vedligeholdelse af kode, datasikkerhed og fordel ved begreber som indkapsling, abstraktion, polymorfisme og arv i objektorienteret programmering giver en fordel i forhold til tidligere anvendte proceduremæssige programmeringssprog.
Q # 6) Forklar abstraktion med et eksempel i realtid.
Svar: Abstraktion i objektorienteret programmering betyder at skjule komplekse interner, men kun udsætte væsentlige egenskaber og adfærd med hensyn til kontekst. I det virkelige liv er et eksempel på abstraktion en online indkøbskurv, for eksempel på ethvert e-handelssted. Når du først har valgt et produkt og bestiller, er du bare interesseret i at modtage dit produkt til tiden.
Hvordan ting sker, er ikke det, du er interesseret i, da det er komplekst og holdes skjult. Dette er kendt som abstraktion. Tag ligeledes eksemplet med pengeautomat, kompleksiteten af internals af, hvordan penge debiteres fra din konto, holdes skjult, og du modtager kontanter via et netværk. Tilsvarende for biler er det meget komplekst, hvordan benzin får motoren til at køre bilen.
Q # 7) Giv nogle eksempler i realtid og forklar arv.
Svar: Arv betyder en klasse (underklasse), der erhverver egenskaber for en anden klasse (super klasse) ved arv. I det virkelige liv skal du tage et eksempel på arv af en normal cykel, hvor det er en forældreklasse, og en sportscykel kan være en børneklasse, hvor sportscyklen har arvet egenskaber og opførsel af roterende hjul med pedaler via gear, der svarer til en normal cykel.
Spørgsmål nr. 8) Hvordan polymorfisme fungerer i Java, forklar med eksempler fra virkeligheden?
Svar: Polymorfisme er en evne til at have flere former eller metoden til at gøre forskellige ting. I det virkelige liv opfører den samme person, der udfører forskellige pligter, forskelligt. In-Office er han medarbejder, hjemme, han er far, under eller efter skoletimer er han studerende, i weekenden spiller han cricket og er spiller på legepladsen.
forskel mellem test case og test plan
I Java er der to typer polymorfisme
- Kompileringstid polymorfisme: Dette opnås ved metodeoverbelastning eller operatøroverbelastning.
- Runtime polymorfisme: Dette opnås ved tilsidesættelse af metoden.
Spørgsmål nr. 9) Hvor mange typer arv er der?
Svar: Forskellige typer arv er angivet nedenfor:
- Enkelt arv: Enebarnsklassen arver karakteristika for eneforælderklassen.
- Flere arv: En klasse arver funktioner i mere end en basisklasse og understøttes ikke i Java, men klassen kan implementere mere end en grænseflade.
- Multilevel arv: En klasse kan arve fra en afledt klasse, hvilket gør den til en basisklasse for en ny klasse, for eksempel, et barn arver adfærd fra sin far, og faderen har arvet egenskaber fra sin far.
- Hierarkisk arv: Én klasse arves af flere underklasser.
- Hybrid arv: Dette er en kombination af enkelt og flere arv.
Q # 10) Hvad er interface?
Svar: Interface svarer til klassen, hvor den kan have metoder og variabler, men dens metoder har ikke en krop, kun en signatur kendt som den abstrakte metode. Variabler, der er erklæret i grænsefladen, kan have offentlig, statisk og endelig som standard. Interface bruges i Java til abstraktion og flere arv, hvor klassen kan implementere flere grænseflader.
Spørgsmål nr. 11) Kan du forklare fordelene ved abstraktion og arv?
Svar: Abstraktion afslører kun vigtige detaljer for brugeren og ignorerer eller skjuler irrelevante eller komplekse detaljer. Med andre ord udsætter dataabstraktion grænsefladen og skjuler implementeringsdetaljer. Java udfører abstraktion ved hjælp af grænseflader og abstrakte klasser. Fordelen ved abstraktion er, at det gør det enkelt at se ting ved at reducere eller skjule kompleksiteten af implementeringen.
Kopiering af kode undgås, og det øger genanvendelighed af kode. Kun væsentlige detaljer afsløres for brugeren og forbedrer applikationens sikkerhed.
Arv er, hvor barneklassen arver funktionalitet (adfærd) i overordnede klassen. Vi behøver ikke at skrive kode en gang skrevet i overordnet klasse for funktionalitet igen i underordnede klasse og dermed gøre det lettere at genbruge koden. Koden bliver også læselig. Arv bruges hvor der er ”en” relation. Eksempel: Hyundai er en bil ELLER MS Word er en software.
Spørgsmål nr. 12) Hvad er forskellen mellem forlængere og redskaber?
Svar: Både søgeord udvider og implementerer bruges til arv, men på forskellige måder.
Forskellene mellem nøgleordene Extends and Implements i Java forklares nedenfor:
Udvider sig | Redskaber |
---|---|
En klasse kan udvide en anden klasse (barn, der udvider forælder ved at arve hans egenskaber). Interface arver også (ved hjælp af nøgleord udvider) en anden grænseflade. | En klasse kan implementere en grænseflade |
Underklasse, der udvider superklassen, tilsidesætter muligvis ikke alle superklassemetoderne | Klassens implementeringsgrænseflade skal implementere alle metoderne i grænsefladen. |
Klassen kan kun udvide en enkelt superklasse. | Klassen kan implementere et hvilket som helst antal grænseflader. |
Interface kan udvide mere end én grænseflade. | Interface kan ikke implementere nogen anden interface. |
Syntaks: klasse Barn udvider klasse Forældre | Syntaks: klasse Hybrid redskaber Rose |
Q # 13) Hvad er forskellige adgangsmodifikatorer i Java?
Svar: Adgangsmodifikatorer i Java styrer adgangsområdet for klasse, konstruktør, variabel, metode eller datamedlem. Forskellige typer adgangsmodifikatorer er som følger:
- Standardadgangsmodifikator er uden adgangsspecifikationsmedlemmer, klasse og metoder og er tilgængelige inden for samme pakke.
- Modifikatorer for privat adgang er markeret med nøgleordet privat og er kun tilgængelige inden for klassen og ikke engang tilgængelige for klassen fra den samme pakke.
- Beskyttede adgangsmodifikatorer kan være tilgængelig inden for den samme pakke eller underklasser fra forskellige pakker.
- Modifikatorer for offentlig adgang er tilgængelige overalt.
Q # 14) Forklar forskellen mellem abstrakt klasse og metode?
Svar: Følgende er nogle forskelle mellem abstrakt klasse og abstrakt metode i Java:
Abstrakt klasse | Abstrakt metode |
---|---|
Objekt kan ikke oprettes fra den abstrakte klasse. | Abstrakt metode har en underskrift, men har ikke en krop. |
Underklasse oprettet eller arver abstrakt klasse for at få adgang til medlemmer af abstrakt klasse. | Det er obligatorisk at tilsidesætte superklasses abstrakte metoder i deres underklasse. |
Abstrakt klasse kan indeholde abstrakte metoder eller ikke abstrakte metoder. | Klasse indeholdende abstrakt metode skal laves abstrakt klasse. |
Spørgsmål nr. 15) Hvad er forskellene mellem metode og konstruktør?
Svar: Følgende er forskellene mellem konstruktører og metoder i Java:
Konstruktører | Metoder |
---|---|
Konstruktørens navn skal matche det i klasse. | Metoder bør ikke have samme navn som klasse navn. |
De bruges til at oprette, initialisere og allokere hukommelse til objektet. | Metoder bruges til at udføre bestemte udsagn, der er skrevet inde i dem. |
Konstruktører påberåbes implicit af systemet, når der oprettes objekter. | Metoder påberåbes, når det kaldes. |
De påkaldes ved hjælp af et nyt nøgleord, mens de opretter en forekomst af klassen (objekt). | Metoder påberåbes under programudførelse. |
Konstruktør har ikke returtype. | Metoden har en returtype. |
Konstruktør kan ikke arves af underklassen. | Metoder kan arves af en underklasse. |
Spørgsmål nr. 16) Hvad er en konstruktør i Java?
Svar: Constructor er en metode uden returtype og har sit navn det samme som klassens navn. Når vi opretter et objekt, tildeler en standardkonstruktør hukommelse til et objekt under kompilering af Java-kode. Konstruktører bruges til at initialisere objekter og indstille startværdier for objektattributter.
Spørgsmål nr. 17) Hvor mange typer konstruktører kan bruges i Java? Forklar venligst.
Svar: Der er grundlæggende tre typer konstruktører i Java.
Disse er:
- Standardkonstruktør: Denne konstruktør er uden nogen parameter og påberåber sig hver gang du opretter en forekomst af en klasse (objekt). Hvis en klasse er en medarbejder, vil syntaxen for standardkonstruktøren være medarbejder ().
- No-arg konstruktør: Som navnet antyder, kaldes en konstruktør uden argument en no-arg konstruktør.
- Parametreret konstruktør: Konstruktør med et antal parametre kaldes en parameteriseret konstruktør. Du skal angive argumenter, dvs. initialværdier med hensyn til datatypen for parametre i den konstruktør.
Spørgsmål nr. 18) Hvorfor bruges et nyt nøgleord i Java?
Svar: Når vi opretter en forekomst af klasse, dvs. objekter, bruger vi Java-nøgleordet ny . Det tildeler hukommelse i bunkeområdet, hvor JVM reserverer plads til et objekt. Internt påkalder den også standardkonstruktøren.
Syntaks:
hvad er regressionstest i softwaretest
Class_name obj = new Class_name();
Spørgsmål nr. 19) Hvornår bruger du superordet?
Svar: super er et Java-nøgleord, der bruges til at identificere eller henvise overordnet (base) klasse.
- Vi kan bruge super til at få adgang til superklassekonstruktør og opkaldsmetoder i superklassen.
- Når metodenavne er de samme i superklasse og underklasse, henvises superklasse til super nøgleord bruges.
- For at få adgang til data med samme navn medlemmer af forældreklassen, når de er til stede i forældre- og underklassen.
- super kan bruges til at foretage et eksplicit opkald til ikke-arg og parametriserede konstruktører af overordnet klasse.
- Adgang til overordnet klassemetode kan gøres ved hjælp af super , når barneklassen har tilsidesat metode.
Spørgsmål nr. 20) Hvornår bruger du dette nøgleord?
Svar: det her nøgleord i Java henviser til det aktuelle objekt i konstruktøren eller i metoden.
- Når klasseattributter og parametriserede konstruktører begge har samme navn, det her nøgleord bruges.
- Nøgleord det her påberåber den aktuelle klassekonstruktør, metoden til den aktuelle klasse, returnerer objektet for den aktuelle klasse, videresender et argument i konstruktøren og metodeopkald.
Q # 21) Hvad er forskellen mellem Runtime og kompil-time polymorfisme?
Svar: Både runtime og kompil-time polymorfisme er to forskellige typer polymorfisme. Deres forskelle forklares nedenfor:
Kompilér tidspolymorfisme | Runtime polymorfisme |
---|---|
Opkald løses af en kompilator i kompileringstidspolymorfisme. | Opkald løses ikke af compileren i runtime polymorfisme. |
Det er også kendt som statisk binding og metodeoverbelastning. | Det er også kendt som dynamisk, sent og overordnet metode. |
Metoder med samme navn med forskellige parametre eller metoder med samme signatur og forskellige returtyper er kompileringstidspolymorfisme. | Metode med samme navn med de samme parametre eller signatur tilknyttet forskellige klasser kaldes metodeoverstyring. |
Det opnås ved overbelastning af funktioner og operatører. | Det kan opnås ved hjælp af markører og virtuelle funktioner. |
Da alle tingene udføres på kompileringstidspunktet. kompileringstidspolymorfisme er mindre fleksibel. | Når tingene udføres på kørselstid, er polymorfisme til runtime mere fleksibel. |
Q # 22) Hvilke objektorienterede funktioner bruges i Java?
Svar: Et koncept om at bruge et objekt i Java-programmeringssprog drager fordel af brugen af objektorienterede begreber som indkapsling til binding af et objekts tilstand og opførsel, sikrer dataadgang med adgangsspecifikatorer, funktioner som abstraktion i skjuling af information, arv for at udvide tilstand , og opførsel af baseklasser til børneklasser, kompileringstid og runtime polymorfisme til henholdsvis metodeoverbelastning og metodeoverstyring.
Spørgsmål nr. 23) Hvad er metodeoverbelastning?
Svar: Når to eller flere metoder med samme navn enten har et andet antal parametre eller forskellige typer parametre, kan disse metoder have eller måske ikke have forskellige returtyper, så de er overbelastede metoder, og funktionen er metodeoverbelastning. Metodeoverbelastning kaldes også kompileringstidspolymorfisme.
Spørgsmål nr. 24) Hvad er metodeoverstyring?
Svar: Når en metode af underklasse (afledt, underklasse) har samme navn, parametre (signatur) og samme returtype som metoden i sin superklasse (base, overordnet klasse), siges metoden i underklassen at blive tilsidesat metoden i superklassen. Denne funktion er også kendt som runtime polymorfisme.
Q # 25) Forklar overbelastning af konstruktører.
Svar: Mere end en konstruktør, der har forskellige parametre, så forskellige opgaver kan udføres med hver konstruktør, kaldes konstruktøroverbelastning. Med konstruktøroverbelastning kan objekter oprettes på forskellige måder. Forskellige samlingsklasser i Java API er eksempler på konstruktøroverbelastning.
Spørgsmål nr. 26) Hvilke argumenter kan bruges i Java?
Svar: For Java-metoder og -funktioner kan parameterdata sendes og modtages på forskellige måder. Hvis metode B () kaldes fra metode A (), er metode A () en opkaldsfunktion, og metode B () kaldes funktion, argumenter sendt ved metode A () er faktiske argumenter, og parametre for metode B () kaldes formelle argumenter.
- Opkald efter værdi: Ændringer foretaget i formel parameter (parametre for metode B ()) sendes ikke tilbage til den, der ringer op (metode A ()), denne metode kaldes kald efter værdi . Java understøtter opkaldet efter værdi.
- Ring ved henvisning: Ændringer foretaget i formel parameter (parametre for metode B ()) sendes tilbage til den, der ringer op (parametre for metode B ()).
- Eventuelle ændringer i formelle parametre (parametre for metode B ()) afspejles i faktiske parametre (argumenter sendt efter metode A ()). Dette kaldes kald ved henvisning.
Q # 27) Skelne mellem statisk og dynamisk binding?
Svar: Forskellene mellem statisk og dynamisk binding forklares i nedenstående tabel.
Statisk binding | Dynamisk binding |
---|---|
Statisk binding i Java bruger type felter og klasse til som en opløsning. | Dynamisk binding i Java bruger objekt til løsning af binding. |
Metodeoverbelastning er et eksempel på statisk binding. | Metodeoverstyring er et eksempel på dynamisk binding. |
Statisk binding løses ved kompileringstidspunktet. | Dynamisk binding løses ved kørselstid. |
Metoder og variabler, der bruger statisk binding, er private, endelige og statiske typer. | Virtuelle metoder bruger dynamisk binding. |
Spørgsmål nr. 28) Kan du forklare basisklasse, underklasse og superklasse?
Svar: Baseklasse, underklasse og superklasse i Java forklares som følger:
- Basisklasse eller forældreklasse er en superklasse og er en klasse, hvorfra underklasse eller underklasse er afledt.
- Underklasse er en klasse, der arver attributter (egenskaber) og metoder (adfærd) fra basisklassen.
Spørgsmål nr. 29) Understøttes operatøroverbelastning i Java?
Svar: Operatøroverbelastning understøttes ikke af Java, da
- Det får tolken til at lægge en større indsats for at forstå operatørens faktiske funktionalitet, der gør koden kompleks og vanskelig at kompilere.
- Operatøroverbelastning gør programmer mere udsatte for fejl.
- Funktionen ved operatøroverbelastning kan dog opnås ved metodeoverbelastning på en enkel, klar og fejlfri måde.
Spørgsmål nr. 30) Når den færdige metode anvendes?
Svar: færdiggør metoden kaldes lige før genstanden er ved at blive indsamlet skrald. Denne metode tilsidesætter for at minimere hukommelseslækage, foretage oprydningsaktiviteter ved at fjerne systemressourcer.
Q # 31) Forklar om poletter.
Svar: Tokens i Java-programmet er de mindste elementer, som compileren genkender. Identifikatorer, nøgleord, bogstaver, operatorer og separatorer er eksempler på tokens.
Konklusion
Objektorienterede programmeringskoncepter er en integreret del for udviklere, automatisering såvel som manuelle testere, der designer rammer for automatiseringstest for at teste en applikation eller udvikle applikationer med Java-programmeringssprog.
Dybtgående forståelse er obligatorisk for alle objektorienterede funktioner som klasse, objekt, abstraktion, indkapsling, arv, polymorfisme og anvendelse af disse begreber i et programmeringssprog som Java for at nå kundens krav.
Vi har forsøgt at dække de vigtigste objektorienterede spørgsmål til programmeringsinterview og givet passende svar med eksempler.
Vi ønsker dig alt det bedste til dit kommende interview!
Anbefalet læsning
- OOP Java: Introduktion til objektorienteret programmering i Java
- Top 20 Java Interview-programmer til programmering og kodning af interviews
- Top 50+ Core Java Interview-spørgsmål og svar
- Java-interface og abstrakt klasseundervisning med eksempler
- Indkapsling i Java: Komplet vejledning med eksempler
- Hvad er abstraktion i Java - lær med eksempler
- OOPS-koncepter i C #: Objektorienteret tutorial til programmeringskoncept
- Python OOP-koncepter (Python-klasser, objekter og arv)