top 30 oops interview questions
Den här självstudien ger en komplett uppsättning intervjufrågor och svar med vanliga frågor om objektorienterad programmering (OOP):
Mjukvaruutveckling har cirka 70 år i historia där olika språk som FORTRAN, Pascal, C, C ++ uppfanns. Det fanns en serie uttalanden som fungerar som kommandon till hårdvara för att utföra några grundläggande matematiska beräkningar, vilket gör procedurspråk för att utforma olika programvaruapplikationer.
Med uppfinningen av Internet behövdes säkra, stabila och plattformsoberoende och robusta språk för att utforma komplexa applikationer.
Objektorienterad programmering är plattformsoberoende, bärbar, säker och utrustad med olika begrepp som inkapsling, abstraktion, arv och polymorfism.
Fördelarna med OOPS är återanvändbarhet, töjbarhet och modularitet som förbättrar produktiviteten, är lättare att underhålla på grund av modularitet, snabbare och lägre utvecklingskostnad på grund av kodåteranvändning, producerar säkra applikationer av hög kvalitet.
Vad du kommer att lära dig:
Grundläggande objektorienterade programmeringskoncept
Objektorienterad programmering involverar intellektuella objekt, data och beteenden som är associerade med den för att ge lösningar på affärsproblem. I Java-programmeringsspråk, för att utforma lösningar för affärsproblem, använder utvecklare begrepp som abstraktion, inkapsling, arv och polymorfism.
Olika begrepp som Abstraktion som ignorerar irrelevanta detaljer, Inkapsling som fokuserar på vilket minimum som krävs utan att avslöja komplexitet över interna funktioner, Arv för att ärva egenskaperna för moderklassen eller implementera flera arv med hjälp av ett gränssnitt, och Polymorfism som utvidgar egenskaperna för metodöverbelastning (statisk polymorfism) och metodöverstyrning (dynamisk polymorfism).
Vanliga OOPS-intervjufrågor
F # 1) Förklara kortfattat vad menar du med objektorienterad programmering i Java?
Svar: OOP behandlar objekt, som verkliga enheter som penna, mobil, bankkonto som har tillstånd (data) och beteende (metoder).
Med hjälp av åtkomst säkerställs specifikatörers åtkomst till dessa data och metoder. Begrepp om inkapsling och abstraktion erbjuder döljande av data och tillgång till väsentligheter, arv och polymorfism hjälper till att återanvända koder och överbelastning / åsidosättande av metoder och konstruktörer, vilket gör applikationer plattformsoberoende, säker och robust med hjälp av språk som Java.
F # 2) Förklara Är Java ett rent objektorienterat språk?
Svar: Java är inte ett helt rent objektorienterat programmeringsspråk. Följande är anledningarna:
- Java stöder och använder primitiva datatyper som int, float, double, char, etc.
- Primitiva datatyper lagras som variabler eller på stacken istället för högen.
- I Java kan statiska metoder komma åt statiska variabler utan att använda ett objekt, i strid med objektorienterade begrepp.
F # 3) Beskriv klass och objekt i Java?
Svar: Klass och objekt spelar en integrerad roll i objektorienterade programmeringsspråk som Java.
- Klass är en prototyp eller en mall som har tillstånd och beteende som stöds av ett objekt och används i skapandet av objekt.
- Objektet är en förekomst av klassen, till exempel, Människan är en klass med tillståndet att ha ett ryggradssystem, hjärna, färg och höjd och har beteende som canThink (), ableToSpeak (), etc.
F # 4) Vilka är skillnaderna mellan klass och objekt i Java?
Svar: Nedan följer några stora skillnader mellan klass och objekt i Java:
Klass | Objekt |
---|---|
Verkliga exempel på klass kan vara en • Ett recept för att laga mat. • Blå tryck för en bilmotor. | Verkliga exempel på objekt kan vara • En mat tillagad efter recept. • Motor konstruerad enligt blåtryck. |
Klass är en logisk enhet | Objekt är fysisk enhet |
Klass är en mall från vilken objekt kan skapas | Objekt är en förekomst av klassen |
Klass är en prototyp som har tillstånd och beteende för liknande objekt | Objekt är enheter som finns i verkliga livet, såsom mobila, mus eller intellektuella objekt som bankkonto |
Klass deklareras med klassnyckelord som klass Klassnamn {} | Objekt skapas via nytt nyckelord som anställd emp = ny anställd (); |
Under klassskapandet finns det ingen fördelning av minne | Under skapandet av objekt allokeras minnet till objektet |
Det finns bara envägsklass definieras med hjälp av klassnyckelordet | Objektskapande kan göras på många sätt, till exempel genom att använda nytt nyckelord, newInstance () -metod, klon () och fabriksmetod. |
F # 5) Varför är ett behov av objektorienterad programmering?
Svar: OOP tillhandahåller åtkomstspecifikatorer och datadöljande funktioner för mer säkerhet och kontroll av datatillgång, överbelastning kan uppnås med funktion och operatörsöverbelastning, kodåteranvändning är möjlig eftersom redan skapade objekt i ett program kan användas i andra program.
Dataredundans, kodunderhåll, datasäkerhet och fördelar med begrepp som inkapsling, abstraktion, polymorfism och arv i objektorienterad programmering ger en fördel jämfört med tidigare använda procedurprogrammeringsspråk.
F # 6) Förklara abstraktion med ett realtidsexempel.
Svar: Abstraktion i objektorienterad programmering innebär att man gömmer komplexa interna delar, men att endast avslöja väsentliga egenskaper och beteende med avseende på sammanhang. I verkligheten är ett exempel på abstraktion en online kundvagn, säg på vilken e-handelsplats som helst. När du väl har valt en produkt och bokat är du bara intresserad av att få din produkt i tid.
Hur saker händer är inte vad du är intresserad av, eftersom det är komplext och hålls gömt. Detta kallas abstraktion. På samma sätt tar du exemplet med ATM, komplexiteten hos internals för hur pengar debiteras från ditt konto hålls gömd och du får kontanter via ett nätverk. På samma sätt för bilar är det mycket komplicerat hur bensin får motorn att köra bilen.
F # 7) Ge några exempel i realtid och förklara Arv.
Svar: Arv betyder en klass (underklass) som förvärvar egenskaper hos en annan klass (superklass) genom arv. I det verkliga livet, ta ett exempel på arv av en vanlig cykel där det är en föräldraklass och en sportcykel kan vara en barnklass, där sportcykeln har ärvt egenskaper och beteende hos roterande hjul med pedaler via växlar som en vanlig cykel.
F # 8) Hur polymorfism fungerar i Java, förklara med exempel från verkliga livet?
Svar: Polymorfism är en förmåga att ha flera former eller förmåga hos metoden att göra olika saker. I verkligheten beter sig samma person som utför olika uppgifter olika. In-Office han är anställd, hemma, han är far, under eller efter skolundervisningen är han student, på helgerna spelar han cricket och är en spelare på lekplatsen.
php intervju fråga och svar för erfarenhet
I Java finns det två typer av polymorfism
- Kompileringstid polymorfism: Detta uppnås genom metodöverbelastning eller överbelastning av operatören.
- Runtime polymorfism: Detta uppnås genom metodöverstyrning.
F # 9) Hur många typer av arv finns?
Svar: Olika typer av arv listas nedan:
- Enstaka arv: Klass för ensamstående barn ärver egenskaperna hos ensamstående förälderklassen.
- Flera arv: En klass ärver funktioner i mer än en basklass och stöds inte i Java, men klassen kan implementera mer än ett gränssnitt.
- Arv på flera nivåer: En klass kan ärva från en härledd klass vilket gör den till en basklass för en ny klass, till exempel, ett barn ärver beteenden från sin far, och fadern har ärvt egenskaper från sin far.
- Hierarkisk arv: En klass ärvs av flera underklasser.
- Hybrid arv: Detta är en kombination av enstaka och flera arv.
F # 10) Vad är gränssnitt?
Svar: Gränssnittet liknar den klass där det kan ha metoder och variabler, men dess metoder har ingen kropp, bara en signatur som kallas den abstrakta metoden. Variabler som deklareras i gränssnittet kan ha offentliga, statiska och slutgiltiga som standard. Gränssnitt används i Java för abstraktion och flera arv, där klassen kan implementera flera gränssnitt.
F # 11) Kan du förklara fördelarna med abstraktion och arv?
Svar: Abstraktion avslöjar endast väsentliga detaljer för användaren och ignorerar eller döljer irrelevanta eller komplexa detaljer. Med andra ord exponerar dataabstraktionen gränssnittet och döljer information om implementeringen. Java utför abstraktion med hjälp av gränssnitt och abstrakta klasser. Fördelen med abstraktion är att det blir enkelt att se saker genom att minska eller dölja komplexiteten i implementeringen.
Duplicering av kod undviks och det ökar återanvändningen av koden. Endast väsentliga detaljer avslöjas för användaren och förbättrar applikationens säkerhet.
Arv är där barnklassen ärver funktionalitet (beteende) hos moderklassen. Vi behöver inte skriva kod en gång skriven i föräldraklassen för funktionalitet igen i underklassen och därmed göra det lättare att återanvända koden. Koden blir också läsbar. Arv används där det finns en ”relation”. Exempel: Hyundai är en bil ELLER MS Word är en programvara.
F # 12) Vad är skillnaden mellan förlängningar och redskap?
Svar: Nyckelordet både förlänger och implementerar används för arv men på olika sätt.
Skillnaderna mellan sökord förlänger och implementerar i Java förklaras nedan:
Förlänger | Redskap |
---|---|
En klass kan utöka en annan klass (barn som förlänger föräldern genom att ärva hans egenskaper). Gränssnitt ärver också (med hjälp av nyckelord utökar) ett annat gränssnitt. | En klass kan implementera ett gränssnitt |
Underklass som utökar superklass kanske inte åsidosätter alla superklassmetoder | Klassimplementeringsgränssnittet måste implementera alla metoder för gränssnittet. |
Klass kan bara förlänga en enda superklass. | Klass kan implementera valfritt antal gränssnitt. |
Gränssnittet kan utöka fler än ett gränssnitt. | Gränssnittet kan inte implementera något annat gränssnitt. |
Syntax: klass Barn utvidgar klass Förälder | Syntax: klass Hybridredskap Rose |
F # 13) Vad är olika åtkomstmodifierare i Java?
Svar: Åtkomstmodifierare i Java styr åtkomstområdet för klass, konstruktör, variabel, metod eller datamedlem. Olika typer av åtkomstmodifierare är som följer:
- Standardåtkomstmodifierare är utan åtkomstspecifikationsmedlemmar, klass och metoder och är tillgängliga inom samma paket.
- Modifierare för privat åtkomst är markerade med nyckelordet privat och är endast tillgängliga inom klassen och inte ens tillgängliga för klassen från samma paket.
- Skyddade åtkomstmodifierare kan nås inom samma paket eller underklasser från olika paket.
- Modifieringsmedel för allmänheten är tillgängliga överallt.
F # 14) Förklara skillnaden mellan abstrakt klass och metod?
Svar: Nedan följer några skillnader mellan abstrakt klass och abstrakt metod i Java:
Abstrakt klass | Abstrakt metod |
---|---|
Objekt kan inte skapas från abstraktklassen. | Abstrakt metod har en signatur men har ingen kropp. |
Underklass skapad eller ärv abstrakt klass för att få tillgång till medlemmar i abstrakt klass. | Det är obligatoriskt att åsidosätta superklassens abstrakta metoder i sin underklass. |
Abstrakt klass kan innehålla abstrakta metoder eller icke abstrakta metoder. | Klass som innehåller abstrakt metod bör göras abstrakt klass. |
F # 15) Vilka är skillnaderna mellan metod och konstruktör?
Svar: Följande är skillnaderna mellan konstruktörer och metoder i Java:
Konstruktörer | Metoder |
---|---|
Konstruktörens namn ska matcha det i klass. | Metoder bör inte ha samma namn som klassnamn. |
De används för att skapa, initialisera och allokera minne till objektet. | Metoder används för att utföra vissa uttalanden skrivna inuti dem. |
Konstruktörer åberopas implicit av systemet när objekt skapas. | Metoder åberopas när det anropas. |
De anropas med hjälp av ett nytt nyckelord när du skapar en instans av klassen (objekt). | Metoder anropas under programkörning. |
Konstruktören har inte returtyp. | Metoden har en returtyp. |
Konstruktören kan inte ärvas av underklassen. | Metoder kan ärvas av en underklass. |
F # 16) Vad är en konstruktör i Java?
Svar: Constructor är en metod utan returtyp och har samma namn som klassnamnet. När vi skapar ett objekt tilldelar en standardkonstruktör minne till ett objekt under kompilering av Java-kod. Konstruktörer används för att initialisera objekt och ställa in initialvärden för objektattribut.
F # 17) Hur många typer av konstruktörer kan användas i Java? Vänligen förklara.
Svar: Det finns i princip tre typer av konstruktörer i Java.
hur man skapar ny java-fil i förmörkelse
Dessa är:
- Standardkonstruktör: Den här konstruktören är utan någon parameter och anropar varje gång du skapar en instans av en klass (objekt). Om en klass är anställd är syntaxen för standardkonstruktören Anställd ().
- No-arg konstruktör: Som namnet antyder kallas en konstruktör utan argument någon konstruktör utan arg.
- Parameteriserad konstruktör: Konstruktör med ett antal parametrar kallas en parametrerad konstruktör. Du måste tillhandahålla argument, dvs. initialvärden med avseende på datatypen för parametrar i den konstruktören.
F # 18) Varför nytt nyckelord används i Java?
Svar: När vi skapar en förekomst av klass, dvs. objekt, använder vi Java-nyckelordet ny . Det tilldelar minne i högområdet där JVM reserverar utrymme för ett objekt. Internt åberopar den också standardkonstruktören.
Syntax:
Class_name obj = new Class_name();
F # 19) När använder du supernyckelordet?
Svar: Super är ett Java-nyckelord som används för att identifiera eller hänvisa överordnad (bas) klass.
- Vi kan använda super för att komma åt superklasskonstruktörer och anropsmetoder för superklassen.
- När metodnamn är desamma i superklass och underklass, för att referera till superklass, är super nyckelord används.
- För att komma åt samma namn data medlemmar i föräldraklassen när de är närvarande i föräldraklassen.
- Super kan användas för att ringa ett uttryckligt samtal till ingen arg och parametrerade konstruktörer i moderklassen.
- Föräldraklassmetodåtkomst kan göras med super , när barnklassen har åsidosatt metod.
F # 20) När använder du detta nyckelord?
Svar: detta nyckelord i Java hänvisar till det aktuella objektet i konstruktören eller i metoden.
- När klassattribut och parametrerade konstruktörer har samma namn, detta nyckelord används.
- Nyckelord detta åberopar den aktuella klasskonstruktören, metoden för den aktuella klassen, returnerar objektet för den aktuella klassen, skickar ett argument i konstruktorn och metodanropet.
F # 21) Vad är skillnaden mellan Runtime och kompil-time polymorfism?
Svar: Både körtid och sammanställningstidspolymorfism är två olika typer av polymorfism. Deras skillnader förklaras nedan:
Kompilera tidspolymorfism | Runtime polymorfism |
---|---|
Samtal löses av en kompilator i polymorfism med kompileringstid. | Samtalet löses inte av kompilatorn i polymorfism under körning. |
Det är också känt som statisk bindning och metodöverbelastning. | Det är också känt som dynamisk, sent och metodöverskridande. |
Metoder med samma namn med olika parametrar eller metoder med samma signatur och olika returtyper är sammanställningstidspolymorfism. | Samma namnsmetod med samma parametrar eller signatur associerad i olika klasser kallas metodöverstyrning. |
Det uppnås genom överbelastning av funktioner och förare. | Det kan uppnås med pekare och virtuella funktioner. |
Eftersom alla saker utförs vid sammanställningstid. kompileringstid polymorfism är mindre flexibel. | När saker körs vid körning är polymorfism under körning mer flexibel. |
F # 22) Vilka objektorienterade funktioner används i Java?
Svar: Ett begrepp att använda ett objekt i Java-programmeringsspråk drar nytta av användningen av objektorienterade begrepp som inkapsling för att binda ihop tillståndet och beteendet hos ett objekt, säkrar datatillgång med åtkomstspecifikatorer, funktioner som abstraktion i informationsgömning, arv för att utvidga tillstånd och beteende hos basklasser till barnklasser, sammanställningstid och körningspolymorfism för metodöverbelastning respektive metodöverstyrning.
F # 23) Vad är metodöverbelastning?
Svar: När två eller flera metoder med samma namn har antingen ett annat antal parametrar eller olika typer av parametrar, kan dessa metoder ha eller kanske inte ha olika returtyper, då är de överbelastade metoder och funktionen är metodöverbelastning. Metodöverbelastning kallas också polymorfism för kompileringstid.
F # 24) Vad är metodöverstyrande?
Svar: När en metod av underklass (härledd, underklass) har samma namn, parametrar (signatur) och samma returtyp som metoden i dess superklass (bas, överordnad klass) sägs metoden i underklassen åsidosättas metoden i superklassen. Denna funktion kallas också polymorfism för körning.
F # 25) Förklara konstruktionens överbelastning.
Svar: Mer än en konstruktör som har olika parametrar så att olika uppgifter kan utföras med varje konstruktör kallas konstruktöröverbelastning. Med konstruktöröverbelastning kan objekt skapas på olika sätt. Olika samlingsklasser i Java API är exempel på konstruktionsöverbelastning.
F # 26) Vilka typer av argument kan användas i Java?
Svar: För Java-metoder och funktioner kan parameterdata skickas och tas emot på olika sätt. Om metodB () anropas från metodA (), är metodA () en samtalsfunktion och metodB () kallas funktion, argument som skickas med metodA () är faktiska argument och parametrar för metodB () kallas formella argument.
- Ring efter värde: Ändringar gjorda i formell parameter (parametrar för metod B ()) skickas inte tillbaka till den som ringer (metod A ()). Den här metoden kallas ring efter värde . Java stöder samtalet efter värde.
- Ring efter referens: Ändringar gjorda i formell parameter (parametrar för metod B ()) skickas tillbaka till den som ringer (parametrar för metod B ()).
- Eventuella ändringar i formella parametrar (parametrar för metod B ()) återspeglas i faktiska parametrar (argument skickade av metod A ()). Detta kallas call by reference.
F # 27) Skiljer du mellan statisk och dynamisk bindning?
Svar: Skillnaderna mellan statisk och dynamisk bindning förklaras i nedanstående tabell.
Statisk bindning | Dynamisk bindning |
---|---|
Statisk bindning i Java använder typ av fält och klass till som en upplösning. | Dynamisk bindning i Java använder objekt för att lösa bindning. |
Metodöverbelastning är ett exempel på statisk bindning. | Metodöverstyrning är ett exempel på dynamisk bindning. |
Statisk bindning löses vid sammanställningstidpunkten. | Dynamisk bindning löses vid körning. |
Metoder och variabler som använder statisk bindning är privata, slutliga och statiska typer. | Virtuella metoder använder dynamisk bindning. |
F # 28) Kan du förklara basklass, underklass och superklass?
Svar: Basklass, underklass och superklass i Java förklaras enligt följande:
- Basklass eller föräldraklass är en superklass och är en klass från vilken underklass eller underklass härstammar.
- Underklass är en klass som ärver attribut (egenskaper) och metoder (beteende) från basklassen.
F # 29) Stöds överbelastning av operatörer i Java?
Svar: Operatörsöverbelastning stöds inte av Java,
- Det gör att tolkan lägger mer ansträngningar på att förstå den faktiska funktionaliteten hos operatören som gör kod komplex och svår att kompilera.
- Överbelastning av operatörer gör program mer felbenägna.
- Funktionen med överbelastning av operatören kan dock uppnås vid metodöverbelastning på ett enkelt, tydligt och felfritt sätt.
F # 30) När slutföringsmetoden används?
Svar: avsluta metoden kallas precis innan föremålet håller på att samlas in. Denna metod åsidosätter för att minimera minnesläckage, genomföra rengöringsaktiviteter genom att ta bort systemresurser.
F # 31) Förklara om poletter.
Svar: Tokens i Java-programmet är de minsta elementen som kompilatorn känner igen. Identifierare, nyckelord, bokstäver, operatorer och separatorer är exempel på tokens.
Slutsats
Objektorienterade programmeringskoncept är en integrerad del för utvecklare, automatisering såväl som manuella testare som utformar ramverk för automatiseringstestning för att testa en applikation eller utveckla applikationer med Java-programmeringsspråk.
Fördjupad förståelse är obligatorisk för alla objektorienterade funktioner som klass, objekt, abstraktion, inkapsling, arv, polymorfism och att använda dessa begrepp på ett programmeringsspråk som Java för att uppnå kundernas krav.
Vi har försökt täcka de viktigaste objektorienterade frågorna om programmeringsintervjuer och gett lämpliga svar med exempel.
Vi önskar dig all lycka till din kommande intervju!
Rekommenderad läsning
- OOP Java: Introduktion till objektorienterad programmering i Java
- Topp 20 Java-intervjuprogram för programmering och kodningsintervju
- Topp 50+ Core-intervjufrågor och svar
- Java-gränssnitt och abstrakt klasshandledning med exempel
- Inkapsling i Java: Komplett handledning med exempel
- Vad är abstraktion i Java - lär dig med exempel
- OOPS Concepts In C #: Object Oriented Programming Concept Tutorial
- Python OOP-begrepp (Python-klasser, objekt och arv)