Întrebări și răspunsuri la interviu Java în 2022

Publicat: 2022-08-03

Esti programator? Și ați ales limbajul de programare Java ca nișă preferată pentru a vă construi o carieră? Felicitări! Ai ales corect. Potrivit statisticilor, un programator din SUA câștigă în medie 105.801 USD anual. Aceasta este o medie de 50,87 USD pe oră, 2.035 USD pe săptămână și 8.817 USD pe lună. Nu este impresionant?

Dar a obține o șansă să obții jobul de vis ca programator Java este dincolo de dorințe. Din cei 8 milioane de programatori Java la nivel global, doar aproximativ 56.585 sunt angajați remunerați în SUA, ceea ce face căutarea de locuri de muncă ca programator Java destul de competitivă. Dacă trebuie să obții acel job de vis, trebuie să fii bine echipat atât în ​​ceea ce privește aspectele de bază, cât și cele complexe ale limbajului de programare Java.

Acum știți cât de competitivă este obținerea unui loc de muncă ca programator Java și cerința pentru a fi eligibil pentru a fi printre puținii pentru a obține un loc de muncă ca programator Java. Amintiți-vă, succesul este o funcție a pregătirii pentru întâlnirea oportunităților. Pe măsură ce avansăm, am conceput un ghid de întrebări și răspunsuri pentru a vă ajuta să treceți prin faza de interviu și, eventual, să obțineți jobul de vis. Această listă a fost întocmită cu ajutorul articolului – pregătirea pentru un interviu java întrebări și răspunsuri pe Apollotechnical. Să mergem mai departe.

Întrebări de bază pentru interviul Java pentru cei care sunt în curs de dezvoltare

Întrebări de bază pentru interviul Java pentru cei care sunt în curs de dezvoltare

Ce înțelegi prin Java?

Java este un limbaj de programare versatil, orientat pe obiecte și multiplatformă, utilizat pe 3 miliarde de dispozitive la nivel global pentru diverse sarcini, cum ar fi aplicații de rețele sociale, programe audio și video, jocuri, procesare masivă de date, dispozitive încorporate și așa mai departe.

Comparați între Java și Python

În simplitatea sa, Java este un limbaj de programare cu scop general, centrat pe obiecte, bazat pe clase, dar cu mai puține specificații necesare. Datorită reputației sale de a fi rapid, de încredere și orientat spre rezultate, este limbajul de programare de bază pentru dezvoltarea de aplicații pe telefoane mobile, console de jocuri, laptopuri, computere științifice de ultimă oră etc. Pe de altă parte, Python este un limbaj de programare tradus, centrat pe obiecte și cu structura dinamică. Python facilitează flexibilitatea programului și reutilizarea codului prin activarea modulelor și pachetelor.

Descrieți principalele caracteristici Java

  • Java este axat pe obiecte
  • Java este independent de platformă
  • Are o implementare excelentă pentru Multithreading
  • Folosește un limbaj simplu
  • Și este neutru în arhitectură

Ce vrei să spui prin obiect în Java

În Java, un obiect este o componentă (cunoscută și ca „o instanță”) a unei alte grupări Java numită „clasă”. Fiecare obiect are o stare, un comportament/acțiuni și o identitate unice. Câmpurile (variabilele) stochează starea unui obiect, în timp ce metodologiile (operațiile) prezintă acțiunile obiectului. În timpul execuției, obiectele sunt create din cadre identificate ca clase.

Un obiect ar putea fi, de asemenea, un element fundamental al programării bazate pe obiecte care reprezintă entități din lumea reală.

Distingeți între Stringbuffer și Stringbuilder în programarea Java

StringBuffer și StringBuilder diferă în primul rând în patru parametri: performanță/viteză, siguranța firelor, disponibilitate și sincronizare. StringBuilder este o variantă nesincronizată a clasei StringBuffer.

O altă distincție între StringBuffer și StringBuilder este că primul este thread-safe, în timp ce al doilea nu este.

Faceți diferența între JDK, JRE și JVM

Kitul de dezvoltare Java (JDK) include instrumente de scriere, depanare și analizare de programare Java. JRE este un set de clase și obiecte și alte fișiere însoțitoare de care JVM are nevoie pentru a rula o aplicație. JVM nu furnizează niciun instrument de dezvoltare software.

Java Development Kit (JDK) este un produs software pentru crearea de aplicații Java. JRE este un pachet software care conține bibliotecile de clase Java și alte componente necesare pentru a rula programarea Java. Java Virtual Machine (JVM) interpretează limbajul de octeți Java și creează o atmosferă potrivită pentru execuție. JDK este specific platformei, JRE este dependent de platformă, iar JVM este dependent de platformă la o scară mai mare.

Definiți moștenirea

În Java, moștenirea este un principiu care transferă caracteristicile unei clase în alta; Este cadrul în Java prin care o clasă obține proprietăți de la alta sau permite unei clase să posede caracteristicile (metode și atribute) alteia.

Ce este clasa în Java?

O clasă este un element fundamental în programarea orientată pe obiecte. Este un format care definește starea și funcțiile atribuite instanțierii clasei. O clasă este, de asemenea, un șablon logic, deoarece este folosită pentru a construi modele care împărtășesc atribute și metode similare.

Comparați supraîncărcarea și suprascrierea în Java

Supraîncărcarea se referă la a avea metode din aceeași clasă cu același nume, dar fiecare are diferite criterii sau aceleași criterii cu diferite tipuri și ordine. În timp ce Overriding înseamnă a avea o subclasă cu aceleași tehnici sub același titlu ca o superclasă și același tip de criterii și valoare returnată.

În plus, supraîncărcarea este un polimorfism de linie de comandă cu o legătură statică și supraîncărcarea metodei statice. În timp ce suprascrierea este un polimorfism de execuție a programului cu o legătură flexibilă și incapacitatea de a suprascrie metoda statică.

Explicați crearea unui singleton sigur pentru fire în Java folosind blocarea dublu verificată

Modelul Singleton este un model de design binecunoscut în care o clasă este limitată la o singură instanță de-a lungul vieții sale, iar mai mulți clienți partajează acea instanță. Modelul Singleton este încorporat cu două responsabilități majore: prima este să se asigure că este generată o singură instanță de clasă. Al doilea este de a oferi o metodă prin care toată lumea să aibă acces la acea instanță specifică.

Una dintre provocările cu care se confruntă designul Singleton într-un program multithreading este să se asigure că este generată o singură instanță a clasei, chiar dacă diverși utilizatori apelează tehnica getInstance() în același timp. Sistemul de blocare cu dublu verificare rectifică această dilemă, asigurându-se că sincronizarea este utilizată numai atunci când un caz individual de Singleton este creat oricând funcția getInstance() este invocată pentru prima dată și că aceeași instanță este readusă din nou fără sincronizare de mai sus. toate celelalte cazuri.

Întrebări de interviu Java intermediare

Întrebări de interviu Java intermediare

Ce este JDK? Menționați variantele de JDK?

JDK înseamnă Java Development Kit. Java Development Kit (JDK) este software-ul de bază în timpul dezvoltării oricărei aplicații Java. Kitul de dezvoltare Java (JDK) include scrierea, depanarea și analiza instrumentelor de programare Java.

În principiu, JDK este o implementare Java Standard Edition sau Java Enterprise Edition. Java a fost redenumit Java 2 (prescurtat la Java 2 SDK sau J2SDK) în 1998, datorită unei actualizări semnificative a platformei. A dezvoltat trei versiuni Java separate pentru a suporta diverse aplicații.

  • J2SE înseamnă Java 2 Platform, ediția de bază și obișnuită și este destinat pentru contexte desktop și server.
  • J2EE înseamnă Java 2 Platform, Corporate Edition, proiectat pentru aplicații de afaceri și include capabilități precum stocare bazată pe cloud și suport pentru servicii online.
  • J2ME (Java 2 Platform, Micro Edition) este destinat gadgeturilor sau platformelor instalate și mobile.

Cu toate acestea, în 2004, etichetele variantelor au fost modificate în Java ME (Micro Edition a platformei Java), Java EE (Ediția Enterprise a platformei Java) și, respectiv, Java SE (Ediția standard a platformei Java). De asemenea, numele setului de dezvoltare a fost schimbat din „Java 2 SDK” în „JDK”. De asemenea, contextul de operare a fost redenumit „JRE” în ​​loc de „J2RE”. Variantele cu versiunile lor, Java SE 6 și Java EE 5 sunt încă în uz.

Poate un constructor să returneze o valoare?

Înțelegând că un constructor nu este ca o tehnică convențională utilizată în timpul programării în Java, cumva nu returnează sau aduce înapoi niciun rezultat specificat, ceea ce ar putea cauza un efect major sau un impact asupra codului. Constructorul poate include instrucțiuni nelimitate, dar nu poate aduce înapoi sau returna valorile sau rezultatul declarațiilor.

Explicați cuvântul cheie „ACEST” în Java

„Acesta” este un termen specific în Java care specifică entitatea pe care o rulează acum programatorul. Cuvântul cheie este doar prefixat la un parametru diferit care se referă la utilizarea operatorului – punct (.), care poate fi folosit din interiorul unei metode sau al unui constructor. Cuvântul cheie „Acest” nu este folosit foarte des, deoarece majoritatea aplicațiilor sunt menite să evite situațiile în care ar fi fost necesar. Accesul la variabilele de instanță este oferit prin termenul „acest lucru”.

Explicați cuvântul cheie „SUPER” în Java

În Java, cuvântul de referință „super” este un parametru relativ asociat cu conceptul de moștenire care se referă la instanțe ale clasei părinte, presupunând că clasa derivată are un parametru în grup sau metodă cu același nume ca și clasa părinte. Termenul este utilizat mai ales atunci când subclasa trebuie să acceseze un parametru, o funcție sau un Constructor din clasa de bază.

Explicați supraîncărcarea metodei în Java

În Java, supraîncărcarea se referă la metode care au același nume și clasă, dar cu diferite criterii și invers. Două sau mai multe tehnici au nume și clase uniforme, dar semnături diferite în supraîncărcare. Supraîncărcarea este un polimorfism de linie de comandă care limitează comportamentul unei metode, provocând astfel o supraîncărcare.

Putem supraîncărca o metodă statică în Java?

În Java, metoda statică se comportă similar cu metodologiile obișnuite de supraîncărcare și, ca atare, ar putea fi supraîncărcată. Cu toate acestea, trebuie să se ofere o metodă statică suplimentară cu același nume, dar o semnătură metodologică diferită, dacă scopul este de a supraîncărca metoda statică.

Definiți legarea tardivă

Legarea întârziată este un format care indică faptul că compilatorul nu trebuie să efectueze verificări de tip asupra apelurilor de metodă, nicio verificare a argumentelor și ar trebui să lase totul în timpul rulării (o instanță este în programarea COM).

Definiți metoda dinamică de expediere

Trimiterea metodei dinamice se referă la rezolvarea sau remedierea unui apel la o metodă suprascrisă în timpul rulării, mai degrabă decât în ​​timpul compilării.

De ce funcția de ștergere este mai rapidă în lista legată decât o matrice

Operația de eliminare LinkedList returnează O(1). Dar operația de eliminare ArrayList returnează O(n) în cel mai rău caz, adică atunci când ștergeți prima intrare și O(1) în cel mai bun scenariu în timp ce eliminați ultimul element. În comparație cu ArrayList, ștergerea elementului LinkedList este mai rapidă. Motivul pentru aceasta este că fiecare element LinkedList are doi pointeri (adrese) care indică ambii membri vecini din listă. Ca urmare, eliminarea unui nod implică modificarea poziției de referință în cele două componente adiacente ale nodului.

Întrebări avansate de interviu Java pentru experimentați

Întrebări avansate de interviu Java pentru experimentați

Deși moștenirea este un concept popular, oops, este mai puțin avantajoasă decât compoziția. Explica!

Clasele Java pot avea o singură superclasă, deoarece moștenirile multiple nu sunt acceptate în limbaj. În diferite funcționalități, cum ar fi citirea și scrierea într-un fișier, structura de compilare este de preferat. Îl puteți compara cu capabilitățile de scriitor și cititor ale unui membru privat. Cu ajutorul compoziției, este posibil să se prevină ruperea încapsulării, obținând în același timp o flexibilitate semnificativă. Testarea unitară, care este imposibilă din cauza moștenirii, este realizabilă cu ajutorul compoziției.

Cum este crearea unui șir folosind new() diferită de cea a unui literal?

Când folosim new() pentru a genera un String, un nou obiect este construit în memoria heap. Executarea durează mai mult și, prin urmare, rămâne în urmă în comparație cu String literal. Cu toate acestea, când există date deja stabilite în String pentru un șir creat folosind String literal, există o legătură între aceleași date cu variabila String din grupul String. Și acest lucru se realizează fără a fi nevoie să construiți un șir complet nou cu aceleași date stabilite.

Este posibilă depășirea limitei de memorie într-un program, în ciuda faptului că are un colector de gunoi?

Da. Prezența unui colector de gunoi nu oprește sau împiedică în niciun fel un program să iasă din memorie.

De ce este necesară sincronizarea? Explicați cu ajutorul unui exemplu relevant

Sincronizarea este un mecanism care asigură că toate firele coincidente rulează simultan. Sincronizarea previne problemele de consistență a memoriei produse de o vizualizare sinergetică a memoriei care este inconsecventă. Într-o metodă sincronizată, obiectul este monitorizat și menținut în loc de fir. Dacă un alt thread execută metoda sincronizată, firul actual va fi oprit până când fostul thread eliberează monitorul.

Să presupunem că, într-o situație în care este necesar să se găsească numărul de solicitări făcute către o anumită adresă URL, rularea mai multor solicitări va duce la o contorizare neregulată. Să spunem că firul 1 vede numărul ca 12; se va mări la 13 prin adăugarea unuia. Concomitent, un alt thread 2 vede, de asemenea, numărul ca 12 și, în aceeași ordine de idei, este mărit la 13 prin adăugarea de 1. Această imprevizibilitate în valoarea de numărare apare deoarece în loc de valoarea finală anticipată de 14, ceea ce ar fi obținut ca final valoarea va fi 13. Aici intervine sincronizarea pe măsură ce funcția crește (), astfel încât accesul concomitent la numărătoare este împiedicat.

Puteți explica ciclul de viață al firului Java?

În Java, ciclul de viață al unui fir este definit ca transformările de stare ale unui fir de la naștere până la moarte. Când este generată o instanță de fir și funcția start() a clasei Thread este apelată, firul de execuție intră în starea rulabilă. Când clasa Thread apelează metodele sleep() sau wait(), firul de execuție devine nerulabil.

Care ar putea fi compromisul dintre utilizarea unei matrice neordonate versus utilizarea unei matrice ordonate?

Un avantaj major al unui tablou ordonat este că are o complexitate a timpului de căutare de O(log n). Operația de inserare pe o matrice ordonată are o complexitate temporală de O(n) deoarece membrii cu scoruri mai mari trebuie să fie mutați pentru a face o nouă variantă. Pe de altă parte, operația de inserare a unui tablou neordonat necesită un timp constant de O(1).

Este posibil să importați aceeași clasă sau pachet de două ori în java și ce se întâmplă cu el în timpul rulării?

Da. Indiferent de cât de des este importată clasa sau pachetul, JVM-ul îl va încărca intern o dată în timpul rulării.

Blocul „Finally” va fi executat dacă sistemul de cod. Exit(o) este scris la sfârșitul blocului try?

Nu, blocul „finally” nu se va executa în acest scenariu deoarece atunci când System.exit (0) este activat, controlul părăsește programul instantaneu și, prin urmare, „finally” nu se execută niciodată. Dacă System. exit(0) este invocat fără excepție; programul nu va rula.

Ce înțelegeți prin interfețele de marcare în Java

O interfață fără constante sau metode este cunoscută ca interfață de marcare sau interfață de etichetare, deoarece oferă compilatorului și JVM informații despre tipul de timp de rulare pentru obiecte. Interfețele de la distanță, Serializable și Cloneable sunt exemple de interfețe de marcare, iar toate aceste interfețe sunt goale.

Explicați termenul „Inițializare dublă acolade” în Java

În Java, inițializarea duble acolade este un amestec de 2 procese separate. Două bretele ({) sunt implicate în această situație. Inițializarea duble acolade are loc atunci când două acolade consecutive sunt afișate în codul java.

Construcția unei clase interioare fără nume este prima acoladă, în timp ce un bloc de inițializare este a doua acoladă. Inițializarea Java Double Brace are loc atunci când o clasă interioară fără nume utilizează blocul de inițializare.

Concluzie

Ca programator începător sau chiar programator cu experiență, aceste întrebări de interviu pot părea puțin complicate. Dar dacă vă angajați să exersați aceste întrebări, sunteți sigur că veți beneficia de următoarea oportunitate pe care o veți avea.