Cele mai bune 130 de întrebări și răspunsuri la interviu Java 2022

Publicat: 2021-01-01

Întrebări și răspunsuri la interviu Java

În acest articol, am compilat cele mai frecvente întrebări de interviu Java. Aceste întrebări vă vor oferi o cunoștință cu tipul de întrebări pe care un intervievator vi le poate pune în timpul interviului pentru programare Java

În calitate de Fresher, fie tocmai ați participat la un interviu, fie plănuiți să participați la unul în curând. Un solicitant de locuri de muncă la nivel de intrare care dorește să-ți dezvolte cariera în programarea software, s-ar putea să fii nervos în legătură cu interviurile viitoare . Cu toții avem acele momente de panică în care ne evidențiem și am putea chiar să uităm ce este un fir. Îți vom simplifica, tot ce trebuie să faci, respiră adânc și verifică întrebările care sunt cel mai probabil să fie puse.

Nu poți evita să intri în panică, dar cu siguranță te poți pregăti astfel încât atunci când păși în acea cameră de interviu. Sunteți încrezător și știți că puteți gestiona orice v-ar putea arunca intervievatorul.

Învață programe de inginerie software online de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.

Iată o listă compilată de 24 de întrebări cu răspunsuri pentru interviul Java (cel mai recent 2022) care vă vor ajuta să obțineți această încredere și să vă asigurați că veți naviga prin interviu.

1. Din ce cuprinde JVM?
JVM, prescurtare de la Java Virtual Machine este cerut de orice sistem pentru a rula programe Java. Arhitectura sa constă în principal din:
● Classloader: Este un subsistem al JVM și funcția sa principală este de a încărca fișiere de clasă ori de câte ori este rulat un program Java.
● Heap: sunt datele de rulare care sunt folosite pentru alocarea obiectelor.
● Zona de clasă: deține nivelul de clasă al fiecărui fișier de clasă, cum ar fi variabile statice, metadate și grupul de rulare constantă.
● Stivă: utilizat pentru stocarea variabilelor temporare.
● Register: registrul conține adresa instrucțiunii JVM în curs de executare
● Motor de execuție: EE constă dintr-un procesor virtual, un interpret care execută instrucțiuni după citirea bytecode și un compilator JIT care îmbunătățește performanța atunci când rata de execuție este lentă.
● Java Native Interface: acţionează ca mediu de comunicare pentru interacţiunea cu o altă aplicaţie dezvoltată în C, C++ etc.

2. Ce este programarea orientată pe obiecte? Java este un limbaj orientat pe obiecte?
În esență, programarea orientată pe obiecte este o paradigmă de programare care funcționează pe conceptul de obiecte. Mai simplu spus, obiectele sunt containere – conțin date sub formă de câmpuri și cod sub formă de proceduri. Urmând această logică, un limbaj orientat pe obiect este un limbaj care funcționează pe obiecte și proceduri.

Deoarece Java utilizează 8 tipuri de date primitive - boolean, byte, char, int, float, long, short, double - care nu sunt obiecte, Java nu poate fi considerat un limbaj 100% orientat pe obiecte.

3. Ce înțelegeți prin agregare în contextul Java?
Agregarea este o formă de asociere în care fiecărui obiect i se atribuie propriul său ciclu de viață. Dar, există o proprietate în acest sens, iar obiectul copil nu poate aparține niciunui alt obiect părinte în niciun fel.

4. Denumiți superclasa în Java.
Java.lang. Toate diferitele non-primitive sunt moștenite direct sau indirect din această clasă.

5. Explicați diferența dintre „finally” și „finalize” în Java?
Folosit cu blocul try-catch, blocul „finally” este folosit pentru a se asigura că o anumită bucată de cod este întotdeauna executată, chiar dacă execuția este aruncată de blocul try-catch.

În schimb, finalize() este o metodă specială în clasa obiectului. În general, este anulată eliberarea resurselor de sistem atunci când valoarea deșeurilor este colectată de la obiect.

6. Ce este o clasă interioară anonimă? Cum este diferit de o clasă interioară?
Orice clasă interioară locală care nu are nume este cunoscută ca o clasă interioară anonimă. Deoarece nu are niciun nume, este imposibil să-i creezi constructorul. Întotdeauna fie extinde o clasă, fie implementează o interfață și este definită și instanțiată într-o singură instrucțiune.

O clasă imbricată non-statică se numește clasă interioară. Clasele interioare sunt asociate cu obiectele clasei și pot accesa toate metodele și variabilele clasei exterioare.

7. Ce este o clasă de sistem?
Este o clasă de bază în Java. Deoarece clasa este finală, nu putem trece peste comportamentul ei prin moștenire. Nici nu putem instanția această clasă, deoarece nu oferă niciun constructor public. Prin urmare, toate metodele sale sunt statice.

8. Cum se creează fire de demon în Java?
Folosim clasa setDaemon(true) pentru a crea acest thread. Apelăm această metodă înainte de metoda start(), altfel obținem IllegalThreadStateException.

Profil de post pentru Dezvoltator de software

9. Java acceptă variabile globale? De ce de ce nu?
Nu, Java nu acceptă variabile globale. Acest lucru se datorează în primul rând două motive:
● Acestea creează coliziuni în spațiul de nume.
● Încalcă transparența referențială.

10. Cum este dezvoltat un obiect RMI?
Se pot face următorii pași pentru a dezvolta un obiect RMI:
● Definiți interfața
● Implementarea interfeței
● Compilați interfața și implementările acestora cu compilatorul java
● Compilați implementarea serverului cu compilatorul RMI
● Rulați registry RMI
● Rulați aplicația

11. Explicați diferențele dintre tăierea timpului și programarea preventivă?
În cazul tăierii de timp, o sarcină se execută pentru un interval de timp specificat - cunoscut și sub denumirea de felie. După aceea, intră în coada gata - un grup de sarcini „gata”. Planificatorul alege apoi următoarea sarcină care urmează să fie executată pe baza priorității și a altor factori.

În timp ce în cadrul programării preventive, sarcina cu cea mai mare prioritate este executată fie până când intră în stări de inactivitate sau de avertizare, fie dacă apare o altă sarcină cu prioritate mai mare.

12. Ce fel de fir este un fir pentru colector de gunoi?
Este un fir de demon.

13. Care este ciclul de viață al unui fir în Java?
Orice fir în Java trece prin următoarele etape în ciclul său de viață:
● Nou
● Rulabil
● Alergare
● Nu se poate rula (blocat)
● Terminat

14. Precizați metodele utilizate în timpul procesului de deserializare și serializare.
ObjectInputStream.readObject
Citește fișierul și deserializează obiectul.

ObjectOuputStream.writeObject
Serializați obiectul și scrieți obiectul serializat într-un fișier.

15. Ce sunt variabilele volatile și care este scopul lor?
Variabilele volatile sunt variabile care citesc întotdeauna din memoria principală și nu din memoria cache a firului de execuție. Acestea sunt utilizate în general în timpul sincronizării.

16. Ce sunt clasele wrapper în Java?
Toate tipurile de date primitive din Java au o clasă asociată cu ele – cunoscută sub numele de clase wrapper. Sunt cunoscute sub numele de clase wrapper deoarece „împachetează” tipul de date primitiv într-un obiect pentru clasă. Pe scurt, ele convertesc primitivele Java în obiecte.

17. Cum putem face o clasă singleton?
Făcând constructorul său privat.

18. Care sunt metodele importante ale Clasei de excepție în Java?
● șir getMessage()
● șir toString()
● void printStackTrace()
● sincronizat Throwable getCause()
● public StackTraceElement[] getStackTrace()

19. Cum putem face un fir în Java?
Putem urma oricare dintre cele două moduri de a crea un fir în Java:
● Prin extinderea clasei Thread

Dezavantajul acestei metode este că nu putem extinde nicio altă clasă, deoarece clasa thread-ului a fost deja extinsă.
● Prin implementarea interfeței Runnable

20. Explicați diferențele dintre metodele get() și load().
Metodele get() și load() au următoarele diferențe:
● get() returnează null dacă obiectul nu este găsit, în timp ce load() aruncă excepția ObjectNotFound.
● get() returnează întotdeauna un obiect real, în timp ce load() returnează un obiect proxy.
● metoda get() lovește întotdeauna baza de date, în timp ce load() nu.
● get() ar trebui folosit dacă nu sunteți sigur de existența unei instanțe, în timp ce load() ar trebui să fie folosit dacă sunteți sigur că instanța există.

21. Care este valoarea implicită a variabilelor locale?
Nu sunt inițializate la nicio valoare implicită. Nici primitivele sau referințele la obiect nu sunt.

22. Ce este Singleton în Java?
Este o clasă cu o singură instanță în întreaga aplicație Java. De exemplu, java.lang.Runtime este o clasă Singleton. Obiectivul principal al Singleton este de a controla crearea obiectului prin păstrarea constructorului privat.

23. Ce este metoda statică?

O metodă statică poate fi invocată fără a fi nevoie de crearea unei instanțe a unei clase. O metodă statică aparține clasei mai degrabă decât unui obiect al unei clase. O metodă statică poate accesa un membru de date statice și poate modifica valoarea acestuia.

24. Care este excepția?

Excepții Condiții neobișnuite în timpul programului. Acest lucru se poate datora unei logici incorecte scrise de o intrare incorectă a utilizatorului sau programator.

25. În termeni simpli, cum ați defini Java?

Java este un portal de nivel înalt, independent de platformă, orientat pe obiecte și oferă suport cu performanțe înalte pentru crearea de programe, aplicații și site-uri web sofisticate. Java este un limbaj de programare de uz general care dă putere dezvoltatorilor să construiască aplicații cu funcționalități bogate cu mediul WORA (scriere odată rulată oriunde). James Arthur Gosling, un informatician din Canada, a dezvoltat Java în 1991 și este cunoscut sub numele de „Dr Java”. Astăzi, Java a devenit o bază esențială pentru industria IT modernă.

26 . Ce este Java String Pool?

Un pool de șiruri în Java este un loc distinct care are un grup de șiruri stocate prin memoria heap Java. Aici, String reprezintă o clasă specială în Java, iar obiectele șir pot fi create folosind fie un operator nou, fie folosind valori între ghilimele duble.
String-ul este imuabil în Java, astfel, făcând fezabilitatea pool-ului String și apoi implementarea ulterioară prin intermediul conceptelor de interning String.

27. Ce este o clasă de colecție în Java? Enumeră metodele și interfețele sale?

Clasele de colecție Java sunt clase speciale, care sunt utilizate exclusiv cu metode statice care funcționează în mod specific pe colecțiile returnate. Colecția Java moștenește în mod implicit o clasă și are două caracteristici esențiale precum:

  • Aceștia acceptă și funcționează cu algoritmi polimorfi care returnează colecții noi pentru fiecare colecție specifică.
  • Metodele din Colecția Java lansează o excepție NullPointerException în cazul în care obiectele de clasă sau colecțiile au valoare Null.

Acestea sunt reprezentate și declarate ca Java.util.Collectionclass.

Există mai mult de 60 de metode, modificatori și tipuri de clase Java Collection. Iată o listă cu cele mai importante metode din Java Collection Class:

S. Nu. Modificator, Metodă și Tip Descriere
1. static <T> boolean addAll() Această metodă permite adăugarea unor elemente specifice la o anumită colecție.
2. static <T> Queue <T> asLifoQueue() Această metodă permite listarea colecției ca Last-in-first-out (LIFO) în vedere.
3. static <T> int binarySearch() Această metodă permite căutarea unui anumit obiect și apoi le returnează într-o listă sortată.
4. static <E> Colecție<E> Această metodă returnează vizualizarea dinamică din orice colecție anume.
5. Lista <E> statică <E> Această metodă oferă o întoarcere a unei vizualizări dinamice tip sigure dintr-o anumită listă.

Iată câteva exemple pentru Java Collection:
Colecția Java min() Exemplu:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 import java.util.* ;  
 	clasă publică ColecțiiExemplu {  
 	    public static void main ( String a []){         
 	        List < Integer > list = new ArrayList < Integer >();  
 	        lista . adaugă ( 90 );  
 	        lista . adăugați ( 80 );  
 	        lista . adaugă ( 76 );  
 	        lista . adaugă ( 58 );  
 	        lista . adaugă ( 12 );  
          Sistem . afară . println ( "Element Valoare minimă din colecție: " + Colecții . min ( listă ));  
      }  
  } 

Ieșirea va fi:

Element Valoare minimă din colecție: 12

Colecția Java max() Exemplu:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 import java.util.* ;  
  clasă publică ColecțiiExemplu {  
      public static void main ( String a []){         
          List < Integer > list = new ArrayList < Integer >();  
          lista . adaugă ( 90 );  
          lista . adăugați ( 80 );  
          lista . adaugă ( 76 );  
          lista . adaugă ( 58 );  
          lista . adaugă ( 12 );  
          Sistem . afară . println ( "Valoare maximă element din colecție: " + Colecții . max ( listă ));  
      }  
  }

Ieșirea va fi:

Element Valoare maximă din colecție: 90

28 . Ce este un servlet?

Servlet-urile sunt componente software Java care adaugă mai multe capabilități unui server Java prin tehnologie, API, interfață, clasă sau orice implementare web. Servlet-urile rulează în mod specific pe servere de aplicații web bazate pe Java și sunt capabile să gestioneze solicitări complexe de la serverul web. Servlet-urile adaugă beneficiile unei performanțe mai mari, robustețe, scalabilitate, portabilitate și asigură siguranță pentru aplicațiile Java.

Proces sau execuție servlet:

  • Aceasta începe atunci când un utilizator trimite o solicitare dintr-un browser web.
  • Serverul web primește și apoi transmite această solicitare servlet-ului specific.
  • Apoi Servlet-ul procesează această solicitare pentru a obține un răspuns specific cu ieșire.
  • Apoi Servlet-ul trimite acest răspuns înapoi la serverul web.
  • Apoi, serverul web primește informațiile pe care browserul le afișează pe ecran.

Servlet-urile Java vin cu mai multe clase și interfețe precum GenericServlet, ServletRequest, Servlet API, HttpServlet, ServeResponse etc.

29. Ce este Request Dispatcher?

În Servlet, RequestDispatcher acționează ca o interfață pentru definirea unui obiect pentru a primi cereri de la clienți pe o parte și apoi trimiterea către anumite resurse pe cealaltă parte (care poate fi un servlet, HTML, JSP). Acest RequestDispatcher are două metode în general:

void forward (cerere ServletRequest, răspuns ServletResponse) Aceasta permite și redirecționează cererile de la orice servlet către resursele serverului sub forma unui Servlet, fișier HTML sau fișier JSP.
void include (solicitare ServletRequest, răspuns ServletResponse) Acesta are conținut pentru o anumită resursă sub forma unui răspuns, cum ar fi fișierul HTML, pagina JSP sau un servlet.

30. Care este ciclul de viață al unui servlet?

Servlet este o componentă software Java care are funcția principală de a prelua mai întâi cererea, apoi de a procesa cererea și de a oferi un răspuns utilizatorului într-o pagină HTML. Aici Servlet Container gestionează ciclul de viață al unui servlet. Iată principalele etape:

  • Se încarcă Servlet.
  • Apoi inițializați Servlet-ul.
  • Gestionarea cererii (metoda de invocare a serviciului).
  • Apoi distrugerea Servlet-ului.

Iată o diagramă rapidă care arată ciclul de viață al unui Servlet Java:
Ciclul de viață al servletului

Sursă

  • Se încarcă Servlet

Ciclul de viață pentru Servlet începe cu etapa de încărcare în containerul Servlet. Servlet-ul se încarcă în oricare dintre cele două moduri cu:

    • Setarea servlet-ului ca valoare integrală pozitivă sau zero.
    • În al doilea rând, acest proces poate avea întârzieri, deoarece containerul selectează servletul potrivit pentru a gestiona cererea.

Acum containerele încarcă mai întâi clasa Servlet și apoi construiesc o instanță prin constructorul fără argument.

  • Se inițializează Servlet

Următorul pas este să utilizați metoda Servlet.init(ServletConfig) pentru a inițializa Servlet-ul, de exemplu, sursa de date JDBC.

  • Gestionarea cererii (Metoda de invocare a serviciului)

Aici Servlet-ul preia cererile clientului și efectuează operația necesară folosind metoda service().

  • Distrugerea Servlet-ului

Acum containerul Servlet distruge servletul efectuând și completând sarcini specifice și apelând metoda destroy() în instanță.

31. Care sunt diferitele metode de gestionare a sesiunilor în servlet-uri?

Sesiunile urmăresc activitatea utilizatorului după ce se autentifică pe site. Managementul sesiunii oferă mecanismul de a procura informații pentru fiecare utilizator independent. Iată cele patru metode diferite de gestionare a sesiunilor în servlet-uri:

  • HttpSession
  • Cookie-uri
  • Rescrierea adresei URL
  • Câmp ascuns HTML

32. Ce este un driver JDBC?

Java Database Connectivity (JDBC) acţionează aici ca o componentă software care permite aplicaţiilor Java să comunice cu o bază de date.

Driverele JDBC au următoarele patru tipuri în mediu:

  • Driver de punte JDBC-ODBC
  • Driver de protocol de rețea (driver Middleware)
  • Driver pentru protocolul bazei de date (driver complet Java)
  • Driver API nativ

33. Ce este interfața JDBC Connection?

Conexiunile definesc sesiunile dintre baza de date și aplicațiile Java. Interfața JDBC Connection face parte numai din pachetul java.sql și oferă informații despre sesiune pentru o anumită bază de date. Acestea reprezintă mai multe instrucțiuni SQL pentru execuție și rezultate în contextul unei singure interfețe de conexiune. Iată principalele metode pentru interfața Connections:

  • createStatement() : Pentru a crea un obiect de instrucțiune specific pentru adăugarea de instrucțiuni SQL la o anumită bază de date.
  • setAutoCommit(starea booleană) : Pentru a defini conexiunea unui mod de comitere la o directivă falsă sau adevărată.
  • commit() : Aceasta face toate modificările de la ultima comitere și eliberează în continuare orice bază de date deținută în prezent de obiectul Connection specific.
  • rollback() : care anulează sau derulează înapoi toate modificările efectuate în tranzacția trecută sau curentă și, de asemenea, eliberează baza de date deținută în prezent în obiectul conexiune.
  • close() : care termină sau închide conexiunea curentă și, de asemenea, eliberează sau șterge resursele JDBC instantaneu.

34. Numiți diferitele module ale cadrului Spring?

Există mai multe module în cadrul Spring:

  • Modul web
  • Modul Struts
  • Modulul servlet
  • Modulul Core Container
  • Programare orientată pe aspecte (AOP)
  • Modulul de context al aplicației
  • Modul cadru MVC
  • Abstracție JDBC și modul DAO
  • modul OXM
  • Modulul Expression Language
  • Modul de tranzacții
  • Modul Java Messaging Service (JMS).
  • Modul de integrare ORM

Aceste module sunt prezente în grupuri:

module-arcuri

Sursă

35. Explicați Bean in Spring și enumerați diferitele domenii ale Spring Bean.

Fasolea este unul dintre conceptele fundamentale ale cadrului Spring în gestionarea eficientă a structurilor. Într-o definiție simplă, Spring Bean reprezintă containerele IoC care gestionează obiectul care formează coloana vertebrală a aplicațiilor.

Domeniile de aplicare ale Spring Bean:

Scopurile joacă un rol crucial în utilizarea eficientă a boabelor de primăvară în aplicare. Scope ne ajută să înțelegem ciclul de viață al Spring Bean și au următoarele tipuri .

S. Nu. Domeniu de aplicare și descriere
1. Singleton – În mod implicit, domeniul Spring bean are un domeniu singleton care reprezintă o singură instanță pentru containerul Spring IOC. Același obiect este partajat pentru fiecare solicitare.
2. Prototip – În aceasta, o nouă instanță va fi apelată și creată pentru fiecare definiție de bean, de fiecare dată când se face o solicitare pentru un anumit bean.
3. Solicitare – În acest domeniu, un singur bean va fi apelat și creat pentru fiecare cerere HTTP pentru acel bean specific.
4. Sesiune – Acest domeniu definește utilizarea unui singur bean pentru un ciclu de viață într-o anumită sesiune HTTP globală.
5. Sesiune globală – Acest domeniu permite un singur bean pentru ciclul de viață particular pentru implementarea în sesiunea HTTP globală.

Notă: Ultimele trei domenii sunt aplicabile numai în Spring ApplicationContext compatibil web.

Trebuie citit: De ce Java este atât de popular printre dezvoltatori

36. Explicați rolul DispatcherServlet și ContextLoaderListener.

În timp ce configurați configurația Spring MVC bazată pe XML în fișierul web.xml, două declarații ale DispatcherServlet și ContextLoaderListener joacă un rol esențial în completarea scopului cadrului.

  • DispatcherServlet –

DispatcherServlet are scopul principal de a gestiona solicitările web primite pentru anumite modele URI configurate care se potrivesc. DispatcherServlet acționează ca controler frontal pentru nucleul aplicației Spring MVC și încarcă în mod specific fișierul de configurare și apoi inițializează bean-urile potrivite prezente în acel fișier. Și când adnotările sunt activate, atunci poate verifica și scana, de asemenea, configurațiile și pachetele pentru toate adnotările cu @Repository, @Component, @Service sau @Controller.

  • ContextLoaderListener –

ContextLoaderListener aici acționează ca ascultător de solicitare pentru pornirea și închiderea rădăcină WebApplicationContext. Deci, creează și partajează contextul aplicației rădăcină cu contexte copil prin contextele DispatcherServlet. Aplicațiile pot folosi o singură intrare pentru ContextLoaderListener în web.xml.

37. Explicați arhitectura Hibernate.

Hibernate definește o arhitectură stratificată care permite utilizatorilor să opereze și să performeze fără a cunoaște API-urile subiacente, adică Hibernate acționează ca un cadru pentru a construi și dezvolta logica de persistență independentă de software-ul bazei de date.

Arhitectura Hibernate are principalele patru straturi cu:

  • Stratul de aplicație Java
  • Stratul bazei de date
  • Stratul API de backend
  • Hibernați stratul cadru

Elemente ale arhitecturii Hibernate

Există mai multe aspecte și domeniul de aplicare pentru arhitectura Hibernate. Pentru a afla mai multe despre ele, trebuie să cunoașteți elementele arhitecturii Hibernate.

  • SessionFactory: Sessionfactory oferă metoda de a crea obiecte de sesiune care sunt prezente numai în pachetul org.hiberate. Este de natură sigură pentru fire, imuabil și păstrează și păstrează memoria cache de nivel al doilea al datelor.
  • Sesiune: obiectele de sesiune furnizează interfața pentru software-ul de conexiune și bază de date prin intermediul cadrului de hibernare.
  • Tranzacție: Interfață care ajută la gestionarea tranzacțiilor și permite modificarea bazei de date.
  • ConnectiveProvider: O parte a conexiunilor JDBC, separă aplicația principală de DataSource sau DriverManager.
  • TransactionFactory: Reprezintă fabrica tranzacției.

38. Ce este o ierarhie de excepții în Java?

Excepția definește evenimentele nedorite care se prezintă în timpul rulării sau execuției programului. Excepția perturbă fluxul regulat al programului.
Exception Hierarchy face parte din clasa java.lang.Exception și face parte numai din clasa principală Throwable. O altă subclasă „ Eroare ” reprezintă, de asemenea, clasa Throwable în Java. Deși erorile sunt condiții neobișnuite în cazul unui eșec, ele nu sunt gestionate sau șterse cu programele Java.
Există două subclase primare pentru ierarhia excepțională în Java cu clasa RuntimeException și clasa IOCException.

39. Ce este sincronizarea?

Sincronizarea în Java definește capacitatea de a gestiona și controla accesul mai multor fire de execuție la o anumită resursă. Astfel, un thread poate accesa o anumită resursă în prezent. Aici, Java permite dezvoltarea de fire și apoi sincronizarea sarcinilor prin intermediul blocurilor de sincronizare.

Aceste blocuri sincronizate permit doar execuția unui fir pentru un anumit timp și blochează celelalte fire până când firul curent iese din bloc. Aici conceptul de monitor este crucial în implementarea sincronizării în Java. Odată ce firul intră într-o fază de blocare, se numește intrarea pe monitor. Astfel, blocarea tuturor celorlalte fire, cu excepția cazului în care primul fir a ieșit de pe monitor.

40. Care sunt caracteristicile care fac din Java unul dintre cele mai bune limbaje de programare?

Iată caracteristicile de top care fac Java pentru a începe curba de învățare în lumea programării:

  • Simplitate: Java este destul de simplu de învățat și de scris. Sintaxa Java este în C++, ceea ce permite dezvoltatorilor să scrie programe fără probleme.
  • OOPS: Java se bazează pe sistemul de programare orientat pe obiecte (OOPS), dând astfel puterea de a construi cod în mai multe tipuri de obiecte cu date și comportamente diferite.
  • Dinamic: Java este un limbaj dinamic complet care acceptă încărcarea claselor dinamice oricând și oriunde este necesar. Și are, de asemenea, suport complet pentru limbajul de cod nativ, cum ar fi C, C++ etc.
  • Independent de platformă: Java acceptă, de asemenea, limbajul de programare exclusiv și independent de platformă, permițând astfel dezvoltatorilor să-și ruleze programul doar pe platforma lor.
  • Portabilitate: Java are o abordare acoperită o dată cu scrierea oriunde, care permite codului să ruleze pe orice platformă.
  • Securitate: Urmând conceptul de ByteCode, gestionarea excepțiilor și nicio utilizare a niciunui indicator explicit fac din Java un mediu foarte securizat.

Java este, de asemenea, neutru din punct de vedere arhitect, fără a depinde de nicio arhitectură. Gestionarea puternică a memoriei și colectarea automată a gunoiului adaugă mai multă robustețe mediului său.

41. Ce face ca Java să permită performanță ridicată?

Utilizarea compilatorului Just in Time (JIT) în arhitectura sa face din Java unul dintre limbajele de programare cu performanțe ridicate, deoarece transformă instrucțiunile în coduri de octet.

42. Numiți cele mai populare IDE-uri Java.

Există multe IDE-uri disponibile în industrie pentru Java. Iată primele cinci IDE-uri Java pe care le puteți folosi pentru a începe să învățați acest limbaj de programare astăzi:

  • Eclipsă
  • Netbeans
  • IntelliJ
  • JDeveloper
  • MyEclipse

43. Definiți principalele diferențe dintre Java și alte platforme?

Două diferențe principale care fac Java să iasă în evidență față de alte platforme sunt:

  • Java este în primul rând o platformă bazată pe software, în timp ce altele pot fi platforme software sau hardware.
  • Java rulează sau se execută pe orice platformă hardware, în timp ce altele necesită cerințe hardware specifice.

44. Ce face ca Java să aibă natura sa „scrie o dată și rulează oriunde” (WORA)?

Ei bine, răspunsul cu un singur cuvânt este Bytecode. Compilatorul Java convertește toate programele Java într-un specific Byte Code care acționează ca un limbaj mediator între codul mașină și codul sursă. ByteCode poate rula pe orice computer și nu depinde de platformă.

45. Explicați diferitele tipuri de specificatori de acces utilizați în Java.

În limbajul de programare Java, specificatorii de acces reprezintă domeniul exact pentru clasă, variabilă sau o metodă. Există patru specificatori principali de acces:

  • Variabilele, metodele sau clasele definite public sunt accesibile în orice metodă sau clasă.
  • Specificatorul de acces protejat definește domeniul de aplicare al unei clase, metode și variabile la același pachet, în cadrul aceleiași clase sau la acea subclasă particulară a clasei.
  • Domeniul implicit este acolo pentru toate clasele, variabilele și metodele prezente cu acces numai la pachet.
  • Domeniul privat păstrează accesul clasei, variabilelor și metodelor doar la o anumită clasă.

Citiți: Proiectul Java Swing

46. ​​Explicați semnificația pachetelor în Java împreună cu avantajele acestora.

Pachetele sunt un mecanism de grupare pentru tipuri similare (interfață, clase, adnotări și enumerări) care asigură protecția activelor și gestionarea cuprinzătoare a numelor.

Iată avantajele pachetelor în Java:

  • Pachetele ne ajută să prevenim conflictele de denumire atunci când clasele cu același nume există în două pachete diferite.
  • Pachetele ajută la realizarea sistematică a controlului accesului.
  • Construiți clase ascunse pentru a fi folosite de pachete.
  • Ajută la localizarea claselor aferente pachetului.

47. Cum ați defini Constructor în Java?

Constructorii sunt un bloc special de coduri care inițializează un obiect în momentul creării. Deși are o asemănare cu metoda instanței, totuși, constructorii nu sunt metoda, deoarece nu au niciun tip de returnare explicit. Deci, de fiecare dată când un obiect este creat în sistem, există un constructor chemat pentru ca acesta să fie executat. Dacă nu există niciun constructor definit, atunci compilatorul folosește un constructor implicit.

Iată o prezentare simplă a Constructorului în Java:

 1
2
3
4
5
6
 clasă publică MyClass {
   //Acesta este constructorul
   MyClass (){
   }
   ..
}

48. Care sunt diferitele tipuri de constructori folosiți în Java?

Există trei tipuri de constructori utilizați în Java:

  • Constructor implicit: Când un dezvoltator nu folosește un constructor, compilatorul Java adaugă un constructor implicit mai specific existent în fișierul .class.
  • Constructor fără argument: În acest caz, nu există argumente în constructor și compilatorul nu acceptă niciun parametru, deoarece metoda variabilei de instanță este inițializată cu valori fixe specifice.
  • Constructor parametrizat: În acest caz, unul sau mai mulți parametri sunt prezenți în constructorul scris doar în parantezele elementului principal.

49. Care sunt diferențele dintre constructori și metode?

Principala diferență între constructori și metode sunt:

  • Scop: Scopul constructorilor este de a inițializa obiectul unei clase, în timp ce metoda îndeplinește sarcini specifice privind execuția codului.
  • Metoda are tipuri de returnare, în timp ce constructorii nu.
  • În Metode, există abstracte, statice, finale și sincronizare, în timp ce în constructori, nu puteți face proceduri specifice.

50. Explicați semnificația variabilei locale și a variabilei de instanță?

  • Variabilele locale sunt prezente în metodă, iar domeniul de aplicare există numai în cadrul metodei.
  • Variabilele de instanță sunt prezente și definite în clasă numai cu domeniul lor în întreaga clasă.

51. Explicați semnificația clasei în Java?

În Java, toate codurile, variabilele și metodele sunt definite în clasă.

  • Variabilele reprezintă atribute care definesc starea unei anumite clase.
  • Metodele reprezintă locul în care logica de afaceri își are efectul. Metodele includ un set de declarații și instrucțiuni care să corespundă cerințelor.

Iată un exemplu simplu pentru o clasă în Java :

 1
2
3
4
5
6
7
 public class Addition { //Declarație de nume de clasă
int x = 10 ; //Declarație variabilă
int y = 10 ;
public void add (){ //Declarație de metodă
int z = a + b ;
}
}

52. Explicați semnificația obiectului în Java?

Obiectele sunt definite ca o instanță a unei clase numai cu o stare și un comportament specific. De exemplu, un câine cu o anumită stare de nume, rasă și culoare, în timp ce comportamentul include lătrat, dând din coadă etc. Deci, oricând JVM citește orice cuvânt cheie new(), atunci va fi creată o instanță corespunzătoare. Un obiect trebuie mai întâi declarat, apoi instanțiat și în cele din urmă inițializat pentru a continua.

53. Definiți valoarea implicită pentru tipul de date octet în limbajul Java.

Pentru tipul de date Byte, valoarea implicită este 0.

54. De ce este tipul de date octet mai benefic în Java?

Deoarece tipul de date octet este de aproape patru ori mai mic decât un număr întreg, poate stoca mai mult spațiu pentru matrice mari.

55. Explicați conceptele OOP în Java.

OOP, sunt conceptele fundamentale ale limbajului de programare Java. Acestea includ abstracția, polimorfismul, moștenirea și încapsularea. Conceptele Java OOPs permit dezvoltatorilor să creeze variabile, metode și componente care le permit în continuare să le refolosească într-un mod personalizat, menținând în același timp securitatea.

56. Explicați semnificația Moștenirii.

În Java, Moștenirea este un mecanism specific care permite unei clase să dobândească proprietățile (cu câmpuri și metode) ale unei alte clase. Moștenirea este unul dintre conceptele de bază ale OOP Java.

Moștenirea face posibilă construirea de noi clase, adăugarea mai multor câmpuri și metode pe clasele existente pentru a le reutiliza în orice mod.

  • O subclasă este cea care moștenește proprietățile celeilalte clase.
  • Superclasa este cea ale cărei proprietăți sunt moștenite.

57. Explicați conceptele de încapsulare în Java?

Fiind unul dintre conceptele primare ale OOP-urilor Java, încapsularea permite încadrarea datelor și codului doar într-o singură unitate. Încapsularea este cunoscută și sub denumirea de ascunderea datelor, cu variabilele unei clase specifice ascunse de toate celelalte clase și accesibile numai cu metodele din clasa existentă.

Cele două lucruri esențiale pentru realizarea încapsulării în Java sunt:

  • Declararea variabilelor unei clase specifice ca fiind private.
  • Folosirea metodelor public setter și getter pentru a face modificări și a vizualiza valorile variabilelor.

58. Explicați conceptele de Polimorfism.

Polimorfismul în Java permite dezvoltatorilor să efectueze o singură sarcină în mai multe moduri. Există două tipuri de polimorfism în Java cu timp de execuție și timp de compilare. Puteți utiliza metode de suprascriere și supraîncărcare pentru a opera Polimorfismul în Java.

59. Explicați semnificația interfeței.

În Java, nu putem obține moșteniri multiple. Aici, interfața joacă un rol crucial în depășirea acestei probleme pentru a realiza abstractizarea, a ajuta moștenirile multiple și, de asemenea, sprijină cuplarea liberă. Acum avem o metodă implicită, statică și privată în interfață cu cele mai recente actualizări Java.

60. Ce se înțelege prin clasă Abstract?

Clasele abstracte sunt construite cu un anumit cuvânt cheie abstract în Java. Ele reprezintă atât metode abstracte, cât și non-abstracte.

61. Explicați clasa de abstractizare în Java?

Abstracția este una dintre proprietățile esențiale pentru a ascunde informațiile de implementare de la utilizator și apoi pentru a reprezenta numai funcțiile utilizatorului. For instance, when you send an SMS from one person to another person. The user gets to know only the message and number while the backend process remains hidden.

You can achieve abstraction in Java using the following two ways:

  • Abstract Class (0 to 100%)
  • Interface (100%)

62. Explain the difference between Abstraction and Encapsulation in Java.

Here are the main differences:

Abstracția Încapsulare
Abstraction aims to gain information. Encapsulation's main aim is to contain or procure information.
In the abstraction process, issues or problems are handled at the interface/ design level. In Encapsulation, problems are handled at a specific implementation level.
Abstraction aids in hiding unwanted information. Encapsulation method applies hiding data within a single unit.
Implemented with interfaces and abstract classes. Implemented with a particular access modifier (public, private, and protected).
Use abstract classes and interfaces to hide complexities. Use getters and setters to hide data.
Objects that extend to abstraction must be encapsulated. An object for encapsulation must not be abstracted.

63. Explain the differences between Abstract class and interface.

Abstract Class Interfață
Abstract Class comes with a default constructor. The interface doesn't have a constructor. So, no further process.
Uses both Abstract and Non-Abstract methods. Only use Abstract methods.
Classes that must extend for Abstract class need only abstract methods throughout their sub-class. Classes that extend to interface must provide implementation across all the methods.
These include instance variables. The interface presents constants only.

64. Explain the main differences between Array and Array List.

Matrice Array List
The size needs to be defined for the declaring array.

String[] name = new String[5]

No size requirements; and modifies dynamically.

ArrayList name = new ArrayList

You must specify an index for putting an object inside the array.

name[1] = “dog”

There are no index requirements.

name.add(“dog”)

Arrays are not parameterised. From Java 5.0 onwards, ArrayLists have a specific parameterised type.

65. Explain the difference between static method and instance method.

Static or Class Method Instance Method
You must declare a method static for a static method. All methods with declaration as static come under Instance method only.
No requirements for creating objects in the Static method. The object is a must for calling the instance method.
You cannot access Instance or Non-static methods in the static context. You can access both static and non-static in the instance method.

66. How to make Constructors static?

Constructors invoked with the object, and static context is part of the class, not the object. Hence, constructors cannot be static and show compiler error if run or executed.

67. Explain the use of 'this' keyword in Java?

In Java, 'this' keyword represents a specific reference on the current object. There are multiple uses for this keyword for referring to the current class properties from a variable, constructors, methods, and more. You can also pass this as an argument within constructors or methods. You can also fetch this as a return value from the current class instance. You can also refer to this as a static context.

Citiți și: Cum să codificați, să compilați și să rulați proiecte Java

68. What is a classloader in Java? What are the different types of ClassLoaders in Java?

Java Classloader's main function is to dynamically load all classes into the Java Virtual Machine (JVM). ClassLoaders are part of the JRE only. So every time we run a Java program, classloader loads the classes to execute this program. A single ClassLoader loads only a specific class on requirements and uses getClassLoader() method to specify the class. These classes are loaded by calling their names, and in case these are not found then it retrieves or throws a ClassNotFoundException or NoClassDefFoundError.

Java ClassLoader uses three principles in performing tasks with delegation, uniqueness, and visibility.
There are three different types of Java ClassLoader:

  • BootStrap ClassLoader:

BootStrap ClassLoader represents the parent or superclass for extension classloader and all other classloaders. It has machine code that loads the pure first Java ClassLoader and takes classes from the rt.jar and also known as Primordial ClassLoader.

  • Extension ClassLoader:

Extension ClassLoader represents the child classloader for the superclass or BootStrap ClassLoader. It loads core java classes from jre/lib/ext , ie, JDK extension library.

  • System ClassLoader:

Application or System ClassLoader are further child classes of Extension ClassLoader. It takes and loads a file from the current directory for the program that you can customise with the 'classpath' switch.

69. Explain the meaning of Java Applet.

Java Applet is a program that executes or runs in the web browser only. Applets are specifically designed to function and embed with HTML web pages. Applets have the capability to function full Java applications with the entire use of Java API. JVM is a must requirement to view an applet on the browser. Applet extends with the use of java.applet.Applet class.

70. What are the types of Applets?

Based on location, there are two types of Java applets as Local Applets that are stored on the same computer or system. The Remote Applets that have files on remote systems.

71 What are immutable objects in Java?

În Java, obiectele imuabile sunt cele a căror stare nu se schimbă după ce au fost create. Obiectele imuabile sunt ideale pentru aplicațiile cu mai multe fire care permit partajarea firelor evitând în același timp sincronizarea. Obiectele imuabile sunt preferate pentru construirea unui cod simplu, sunet și de încredere, care să se potrivească cu o strategie eficientă.

72. Ce înțelegeți prin JRE (Java Runtime Environment)?

Java Runtime Environment este stratul software care oferă suport pentru cerințele minime pentru a rula programe Java pe o mașină. Alături de JDK și JRE, acestea trei constituie elementul fundamental pentru rularea și dezvoltarea programelor Java pe o anumită mașină.

73. Din ce este o parte JDK?

Java Development Kit (JDK) este unul dintre pachetele tehnologice principale esențiale pentru rularea programelor Java. Poate fi implementarea de pe oricare dintre platformele Java, ediția standard, ediția Micro sau Enterprise dezvoltată de Oracle pentru construirea de aplicații pe Windows, Linux sau macOS.

74. Ce este o mașină virtuală Java (JVM)?

Java Virtual Machine (JVM) este una dintre cele trei cerințe fundamentale pentru rularea și executarea programelor Java împreună cu JDK și JRE. JVM are două funcții principale; în primul rând, pentru a permite programelor Java să ruleze fără probleme pe orice mașină sau sistem și în al doilea rând pentru a optimiza memoria pentru a oferi performanță.

75.Care sunt diferențele dintre JDK, JRE și JVM?

JVM
JRE
JDK
Mașină virtuală Java Mediul Java Runtime Kit de dezvoltare Java
Depinde de platformă, cu mai multe opțiuni software și hardware disponibile. Stratul software care oferă suport pentru cerințele minime pentru a rula programe Java pe o mașină.

Editie Standard

Enterprise Edition

Micro Edition

Trei notiuni ca:

  • Specificație
  • Implementarea
  • Instanță
Set de biblioteci + fișiere care împuternicesc JVM în timpul de execuție. JRE + instrumente de dezvoltare
Oferă mediu de rulare pentru execuție. JRE reprezintă implementarea JVM. Mediu de dezvoltare software.

76. Câte tipuri de zone de memorie există în JVM?

Există mai multe tipuri de zone de memorie în JVM:

  • Zona de clasă: Această memorie stochează structuri pre-clasă cu câmpul, grupul, datele metodei și codul.
  • Heap reprezintă memoria de rulare alocată în mod special obiectelor.
  • Stack reprezintă memoria cadrului cu o variabilă locală, rezultate parțiale, fir și un cadru pentru fiecare metodă.
  • Program Counter Register stochează informațiile pentru instrucțiunea curentă cu execuția mașinii virtuale Java.
  • Metoda nativă Stack stochează toate metodele native actuale utilizate în aplicațiile curente.

77. Ce este legarea datelor în Java?

Legarea de date reprezintă conexiunile dintre clasă și metodă, câmp, variabilă, constructori sau corpul unei metode. Java poate gestiona legarea de date atât static, cât și dinamic.

78. Care sunt diferitele tipuri de legare de date în Java?

Există două tipuri cruciale de legare de date în Java.

  • Legarea statică are loc în timpul compilării folosind metode statice, finale și private; cunoscută și sub denumirea de legare timpurie.
  • Dynamic Binding se prezintă în timpul execuției fără informații exacte despre metoda potrivită în timpul compilării.

79. Ce este un socket Java?

Prizele ajută la construirea mecanismelor de comunicare de la cele două computere prin TCP. Prizele sunt în mod ideal mai suficiente și mai flexibile pentru comunicații.

80. Explicați diferența dintre Path și Classpath.

Atât calea cât și Classpath reprezintă variabile de mediu locale. Calea oferă software-ul pentru a localiza fișierele executabile, în timp ce ClassPath specifică locația pentru fișierele .class din sistem.

81. Există o metodă abstractă fără utilizarea clasei abstracte?

Nu, pentru ca o metodă abstractă să existe într-o clasă, trebuie să fie o clasă abstractă.

82. Care este procesul de creare a unei clase de numai citire în Java?

În Java, puteți crea o clasă numai pentru citire, păstrând toate câmpurile private. Această clasă specifică numai pentru citire va avea numai metode getter care returnează proprietate privată. Nu permite modificarea sau modificarea acestei proprietăți, deoarece nu este disponibilă nicio metodă de setare.

 1
2
3
4
5
6
7
8
9
 //O clasă numai pentru citire în Java
elev la clasă publică {    
//membru de date private
private String institute = "MKG" ;    
//metoda getter pentru institut
public String getInstitute (){    
institut de întoarcere ;    
}    
}

83. Care este procesul de creare a unei clase de numai scriere în Java?

În Java, puteți, de asemenea, să creați o clasă numai pentru scriere, păstrând toate câmpurile private doar cu implementarea metodelor de setare.

 1
2
3
4
5
6
7
8
9
 // O clasă numai pentru scriere în Java
elev la clasă publică {    
//membru de date private
institut privat String ;    
//metoda setter pentru institut
public void setInstitute ( String institute ){    
aceasta . institute = institut ;    
}    
}

84. Explicați modul de a accesa o clasă dintr-o altă clasă în Java?

În Java, există două moduri de a accesa o clasă dintr-o altă clasă, cum ar fi:

  • Utilizarea numelui specific: putem accesa o anumită clasă dintr-un pachet diferit utilizând numele calificat sau importăm acel pachet care conține o anumită clasă.
  • Utilizarea căii relative: în mod similar, putem folosi și calea relativă pentru acel pachet cu o anumită clasă.

85. Ce este gestionarea excepțiilor?

Gestionarea excepțiilor reprezintă mecanismul de gestionare a excepțiilor sau a condițiilor anormale în timpul erorilor de rulare pentru a menține fluxul normal al aplicației. Există trei tipuri diferite de excepții Java cu excepție verificată, excepție neverificată și eroare.

86. Explicați diferența dintre excepția bifată și excepția neverificată.

  • Excepțiile verificate sunt clase care extind și mai mult clasele care pot fi aruncate, cu excepția RuntimeException, cum ar fi SQLException, IOException etc. Excepțiile verificate sunt gestionate numai în timpul compilării.
  • Excepțiile nebifate sunt clase care extind RuntimeException, cum ar fi NullPointerException, ArithmeticException etc. și nu sunt gestionate în timpul compilării.

87. Care este clasa de bază pentru excepție și eroare?

Aici, clasa Throwable reprezintă clasa de bază pentru excepție și eroare.

88. Menționați cuvântul cheie de tratare a excepțiilor în Java.

Există cinci cuvinte cheie pentru gestionarea excepțiilor în Java sunt:

Cuvânt cheie Descriere
încerca Acest bloc de încercare definește blocul pentru plasarea codului de execuție. Acest bloc de încercare este în general urmat de utilizarea fie a catch, fie a finally. Deci, ele nu pot fi folosite singure.
captură Scopul principal al blocului Catch este de a gestiona excepția. Trebuie să utilizați acest lucru în combinație cu blocul try și apoi, în sfârșit, în etapa ulterioară.
in cele din urma În cele din urmă, blocul verifică codul important al programului care verifică dacă execuția este finalizată sau nu.
arunca Scopul principal al cuvântului cheie throw este de a arunca o excepție din program.
aruncări Cuvântul cheie throws este folosit în principal pentru declararea excepțiilor și nu pentru a arunca o excepție. Oferă informații despre apariția excepției și se aplică cu o semnătură de metodă.

89. Explicați importanța blocului finally.

Aici, blocul final are o importanță crucială în buna funcționare a programului. Este întotdeauna executat indiferent dacă excepția este gestionată sau nu. În cele din urmă, blocul vine după blocul try sau catch. În JVM, sistemul va rula întotdeauna blocul final înainte de a termina sau închide un fișier. Pentru fiecare bloc de încercare prezent, pot fi zero sau mai multe blocuri de captură, totuși există doar un singur bloc final.

90. Este posibilă rularea unui bloc final fără blocare catch?

Da, un bloc final poate rula urmat fie de un bloc try, fie respectiv catch.

91. Există cazuri în care blocul final nu există?

În cele din urmă, blocul nu rulează sau nu se execută în cazul în care programul există deja sau aduce o eroare fatală pentru întreruperea procesului.

92. Explicați principalele diferențe dintre aruncare și aruncare.

aruncare cuvânt cheie

aruncă cuvântul cheie

Aruncă o excepție. Declară o excepție.
Excepțiile verificate nu se pot propaga numai cu aruncare. Excepțiile verificate se pot propaga cu aruncări.
Este urmată de o instanță. Este urmată de o clasă.
Este folosit doar în metodă. Este folosit cu o semnătură de metodă specifică.
Nu există posibilități pentru mai multe excepții. Întrucât în ​​această procedură, pot fi declarate mai multe excepții.

93. Există posibilitatea ca o excepție să fie reînființată?

Da, dacă există o excepție, atunci aceasta poate fi aruncată din nou.

94. Explicați despre propagarea excepțiilor.

Procesul de excepție în cadrul procedurii de gestionare este cunoscut sub numele de propagare a excepției. De exemplu, o excepție este mai întâi gestionată în partea de sus a stivei și apoi dacă nu este prinsă, atunci excepția scade la metoda anterioară și, dacă nu, apoi coboară mai departe până când excepția este prinsă, fie ajunge la partea de jos. a stivei. Excepțiile verificate în mod implicit nu au propagare.

95. Explicați semnificația firului în Java.

În Java, modul sau fluxul de execuție este cunoscut sub numele de fir. Deci, fiecare program conține un fir denumit firul principal creat de JVM. Dezvoltatorii au puterea de a-și defini firele personalizate prin adăugarea și extinderea clasei Thread folosind interfața.

96. Explicați semnificația pool-ului de fire.

Pool-ul de fire Java este un grup de fire multiple care așteaptă continuu sarcinile alocate. Aici grupurile de fire funcționează sub furnizorul de servicii care extrage un fir din acest pool și apoi le atribuie sarcina pentru un anumit job. Pool-ul de fire adaugă mai multă performanță și stabilitate sistemului.

97. Explicați diferența dintre String și StringBuffer.

Şir

StringBuffer

Clasa String este imuabilă în natură. Clasa StringBuffer, pe de altă parte, este mutabilă.
Corzile sunt lente. StringBuffer altfel este destul de rapid.
Acestea consumă mai multă memorie pentru a crea o instanță nouă. Acestea consumă mai puțină memorie cu șiruri concat.
Șirurile permit compararea conținutului său, deoarece suprascrie metoda equals() din clasa Object. În timp ce clasa StringBuffer nu poate suprascrie metoda equals() din clasa Object.

98. Explicați diferența dintre StringBuffer și StringBuilder.

StringBuffer

StringBuilder

Este sincronizat cu siguranță la fire. Este nesincronizat, fără siguranță pentru fire.
În aceasta, două fire nu au nicio metodă de apel. În aceasta, două fire pot avea metode de apel fără întreruperi.
Mai scăzut sau mai puțin eficient decât StringBuilder. Mai eficient decât StringBuffer.

99. Care este modalitatea de a crea o clasă imuabilă în Java?

În Java, puteți crea o clasă imuabilă declarând o clasă finală cu toți membrii săi ca finali. Să luăm un exemplu pentru a înțelege asta:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 angajat public final { _  
 	final String securityNumber ;  
 	  
 	Angajat public ( String securityNumber ){  
 	aceasta . securityNumber = securityNumber ;  
 	}  
 	  
 	public String getSecurityNumber (){  
 	returnează securityNumber ;  
  }  
    
  }

99. Ce sunt clasele interioare?

Clasele interne Java sunt definite și declarate într-o interfață sau clasă. Clasele interne permit sistemului să grupeze clasele și interfețele în mod logic, făcându-le mai lizibile și ușor de întreținut. Mai mult, aceste clase pot accesa toți membrii clasei exterioare cu metode precum și membrii de date private.

100. Care sunt principalele avantaje și dezavantaje ale utilizării claselor Java Inner?

Principalele avantaje pentru clasele interne Java includ:

  • Accesibilitatea tuturor membrilor din clasele exterioare.
  • Mai puțin cod de scris.
  • Mai multă întreținere și cod lizibil.

Principalele dezavantaje pentru clasele interne Java includ:

  • Mai puțin suport din partea IDE.
  • Un număr mare de clase totale.

101. Definiți tipurile de clase interne în limbajul de programare Java?

Clasele interioare au trei tipuri principale:

  • Membru Clasă interioară care specifică o clasă în cadrul clasei folosind metoda externă.
  • Clasa interioară anonimă pentru extinderea clasei sau specificarea implementării unei interfețe.
  • Clasa interioară locală pentru a crea o clasă în cadrul metodei.

102. Definiți o clasă imbricată.

Clasele imbricate sunt definite sau declarate numai în cadrul unei clase sau interfețe. O clasă imbricată poate accesa în mod specific toți membrii clasei exterioare cu metode și membri de date private. Iată o sintaxă simplă a unei clase imbricate:

 1
2
3
4
5
6
 clasa Java_Outer_class {    
 	 //cod
 	 clasa Java_Nested_class {    
 	  //cod
 	 }    
 	}

103. Puteți explica diferența dintre clasele interioare și clasele imbricate?

Toate clasele interioare sunt definite ca clase imbricate non-statice. Deci, clasele interioare fac parte doar din clasele imbricate.

104. Cum ați defini sensul colecțiilor în Java?

Colecțiile în Java sunt un grup de mai multe obiecte care se prezintă ca o singură unitate; cunoscut în primul rând ca o Colecție de obiecte. Ele sunt, de asemenea, numite cadru de colecție sau arhitectură care oferă spațiu de stocare pentru obiecte și manipulează în continuare designul pentru modificări.

Iată principalele funcții îndeplinite de Colecțiile Java:

  • Triere
  • In cautarea
  • Inserare
  • Manipulare
  • Ștergere

Există multe interfețe și clase care fac parte din colecții.

105. Ce interfețe și clase sunt disponibile în colecții?

Iată lista interfețelor și claselor care sunt disponibile cu colecțiile în Java.

  • Interfețe: Colecție, Coadă, Set sortat, Hartă sortată, Listă, Set, Hartă
  • Clase: liste, vector, listă de matrice, listă legată
  • Seturi: set de hash, set de arbore, set de hash legat
  • Hărți: Hartă Hash, Hash Table, TreeMap, Linked Hashed Map
  • Coadă: Coadă prioritară

106. Explicați sortat și ordonat în raport cu colecțiile în Java?

  • Sortat: Sortarea permite grupului de obiecte să se aplice intern sau extern pentru a le sorta într-o anumită colecție, pe baza proprietăților lor diferite.
  • Ordonat: Definește valorile care sunt sortate pe baza valorilor adăugate în colecție și le repetă într-o anumită ordine.

107. Care sunt diferitele liste disponibile în colecție?

Listează valorile stocate pe baza poziției lor în index, cu duplicarea permisă. Iată principalele tipuri de liste:
Liste de matrice: utilizează interfața cu acces aleatoriu, oferă colectarea comenzilor în funcție de index, nesortate și oferă o iterație rapidă. Iată un exemplu pentru a înțelege asta:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 Fructe de clasă publică {
public static void main ( String [ ] args ){
ArrayList < String > nume = new ArrayList < String >();
nume . adaugă (  măr  );
nume . adăugați ( " avocado " );
nume . adaugă (  cireș  );
nume . adăugați ( " kiwi " );
nume . adăugați (  portocale  );
nume . adăugați ( " banana " );
nume . adăugați ( " kiwi " );
Sistem . afară . println ( nume );
}
}

Ieșirea este după cum urmează:

[Mere, avocado, cireșe, kiwi, portocale, banane, kiwi]

Cu rezultatul, puteți verifica dacă Array List păstrează ordinea inițială de inserare și permite, de asemenea, duplicate. Deși nu sunt sortate.

Vector: folosește și metoda de acces aleatoriu, sunt sincronizate și oferă suport pentru siguranța firelor.

Să înțelegem asta cu un exemplu:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 Fructe de clasă publică {
public static void main ( String [ ] args ){
ArrayList < String > nume = vector nou < String >();
nume . adăugați ( " kiwi " );
nume . adăugați (  portocale  );
nume . adăugați ( " banana " );
nume . adaugă (  măr  );
nume . adăugați ( " avocado " );
nume . adaugă (  cireș  );
nume . adăugați ( " kiwi " );
Sistem . afară . println ( nume );
}
}

Ieșirea este după cum urmează:

[kiwi, portocale, banană, măr, avocado, cireș, kiwi]

Listele de vectori urmează ordinea inițială de inserare și acceptă și duplicatele.

Lista legată: este, de asemenea, o alegere ideală pentru ștergere și inserare, elementele sunt duble legate, dar performanța este lentă.

Exemplu pentru lista legată:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 Fructe de clasă publică {
public static void main ( String [ ] args ){
ArrayList < String > nume = vector nou < String >();
nume . adăugați ( " kiwi " );
nume . adăugați (  portocale  );
nume . adăugați ( " banana " );
nume . adaugă (  măr  );
nume . adăugați ( " avocado " );
nume . adaugă (  cireș  );
nume . adăugați ( " kiwi " );
Sistem . afară . println ( nume );
}
}

Ieșirea este după cum urmează:

[Mere, avocado, cireșe, kiwi, portocale, banane, kiwi]

De asemenea, urmează ordinea inițială de inserare și acceptă duplicate.

108. Care sunt principalele diferențe dintre colecție și colecții în Java?

Principalele diferențe sunt următoarele:

  • Colecția reprezintă o interfață, în timp ce Colecțiile este în special numai pentru clasă.
  • Interfața de colecție oferă mai multe funcționalități pentru structurarea datelor ca listă, set și coadă. În timp ce scopul principal al clasei Collection este limitat la sortarea și sincronizarea elementelor colecției.

109. Explicați coada de prioritate.

Priority Queue definește interfața de coadă pentru gestionarea listelor legate în scopul unei Priority-in și Priority-out. Queue urmează, în general, un algoritm First In First Out (FIFO), totuși puteți pune elemente în coadă în funcție de cerințe specifice, iar apoi putem implementa PriorityQueue pentru personalizare. Cu Priority Queue, depinde de prioritatea heap fie în mod natural, fie prin comparator de prioritatea lor relativă.

110. Când este ideal să utilizați și să comparați interfața Runnable în Java?

Când trebuie să extindem o clasă cu alte clase și nu cu firele de execuție, atunci interfețele rulabile sunt o alegere ideală.

111. Care este diferența dintre metoda start() și run() a clasei thread?

Metoda start() adaugă și creează un fir nou. Și codul din metoda run() este executat numai în noul fir de execuție. În timp ce metoda run() va executa cod numai în firul curent.

112. Ce este Multithreading?

În Java, putem executa mai multe fire simultan, ceea ce este cunoscut sub numele de Multithreading. Ajută programul să efectueze mai multe sarcini în timp ce ocupă mai puțină memorie și oferă performanțe mai mari. În Multithreading, firele sunt ușoare, împart același spațiu și sunt destul de accesibile din toate punctele de vedere.

113. Explicați diferența dintre proces și fire.

Aici principalele diferențe sunt:

  • Un program Java în execuție este denumit proces, în timp ce un fir reprezintă doar un subset al procesului.
  • Procesele reprezintă spații diferite în memorie, în timp ce firele de execuție au aceeași adresă.
  • Procesele sunt complet independente, în timp ce firele sunt doar parte din proces.
  • Comunicarea lentă între procese, în timp ce comunicarea între fire este rapidă.

114. Explicați semnificația comunicării între fire.

Comunicarea între fire este definită ca procesul care permite comunicarea între mai multe fire sincronizate. Scopul său principal este de a evita poolingul de fire în Java. Comunicarea se realizează prin metodele wait(), notify() și notifyAll().

115. Explicați metoda wait().

Cu metoda wait(), puteți permite firului să fie în stadiul de așteptare în timp ce celălalt thread este blocat pe obiect. Astfel, metoda wait() poate adăuga o durată semnificativă de așteptare pentru fire.

Iată o sintaxă pentru a reprezenta acest lucru:

 1
2
3
4
5
6
 public static void main ( String [] args ){
Fir t = fir nou ();
t . începe ();
Sincronizat ( t ) {
Așteaptă ();
}

116. Care este principala diferență dintre metoda notify() și notifyAll() în Java?

Metoda notify() trimite un semnal pentru a trezi doar un anumit thread din pool-ul de așteptare, în timp ce notifyAll() trezește toate firele din etapa de așteptare a pool-ului.

117. Definiți principalele diferențe dintre sleep() și wait().

Sleep() întrerupe sau oprește progresul curent al firului de execuție suspendând execuția pentru o anumită durată, fără a elibera blocarea. While wait() determină o durată de așteptare pentru un fir după invocarea unei metode notify() pentru trezire mai târziu.

118. Explicați metoda join() în raport cu firul în Java.

Metoda join() permite combinarea unui fir cu unul dintre firele continue. Iată o sintaxă pentru metoda join():

 1
2
3
4
5
 public static void main ( String [] args ){
Fir t = fir nou ();
t . începe ();
t . alăturați-vă ();
}

119. Explicați metoda Yield a Thread.

Metoda Yield este o metodă statică și nu eliberează nicio blocare în fire. Aici, o metodă Yield() dă putere firului curent la un fir mai rulabil, permițând în același timp celorlalte fire de execuție să mențină execuția. Astfel, firele cu prioritate egală pot rula în mod regulat.

120. Ce este stadiul de foame?

Înfometarea este o fază în care un fir nu reușește să obțină acces la resursele partajate și nu este capabil să facă niciun progres.

121. Ce este Deadlock pentru un thread?

Deadlock definește o etapă în care două sau mai multe fire de execuție sunt blocate pentru totdeauna în așteptare unul pentru celălalt.

122. Definiți serializarea și deserializarea în Java?

Serializarea este procesul de transformare a stării unui obiect într-un anumit flux de octeți, ideal pentru tehnologiile JPA, JMS, RMI, JPA și Hibernate. În timp ce procesul opus de schimbare a unui flux de octeți într-un obiect se numește deserializare. Ambele procese sunt independente de platformă, astfel încât vă permit să serializați într-o singură platformă și să deserializați într-o platformă complet diferită în mod eficient.

123. Care este importanța variabilelor tranzitorii?

Importanța variabilelor tranzitorii constă în deserializarea care este setată la variabilele implicite și nu este utilizată cu variabilele statice.

124. Ce sunt variabilele volatile?

Variabilele volatile joacă un rol crucial în sincronizarea și citirea din memoria principală, evitând în același timp memoria cache a firelor.

125. Ce este SerialVersionUID?

În procesul Serializat, un obiect este ștampilat cu un număr de ID de versiune specific pentru clasa de obiect respectivă. Acest număr este denumit SerialVersionUID și joacă un rol crucial în verificarea în timpul procesului de deserializare pentru verificarea compatibilității pe expeditor și, respectiv, receptor.

126. Care este procesul de clonare a unui obiect în Java?

Cu clonarea obiectului, puteți crea o copie exactă a obiectului original. Pentru ca clonarea să fie posibilă, o clasă trebuie să aibă suport pentru clonarea cu interfața java.lang.Cloneable și să permită înlocuirea metodei clone() din clasa obiectului original.

Iată o sintaxă simplă pentru metoda clone():

protected Object clone() aruncă CloneNotSupportedException

În cazul în care clona nu o implementează, atunci, în general, aruncă o excepție cu „CloneNotSupportedException”.

127. Definiți clasa care rămâne superclasă pentru fiecare clasă?

Clasa de obiecte.

128. Definiți dacă o clasă de șiruri este mutabilă sau imuabilă?

Clasa String reprezintă o stare imuabilă. Deci, odată ce un obiect este creat, acesta nu se mai poate schimba.

129. Cum faceți diferența între clasa StringBuffer și StringBuilder?

  • StringBuilder este mai rapid decât StringBuffer.
  • StringBuffer este sincronizat în timp ce StringBuilder nu este sincronizat.
  • StringBuffer oferă un mediu thread-safe, în timp ce StringBuilder nu are capacitatea de thread-safe.

130. Care este utilizarea metodei toString() în Java?

În Java, toString() preia sau returnează reprezentarea șirului de la orice obiect.

131. Ce este o colectare a gunoiului în Java?

Pe măsură ce obiectele sunt alocate dinamic prin intermediul operatorului, sistemul Java se ocupă și de dealocarea memoriei utilizate în mod automat în cazul în care nu există referințe pentru obiectul care rămâne pentru o durată semnificativă. Acest proces de a menține sistemul liber de obiecte care nu au utilizare este cunoscut ca Garbage Collection în Java. Scopul principal al colectării gunoiului este de a face gestionarea mai eficientă a memoriei.

132. Cât este de câte ori un colector de gunoi apelează metoda finalize() pentru un anumit obiect?

Puteți apela metoda finalize() în colectarea gunoiului o singură dată.

133. Definiți modalitățile de apelare la colectarea gunoiului.

Există două moduri de a apela colectarea gunoiului:

  • System.gc()
  • Runtime.getRuntime().gc()

134. Putem forța colectarea gunoiului?

Nu, acesta este un proces automat. Puteți apela metoda de colectare a gunoiului, dar nu o puteți forța. Totuși, nu garantează că va fi complet.

135. Care sunt diferitele tipuri de date în Java? Explica.

Iată o listă scurtă pentru a vă ajuta cu tipurile de date:

  • octet – 8 biți
  • scurt - 16 biți
  • char – Unicode pe 16 biți
  • int – 32 de biți (număr întreg)
  • float – 32 de biți (număr real)
  • lung – 64 de biți (precizie unică)
  • dublu – 64 de biți (precizie dublă)

136. Definiți Unicode.

Unicode-urile sunt o modalitate de a defini caracterele internaționale în limbile umane, iar Java folosește această structură Unicode pentru a simboliza caracterele.

137. Definiți literal.

Un literal este o valoare constantă atribuită unei anumite variabile

// Aici 105 este un literal

int num = 105

138. Definiți tipul de turnare în Java?

În cazul atribuirii unei valori a unui tip de date altui tip de date, acestea două pot fi sau nu compatibile și necesită conversie. Java va converti automat în cazul tipurilor de date compatibile. În timp ce, dacă tipurile de date nu sunt compatibile, atunci acestea trebuie să fie turnate pentru o conversie reușită. Castingul are două tipuri de bază: implicit și explicit.

139. Explicați cele două tipuri diferite de tipar?

  • Implicit: definește stocarea valorilor de la tipuri de date mai mici în tipuri de date mai mari, efectuată numai de compilator.
  • Explicit: definește stocarea valorilor de la tipuri de date mai mari în tipuri de date mai mici, care pot duce la pierderea de informații.

Concluzie

Întrebările de mai sus pentru interviul Java vor oferi un început bun pentru pregătirea pentru interviu. Exersați-vă și abilitățile de codificare, totuși, și asigurați-vă că sunteți amănunțit în aceste întrebări și conceptele aferente acestora, astfel încât atunci când intervievatorul trage un Q, să fiți gata să câștigați runda cu A. Oh, și nu uitați 3 respirații (nevăzute) când te prezinți în fața intervievatorului.

Dacă sunteți interesat să aflați mai multe despre Java, dezvoltarea de software full-stack, consultați programul Executive PG în dezvoltare software de la upGrad și IIIT-B – Specializare în dezvoltare full-stack, care este conceput pentru profesioniști care lucrează și oferă peste 500 de ore de formare riguroasă. , peste 9 proiecte și sarcini, statutul de absolvenți IIIT-B, proiecte practice practice și asistență pentru locuri de muncă cu firme de top.

Toate cele bune! Sper că veți face interviuri!!

Aterizează la locul de muncă visat

Aplicați pentru certificarea upGrad PG legată de locuri de muncă în inginerie software