14 Întrebări și răspunsuri frecvente la interviu Java [2022]

Te pregătești pentru un interviu Java care îți poate deschide ușa către jobul mult visat? Iată o selecție de întrebări și răspunsuri specifice interviurilor Java, menite să îți ofere un avantaj în procesul de selecție.

În 1991, James Gosling a conceput limbajul Java, un limbaj performant care se bazează pe principiile programării orientate pe obiecte. Acesta se situează printre cele mai folosite și apreciate limbaje de programare. Atât cei care pășesc în lumea programării, cât și dezvoltatorii de software cu experiență, îl consideră o opțiune excelentă pentru dezvoltarea carierei lor.

Java este strâns legat de concepte precum clasa, moștenirea, JSON, iterator, enumerare, variabile volatile, tranzitorii, hibernare, tunel HTTP și clasa abstractă. Sintaxa sa se inspiră din limbajele de programare C și C++. Este esențial să fii familiarizat cu întrebările cheie pe care intervievatorii le pot adresa.

Pentru a sprijini dezvoltatorii Java, am compilat o listă de întrebări și răspunsuri relevante pentru interviuri:

Java este un limbaj orientat exclusiv pe obiecte? Argumentează răspunsul.

Nu, Java nu este un limbaj orientat în întregime pe obiecte. Acesta include tipuri de date primitive, precum short, byte, double, float, long, char, boolean etc., care nu sunt considerate obiecte. Cu toate acestea, respectă majoritatea aspectelor programării orientate pe obiecte.

De ce este Java popular ca limbaj independent de platformă?

Limbajul de programare Java nu este dependent de niciun sistem software sau hardware specific, datorită compilatorului și a mediului de execuție (JRE). Compilatorul Java transformă codul sursă în bytecode (independent de platformă). Această caracteristică permite rularea codului pe diverse sisteme, ceea ce îi conferă o popularitate extinsă.

Care este diferența dintre JDK, JRE și JVM?

Java Development Kit (JDK) Java Runtime Environment (JRE) Java Virtual Machine (JVM)
JDK este instrumentul necesar pentru scrierea, compilarea și pregătirea pachetelor de programe Java. JRE este utilizat pentru a executa codul bytecode Java. JVM este o mașină virtuală care oferă un mediu de rulare pentru codul bytecode Java.
Include unelte de dezvoltare și un JRE. JVM este implementată și poate exista fizic, incluzând implementarea, specificațiile și instanțele de rulare.
Conține fișiere și biblioteci, facilitând utilizarea JVM. JVM implementează platforme Java Standard Edition, Micro Edition și Enterprise Edition. Efectuează execuția, verificarea și încărcarea codului.

Descrieți specificatorii de acces pentru clasele Java.

Specificatorul de acces este cuvântul cheie plasat înaintea numelui unei clase. Acesta specifică gradul de accesibilitate folosind diferite tipuri:

  • Protected – Permite accesul la câmpuri și metode în interiorul aceleiași clase și a aceluiași pachet (inclusiv subclase), dar nu din alte clase.
  • Private – Accesul este limitat la câmpurile și metodele din interiorul clasei în care sunt definite.
  • Public – Câmpurile, metodele și clasa sunt accesibile în întregul cod.
  • Default – Clasa, câmpul sau metoda sunt accesibile în interiorul aceluiași pachet, dar nu și în afara acestuia.

Care este diferența dintre o variabilă locală și o variabilă de instanță?

Variabilă locală – Aceste variabile sunt definite într-un constructor, o funcție sau un bloc și sunt accesibile exclusiv în interiorul lor. Domeniul de vizibilitate este strict limitat la blocul respectiv. Alte metode din clasă nu pot accesa sau identifica o variabilă locală definită într-o altă metodă.

Variabilă de instanță – Aceste variabile sunt accesibile de către toate metodele din clasă, fiind definite în afara metodelor. Ele reflectă caracteristicile obiectului. Modificările afectează doar instanța curentă, fără a influența alte instanțe ale clasei.

Ce este un compilator JIT?

Compilatorul Just In Time (JIT) este folosit pentru a optimiza performanța unei aplicații care a compilat bytecode-ul, reducând timpul de execuție. Acesta traduce codul din JVM în setul de instrucțiuni al procesorului.

Definiți clasa singleton într-o singură frază.

Este un tip de clasă care garantează că se creează o singură instanță sau obiect în orice moment.

Ce înseamnă clonarea obiectelor?

Clonarea obiectelor reprezintă procesul de creare a unei copii identice a unui obiect Java, permițând dezvoltatorilor să o utilizeze ulterior. În Java, se folosește metoda clone() din interfața java.lang.Cloneable.

Explicați rolul constructorilor.

Constructorii sunt blocuri de cod care inițializează un obiect, având același nume ca și clasa. Constructorul se execută automat la crearea unui obiect și nu returnează nicio valoare. Există două tipuri de constructori:

  • Constructor parametrizat – Acesta permite inițializarea variabilelor de instanță utilizând valorile specificate în argumente.
  • Constructor implicit – Acesta este un constructor implicit, fără argumente, care inițializează variabilele de instanță. Dacă nu este definit explicit niciun alt constructor, acesta va fi utilizat.

Care este diferența dintre == și equals() în Java?

Operatorul de egalitate (==) este un operator binar care compară obiecte și tipuri primitive în Java. Metoda equals() este moștenită din clasa Object și este definită ca public boolean equals(Object o). În timp ce operatorul == compară referințele obiectelor, metoda equals() verifică egalitatea conținutului a două obiecte, conform logicii de afaceri definite de clasa respectivă.

Comparați TreeSet cu HashSet.

TreeSet HashSet
Menține elementele în ordine sortată. Nu menține elementele în ordine sortată.
Permite obiecte eterogene, dacă acestea sunt comparabile. Nu permite obiecte eterogene.
Implementează interfața SortedSet folosind arbori pentru stocarea datelor. Se bazează pe un tabel hash.

Explicați inițializarea cu acolade duble.

În Java, inițializarea cu acolade duble combină două procese: crearea unei clase interioare anonime și un bloc de inițializare. Cuvântul cheie „this” permite clasei interioare să se refere la clasa exterioară, utilizând ambele mecanisme într-o singură instrucțiune, atât pentru inițializare, cât și pentru instanțiere.

Ce este String Pool în Java?

String Pool este o zonă specială din memoria heap, unde sunt stocate șirurile de caractere în Java. Când se creează un nou obiect de tip String, String Pool verifică dacă există deja un obiect cu aceeași valoare. Dacă da, returnează referința către acel obiect; altfel, creează un nou obiect și returnează referința corespunzătoare.

Ce reprezintă clasa Collection în Java?

Clasa Collection reprezintă o structură fundamentală, un cadru care facilitează manipularea și organizarea colecțiilor de obiecte. Colecția oferă metode pentru operații precum ștergerea, căutarea, manipularea, sortarea, editarea, inserarea, etc., folosind clase, interfețe și metode.

Concluzii

Java se remarcă ca un limbaj de programare de top, datorită bibliotecilor sale standard, instrumentelor puternice și suportului extins pentru diverse probleme, inclusiv cele de concurență. Caracteristicile sale încorporate, împreună cu sintaxa sa intuitivă, contribuie la stabilitatea produselor bazate pe Java.

Pentru a-ți perfecționa abilitățile Java, poți lua în considerare înscrierea la un curs online specializat.