top 30 oops interview questions
Acest tutorial oferă un set complet de întrebări și răspunsuri la intervievarea programării orientate pe obiecte (OOP):
Dezvoltarea software-ului are aproximativ 70 de ani de istorie în care au fost inventate diferite limbi precum FORTRAN, Pascal, C, C ++. Au existat o serie de afirmații care acționează ca comenzi date hardware-ului pentru a efectua unele calcule matematice de bază, făcând limbaje procedurale pentru proiectarea diverselor aplicații software.
Odată cu inventarea internetului, limbaje sigure, stabile și independente de platformă și robuste au fost necesare în proiectarea aplicațiilor complexe.
Programarea orientată pe obiecte este independentă de platformă, portabilă, securizată și echipată cu diverse concepte precum încapsularea, abstractizarea, moștenirea și polimorfismul.
Avantajele OOPS sunt reutilizarea, extensibilitatea și modularitatea care îmbunătățesc productivitatea, mai ușor de întreținut datorită modularității, costul de dezvoltare mai rapid și mai redus datorită reutilizării codului, produce aplicații securizate și de înaltă calitate.
Ce veți învăța:
Concepte de programare de bază orientate pe obiecte
Programarea orientată pe obiecte implică obiecte intelectuale, date și comportament asociat cu acestea pentru a aduce soluții la problemele de afaceri. În limbajul de programare Java, pentru a proiecta soluții pentru probleme de afaceri, dezvoltatorii aplică concepte precum abstractizare, încapsulare, moștenire și polimorfism.
Diverse concepte precum Abstracție care ignoră detaliile irelevante, Incapsularea care se concentrează asupra a ceea ce este necesar, fără a dezvălui complexități în ceea ce privește funcționalitățile interne, Moştenire să moștenească proprietățile clasei părinte sau să implementeze mai multe moșteniri utilizând o interfață și Polimorfism care extinde proprietățile de supraîncărcare a metodei (polimorfism static) și suprascrierea metodei (polimorfism dinamic).
Cele mai frecvente întrebări de interviu OOPS
Q # 1) Explicați pe scurt ce înțelegeți prin programare orientată pe obiecte în Java?
Răspuns: OOP se ocupă de obiecte, cum ar fi entități din viața reală, cum ar fi stilou, telefon mobil, cont bancar care are stare (date) și comportament (metode).
Cu ajutorul accesului, accesul specificatorilor la aceste date și metode este asigurat. Conceptele de încapsulare și abstractizare oferă ascunderea datelor și accesul la elementele esențiale, moștenirea și polimorfismul ajută la refolosirea codului și supraîncărcarea / suprascrierea metodelor și constructorilor, făcând aplicațiile independente de platformă, securizate și robuste folosind limbaje precum Java.
Q # 2) Explicați Java este un limbaj pur orientat pe obiecte?
Răspuns: Java nu este un limbaj de programare complet pur orientat pe obiecte. Următoarele sunt motivele:
- Java acceptă și utilizează tipuri de date primitive, cum ar fi int, float, double, char etc.
- Tipurile de date primitive sunt stocate ca variabile sau în stivă în loc de heap.
- În Java, metodele statice pot accesa variabilele statice fără a utiliza un obiect, contrar conceptelor orientate obiect.
Q # 3) Descrieți clasa și obiectul în Java?
Răspuns: Clasa și obiectul joacă un rol integral în limbajele de programare orientate pe obiecte, cum ar fi Java.
- Clasa este un prototip sau un șablon care are starea și comportamentul susținut de un obiect și utilizat în crearea obiectelor.
- Obiectul este o instanță a clasei, de exemplu, Omul este o clasă cu starea ca având un sistem vertebral, creier, culoare și înălțime și are un comportament precum canThink (), capableToSpeak () etc.
Q # 4) Care sunt diferențele dintre clasă și obiecte în Java?
Răspuns: Următoarele sunt câteva diferențe majore între clasă și obiecte în Java:
Clasă | Obiect |
---|---|
Exemple din clasa reală pot fi • O rețetă pentru prepararea mâncării. • Amprente albastre pentru un motor de automobile. | Exemple de obiecte din viața reală pot fi • Un aliment preparat din rețetă. • Motor construit conform planurilor albastre. |
Clasa este o entitate logică | Obiectul este entitate fizică |
Clasa este un șablon din care poate fi creat obiectul | Obiectul este o instanță a clasei |
Clasa este un prototip care are starea și comportamentul obiectelor similare | Obiectele sunt entități care există în viața reală, cum ar fi mobil, mouse sau obiecte intelectuale, cum ar fi contul bancar |
Clasa este declarată cu cuvântul cheie de clasă, cum ar fi clasa Classname {} | Obiectul este creat printr-un cuvânt cheie nou ca Employee emp = new Employee (); |
În timpul creării clasei, nu există alocare de memorie | În timpul creării obiectului, memoria este alocată obiectului |
Există doar o singură clasă care este definită folosind cuvântul cheie de clasă | Crearea obiectelor se poate face în mai multe moduri, cum ar fi utilizarea cuvântului cheie nou, metoda newInstance (), clona () și metoda fabrică. |
Q # 5) De ce este nevoie de programare orientată pe obiecte?
Răspuns: OOP oferă specificatori de acces și caracteristici de ascundere a datelor pentru mai multă securitate și control al accesului la date, supraîncărcarea poate fi realizată cu funcția și supraîncărcarea operatorului, reutilizarea codului este posibilă deoarece obiectele deja create într-un singur program pot fi utilizate în alte programe.
Redundanța datelor, întreținerea codului, securitatea datelor și avantajul conceptelor precum încapsularea, abstractizarea, polimorfismul și moștenirea în programarea orientată obiect oferă un avantaj față de limbajele de programare procedurale utilizate anterior.
Q # 6) Explicați abstractizarea cu un exemplu în timp real.
Răspuns: Abstracția în programarea orientată pe obiecte înseamnă ascunderea internelor complexe, dar expunerea doar a caracteristicilor și comportamentului esențial în ceea ce privește contextul. În viața reală, un exemplu de abstractizare este un coș de cumpărături online, să zicem la orice site de comerț electronic. După ce selectați un produs și comandați o carte, sunteți doar interesat să primiți produsul la timp.
Nu te interesează cum se întâmplă lucrurile, deoarece este complex și ținut ascuns. Aceasta este cunoscută sub numele de abstractizare. În mod similar, luați exemplul bancomatului, complexitatea internelor privind modul în care sunt debitați banii din contul dvs. este păstrată ascunsă și primiți bani prin intermediul unei rețele. În mod similar pentru mașini, modul în care benzina face ca motorul să funcționeze este extrem de complex.
Q # 7) Dați câteva exemple în timp real și explicați Moștenirea.
Răspuns: Moștenire înseamnă o clasă (subclasă) care dobândește proprietăți ale altei clase (superclasă) prin moștenire. În viața reală, luați un exemplu de moștenire a unei biciclete normale în care este o clasă părinte, iar o bicicletă sportivă poate fi o clasă pentru copii, în care bicicleta sportivă a moștenit proprietățile și comportamentul roților rotative cu pedale prin intermediul treptelor de viteze, pe ale unei biciclete normale.
Q # 8) Cum funcționează polimorfismul în Java, explicați cu exemple din viața reală?
Răspuns: Polimorfismul este o abilitate de a avea mai multe forme sau capacitatea metodei de a face lucruri diferite. În viața reală, aceeași persoană care îndeplinește sarcini diferite se comportă diferit. În birou este angajat, acasă, este tată, în timpul sau după școlarizarea școlii este student, la sfârșit de săptămână joacă la cricket și este jucător la locul de joacă.
cum se deschide extensia de fișier json
În Java, există două tipuri de polimorfism
- Timp de compilare polimorfism: Acest lucru se realizează prin supraîncărcarea metodei sau supraîncărcarea operatorului.
- Polimorfismul de rulare: Acest lucru se realizează prin suprasolicitarea metodei.
Q # 9) Câte tipuri de moștenire sunt prezente?
Răspuns: Diferite tipuri de moștenire sunt enumerate mai jos:
- Moștenirea unică: Clasa copil unic moștenește caracteristicile clasei monoparentale.
- Moștenirea multiplă: O clasă moștenește caracteristici ale mai multor clase de bază și nu este acceptată în Java, dar clasa poate implementa mai multe interfețe.
- Moștenirea pe mai multe niveluri: O clasă poate moșteni dintr-o clasă derivată, ceea ce o face o clasă de bază pentru o nouă clasă, de exemplu, un copil moștenește comportamentul de la tatăl său, iar tatăl a moștenit caracteristici de la tatăl său.
- Moștenirea ierarhică: O clasă este moștenită de mai multe subclase.
- Moștenirea hibridă: Aceasta este o combinație de moșteniri unice și multiple.
Q # 10) Ce este interfața?
Răspuns: Interfața este similară clasei în care poate avea metode și variabile, dar metodele sale nu au un corp, ci doar o semnătură cunoscută sub numele de metodă abstractă. Variabilele declarate în interfață pot avea în mod implicit publice, statice și finale. Interfața este utilizată în Java pentru abstracție și moșteniri multiple, unde clasa poate implementa mai multe interfețe.
Q # 11) Puteți explica avantajele Abstracției și Moștenirii?
Răspuns: Abstracția dezvăluie utilizatorului doar detalii esențiale și ignoră sau ascunde detalii irelevante sau complexe. Cu alte cuvinte, abstractizarea datelor expune interfața și ascunde detaliile implementării. Java efectuează abstractizarea cu ajutorul interfețelor și a claselor abstracte. Avantajul abstractizării este că simplifică vizualizarea lucrurilor prin reducerea sau ascunderea complexității implementării.
Duplicarea codului este evitată și crește reutilizarea codului. Numai detaliile esențiale sunt dezvăluite utilizatorului și îmbunătățesc securitatea aplicației.
Moștenirea este locul în care clasa copil moștenește funcționalitatea (comportamentul) clasei părinte. Nu trebuie să scriem cod odată scris în clasa părinte pentru funcționalitate din nou în clasa copil și astfel facilităm reutilizarea codului. Codul devine și el lizibil. Moștenirea este utilizată acolo unde există o „relație”. Exemplu: Hyundai este un masina SAU MS Word este un software.
Q # 12) Care este diferența dintre extensii și instrumente?
Răspuns: Atât extinde cât și implementează cuvântul cheie sunt utilizate pentru moștenire, dar în moduri diferite.
Diferențele dintre cuvintele cheie Extends și Implements în Java sunt explicate mai jos:
Se extinde | Instrumente |
---|---|
O clasă poate extinde o altă clasă (copilul care extinde părintele prin moștenirea caracteristicilor sale). Interfața moștenește (folosind cuvântul cheie extinde) o altă interfață. | O clasă poate implementa o interfață |
Subclasa care extinde superclasa nu poate suprascrie toate metodele superclaselor | Interfața de implementare a clasei trebuie să implementeze toate metodele interfeței. |
Clasa poate extinde doar o singură super-clasă. | Class poate implementa orice număr de interfețe. |
Interfața poate extinde mai multe interfețe. | Interfața nu poate implementa nicio altă interfață. |
Sintaxă: clasa Copil extinde clasa Părinte | Sintaxă: Clasa Hybrid implementează Rose |
Q # 13) Care sunt diferiții modificatori de acces în Java?
Răspuns: Modificatorii de acces în Java controlează domeniul de acces al clasei, constructorului, variabilei, metodei sau membrului de date. Diferite tipuri de modificatori de acces sunt după cum urmează:
- Modificator de acces implicit nu are membri de date, clasă și metode de specificare a accesului și sunt accesibile în cadrul aceluiași pachet.
- Modificatori de acces privat sunt marcate cu cuvântul cheie private și sunt accesibile numai în cadrul clasei și nici măcar accesibile de clasă din același pachet.
- Modificatori de acces protejat poate fi accesibil în cadrul aceluiași pachet sau subclase din pachete diferite.
- Modificatori de acces public sunt accesibile de pretutindeni.
Q # 14) Explicați diferența dintre clasa abstractă și metodă?
Răspuns: Iată câteva diferențe între clasa abstractă și metoda abstractă în Java:
Clasa abstractă | Metoda abstractă |
---|---|
Obiectul nu poate fi creat din clasa abstractă. | Metoda abstractă are o semnătură, dar nu are un corp. |
Subclasa a creat sau moștenește clasa abstractă pentru a accesa membrii clasei abstracte. | Este obligatoriu să suprascrieți metodele abstracte de super-clasă din subclasa lor. |
Clasa de abstract poate conține metode abstracte sau metode non-abstracte. | Clasa care conține metoda abstractă trebuie făcută clasă abstractă. |
Q # 15) Care sunt diferențele dintre metodă și constructor?
Răspuns: Următoarele sunt diferențele dintre constructori și metode în Java:
Constructori | Metode |
---|---|
Numele constructorilor trebuie să se potrivească cu cel al clasei. | Metodele nu trebuie să aibă același nume ca numele clasei. |
Acestea sunt folosite pentru a crea, inițializa și aloca memoria obiectului. | Metodele sunt folosite pentru a executa anumite declarații scrise în interiorul lor. |
Constructorii sunt invitați implicit de sistem ori de câte ori sunt create obiecte. | Metodele sunt invocate atunci când este apelată. |
Acestea sunt invocate folosind un cuvânt cheie nou în timp ce se creează o instanță a clasei (obiectului). | Metodele sunt invocate în timpul executării programului. |
Constructorul nu are tip return. | Metoda are un tip de returnare. |
Constructorul nu poate fi moștenit de subclasă. | Metodele pot fi moștenite de o subclasă. |
Q # 16) Ce este un constructor în Java?
Răspuns: Constructor este o metodă fără un tip return și are numele său la fel ca numele clasei. Când creăm un obiect, un constructor implicit alocă memorie pentru un obiect în timpul compilării codului Java. Constructorii sunt utilizați pentru inițializarea obiectelor și stabilirea valorilor inițiale pentru atributele obiectului.
Q # 17) Câte tipuri de constructori pot fi folosiți în Java? Te rog explica.
Răspuns: În principiu, există trei tipuri de constructori în Java.
Acestea sunt:
- Constructor implicit: Acest constructor nu are niciun parametru și invocă de fiecare dată când creați o instanță a unei clase (obiect). Dacă o clasă este un angajat, atunci sintaxa constructorului implicit va fi Employee ().
- Constructor fără argumente: După cum sugerează și numele, un constructor fără niciun argument este numit un constructor fără argumente.
- Constructor parametrizat: Constructorul cu un număr de parametri se numește constructor parametrizat. Vi se cere să furnizați argumente, adică valori inițiale cu privire la tipul de date al parametrilor din acel constructor.
Q # 18) De ce este folosit un nou cuvânt cheie în Java?
Răspuns: Când creăm o instanță de clasă, adică obiecte, folosim cuvântul cheie Java nou . Alocă memorie în zona heap unde JVM rezervă spațiu pentru un obiect. Pe plan intern, invocă și constructorul implicit.
Sintaxă:
Class_name obj = new Class_name();
Q # 19) Când folosiți super-cuvântul cheie?
Răspuns: Super este un cuvânt cheie Java utilizat pentru identificarea sau trimiterea clasei părinte (bază).
- Putem folosi super pentru a accesa constructorul super clasei și pentru a apela metodele super clasei.
- Când numele metodelor sunt aceleași în superclasă și subclasă, pentru a face referire la superclasă, super este folosit cuvântul cheie.
- Pentru a accesa datele cu același nume, membrii clasei părinte atunci când sunt prezenți în clasa părinte și copil.
- Super poate fi folosit pentru a efectua un apel explicit către no-arg și constructori parametrați ai clasei părinte.
- Accesul la metoda clasei părinte se poate face folosind super , când clasa copil are metoda anulată.
Q # 20) Când utilizați acest cuvânt cheie?
Răspuns: acest cuvântul cheie în Java se referă la obiectul curent din constructor sau din metodă.
- Când atributele de clasă și constructorii parametrizați au ambele același nume, acest este folosit cuvântul cheie.
- Cuvinte cheie acest invocă constructorul clasei curente, metoda clasei curente, returnează obiectul clasei curente, trece un argument în constructor și apelează metoda.
Q # 21) Care este diferența dintre Runtime și polimorfismul în timp de compilare?
Răspuns: Atât polimorfismul în timp de rulare, cât și cel de compilare sunt două tipuri diferite de polimorfism. Diferențele lor sunt explicate mai jos:
Compilați polimorfismul în timp | Polimorfism de rulare |
---|---|
Apelul este rezolvat de un compilator în polimorfism în timp de compilare. | Apelul nu este rezolvat de compilator în polimorfismul de execuție. |
Este, de asemenea, cunoscut sub numele de legare statică și supraîncărcare a metodei. | Este, de asemenea, cunoscut sub numele de dinamică, tardivă și suprascriere a metodelor. |
Metodele cu același nume cu parametri diferiți sau metode cu aceeași semnătură și diferite tipuri de returnare sunt polimorfismul de compilare. | Metoda cu același nume cu aceiași parametri sau semnătură asociată în clase diferite se numește metoda suprascriere. |
Se realizează prin supraîncărcarea funcției și a operatorului. | Poate fi realizat prin pointeri și funcții virtuale. |
Deoarece toate lucrurile sunt executate la compilare. polimorfismul în timpul compilării este mai puțin flexibil. | Pe măsură ce lucrurile se execută în timpul rulării, polimorfismul în timpul rulării este mai flexibil. |
Q # 22) Ce caracteristici orientate obiect sunt folosite în Java?
Răspuns: Un concept de utilizare a unui obiect în limbajul de programare Java beneficiază de utilizarea unor concepte orientate obiect, cum ar fi încapsularea pentru a lega împreună starea și comportamentul unui obiect, asigură accesul la date cu specificatori de acces, caracteristici precum abstractizarea în ascunderea informațiilor, moștenirea pentru a extinde starea , și comportamentul claselor de bază față de clasele copil, timp de compilare și polimorfism de rulare pentru supraîncărcarea metodei și respectiv suprascrierea metodei.
Q # 23) Ce este supraîncărcarea metodei?
Răspuns: Când două sau mai multe metode cu același nume au fie un număr diferit de parametri, fie diferite tipuri de parametri, aceste metode pot avea sau nu diferite tipuri de returnare, atunci acestea sunt metode supraîncărcate, iar caracteristica este supraîncărcarea metodelor. Supraîncărcarea metodei se mai numește polimorfism în timp de compilare.
Q # 24) Ce este metoda suprascriere?
Răspuns: Când o metodă de subclasă (derivată, clasă copil) are același nume, parametri (semnătură) și același tip de returnare ca metoda din superclasa sa (bază, clasă părinte), atunci se spune că metoda din subclasă este suprascrisă metoda din superclasă. Această caracteristică este, de asemenea, cunoscută sub numele de polimorfism de execuție.
Q # 25) Explicați supraîncărcarea constructorului.
Răspuns: Mai mulți constructori având parametri diferiți, astfel încât să poată fi efectuate sarcini diferite cu fiecare constructor, este cunoscut sub numele de suprasarcină a constructorului. Cu supraîncărcarea constructorului, obiectele pot fi create în moduri diferite. Diverse clase de colecție în API Java sunt exemple de supraîncărcare a constructorului.
Q # 26) Ce tipuri de argumente pot fi utilizate în Java?
Răspuns: Pentru metodele și funcțiile Java, datele parametrilor pot fi trimise și primite în diferite moduri. Dacă metoda B () este apelată din metoda A (), metoda A () este o funcție de apelant și metoda B () se numește funcție, argumentele trimise de metoda A () sunt argumente reale și parametrii metodei B () sunt numite argumente formale.
- Apel după valoare: Modificările aduse parametrului formal (parametrii metodei B ()) nu sunt trimise înapoi către apelant (metoda A ()), această metodă se numește apel după valoare . Java acceptă apelul în funcție de valoare.
- Apelați prin referință: Modificările aduse parametrului formal (parametrii metodei B ()) sunt trimise înapoi către apelant (parametrii metodei B ()).
- Orice modificare a parametrilor formali (parametrii metodei B ()) se reflectă în parametrii reali (argumentele trimise de metoda A ()). Aceasta se numește apel prin referință.
Q # 27) Diferențați legarea statică și legarea dinamică?
Răspuns: Diferențele dintre legarea statică și dinamică sunt explicate în tabelul de mai jos.
Legare statică | Legare dinamică |
---|---|
Legarea statică în Java folosește tipul de câmpuri și clasa la ca rezoluție. | Legarea dinamică în Java folosește obiectul pentru rezolvarea legării. |
Supraîncărcarea metodei este un exemplu de legare statică. | Anularea metodei este un exemplu de legare dinamică. |
Legarea statică se rezolvă la momentul compilării. | Legarea dinamică se rezolvă în timpul rulării. |
Metodele și variabilele care utilizează legarea statică sunt tipuri private, finale și statice. | Metodele virtuale utilizează legarea dinamică. |
Q # 28) Puteți explica clasa de bază, subclasa și superclasa?
Răspuns: Clasa de bază, subclasa și superclasa în Java sunt explicate după cum urmează:
introduceți nodul în arborele binar java
- Clasa de bază sau clasa părinte este o super clasă și este o clasă din care derivă subclasa sau clasa copil.
- Subclasa este o clasă care moștenește atribute (proprietăți) și metode (comportament) din clasa de bază.
Î. # 29) Supraîncărcarea operatorului este acceptată în Java?
Răspuns: Supraîncărcarea operatorului nu este acceptată de Java, deoarece,
- Face ca interpretul să depună mai mult efort pentru a înțelege funcționalitatea reală a operatorului, ceea ce face codul complex și dificil de compilat.
- Supraîncărcarea operatorului face programele mai predispuse la erori.
- Cu toate acestea, caracteristica supraîncărcării operatorului poate fi realizată prin supraîncărcarea metodelor într-un mod simplu, clar și fără erori.
Q # 30) Când se utilizează metoda de finalizare?
Răspuns: finaliza metoda este numită chiar înainte ca obiectul să fie colectat. Această metodă suprascrie pentru a minimiza scurgerile de memorie, întreprinde activități de curățare prin eliminarea resurselor sistemului.
Q # 31) Explicați despre jetoane.
Răspuns: Jetoanele din programul Java sunt cele mai mici elemente pe care compilatorul le recunoaște. Identificatorii, cuvintele cheie, literele, operatorii și separatorii sunt exemple de jetoane.
Concluzie
Conceptele de programare orientate obiect sunt o parte integrantă pentru dezvoltatori, automatizări, precum și testere manuale care proiectează cadrul de testare a automatizării pentru a testa o aplicație sau a dezvolta aplicații cu limbaj de programare Java.
Înțelegerea aprofundată este obligatorie pentru toate caracteristicile orientate obiect, cum ar fi clasa, obiectul, abstractizarea, încapsularea, moștenirea, polimorfismul și aplicarea acestor concepte într-un limbaj de programare precum Java pentru a atinge cerințele clienților.
Am încercat să acoperim cele mai importante întrebări de interviuri de programare orientată pe obiecte și am dat răspunsuri adecvate cu exemple.
Vă dorim tot binele pentru viitorul dvs. interviu!
Lectură recomandată
- OOP Java: Introducere în programarea orientată pe obiecte în Java
- Top 20 de programe de interviuri Java pentru interviu de programare și codificare
- Top 50+ Întrebări și răspunsuri de bază pentru interviuri Java
- Interfață Java și tutorial de clasă abstractă cu exemple
- Incapsulare în Java: Tutorial complet cu exemple
- Ce este abstractizarea în Java - Aflați cu exemple
- Concepte OOPS în C #: Tutorial Concept de programare orientată pe obiecte
- Concepte PyOP OOPs (clase Python, obiecte și moștenire)