
-
„Dezasamblați”
public static void main(String args[])
.Una dintre întrebările de interviu java populare pentru cei care sunt în stare de curățare și una foarte ușoară.
-
public
este un modificator de acces. Îl folosim pentru a specifica accesul la această metodă. Aici modificatorul este „public”, deci orice clasă are acces la această metodă. -
static
. Acest cuvânt cheie Java înseamnă că folosim această metodă fără a crea un nou obiect al unei clase. -
Void
este tipul de returnare al metodei. Înseamnă că metoda nu returnează nicio valoare. -
main
este numele metodei. JVM îl „știe” ca un punct de intrare într-o aplicație (ar trebui să aibă o anumită semnătură).Main
este o metodă în care are loc execuția principală. -
String args[]
. Acesta este parametrul transmis metodei principale. Aici avem argumentele de tip String pe care aplicația ta Java le acceptă atunci când o rulezi. Le puteți tasta pe terminal.
-
-
Care este diferența dintre
equals()
și==
?În primul rând, „
==
” este un operator, în timp ceequals()
este o metodă. Folosim==
operator pentru compararea referințelor (sau compararea adreselor) șiequals()
metoda pentru compararea conținutului. Înseamnă că verifică==
dacă ambele obiecte indică aceeași locație de memorie în timp ceequals()
compară valorile din obiecte. -
Putem executa un program fără
main()
metodă?Multe întrebări de bază ale interviului Java sunt cu adevărat ușoare. Ca acesta. Deci răspunsul scurt este: da, putem. De exemplu, o putem face folosind blocul static.
Puteți utiliza blocul static pentru a inițializa membrul de date static. Se execută înaintea
main
metodei, la momentul încărcării clasei.class Example{ Static{ System.out.println("static block is invoked"); } public static void main(String args[]){ System.out.println("Now main method"); } }
Ieșirea este:
static block is invoked Now main method
Dar absența totală a metodei principale? Dacă încercați să rulați o clasă obișnuită fără metoda principală, ați primit următoarea eroare: Metoda principală nu a fost găsită în clasa Test, vă rugăm să definiți metoda principală ca: public static void main (String [] args) sau o aplicație JavaFX clasa trebuie să extindă javafx.application.Application. Eroarea în sine spune că dacă aceasta este o aplicație JavaFX și clasa este moștenită de la javafx.application.Application, atunci este posibil.
-
Ce este
immutable
obiectul? Puteți creaimmutable
obiecte?Nu puteți modifica obiectele unei
immutable
clase după crearea lor. Deci, odată ce le creați, nu le puteți modifica. Dacă încercați să modificațiImmutable
un obiect, obțineți un nou obiect (clonă) și modificați această clonă în timpul creării.Un bun exemplu este
String
, esteimmutable
în Java. Aceasta înseamnă că nu puteți schimba obiectul în sine, dar puteți modifica referința la obiect. -
Câte obiecte sunt create în următorul cod?
Una dintre întrebările de interviu tehnic Java care înlocuiește numărul 4.
String s1="Hello"; String s2="Hello"; String s3="Hello";
Răspunsul este „doar unul”, deoarece Java are un String Pool. Când creăm un obiect String folosind operatorul new(), acesta creează un nou obiect în memoria heap. Dacă folosim sintaxa literală String, ca în exemplul nostru, poate returna un obiect existent din pool-ul String, dacă acesta există deja.
-
Câte obiecte sunt create în următorul cod?
String s = new String("Hello");
Sunt 2 obiecte. Unul este în pool constant de șiruri (dacă nu este deja prezent), iar celălalt este în heap.
-
Care este diferența dintre și
String
clasele din Java?StringBuilder
StringBuffer
Există unul dintre liderii în topul întrebărilor de interviu Java.
În primul rând
String
este o clasă imuabilă. Asta înseamnă că nu-i poți modifica conținutul odată creat. În timp ceStringBuffer
șiStringBuilder
sunt clase mutabile, așa că le puteți schimba mai târziu. Dacă schimbăm conținutulString
obiectului, acesta creează un șir nou, deci nu îl modifică pe cel original. De aceea, performanța cuStringBuffer
este mai bună decât cuString
.Principala diferență între metodele
StringBuffer
șiStringBuilder
aceleaStringBuffer
sunt sincronizate în timp ceStringBuilder
metodele lui nu sunt. -
Există vreo diferență în
String
faptul că a fost creat folosind literal și cunew()
operator?Există. Dacă creăm un String cu
new()
operatorul, acesta apare în heap și în pool-ul de șiruri (dacă nu este deja prezent). Dacă creați unString
folosind un literal, acesta este creat în pool-ul de șiruri (dacă nu este deja prezent). Un pool de șiruri este o zonă de stocare în heap, care stochează literale de șir. -
Puteți suprascrie
private
saustatic
metoda în Java?Una dintre întrebările de interviu complicate de Java pentru începători. Chiar nu puteți suprascrie
private
saustatic
metoda în Java.Nu puteți suprascrie
private
metodele deoarece domeniul de aplicare al specificatorului de acces privat este doar în cadrul clasei. Când vei trece peste ceva, ar trebui să avem o clasă pentru părinți și copii. Dacă metoda superclasei esteprivate
, clasa copil nu o poate folosi, iar metodele din clasa copil vor fi tratate ca metode noi (nu sunt suprascrise).Static
De asemenea, metodele nu pot fi suprascrise, deoarecestatic
metodele sunt o parte a clasei în sine și nu o parte a vreunui obiect al clasei. Sigur că puteți declara aceeașistatic
metodă cu aceeași semnătură în clasele copil, dar din nou, acestea vor fi tratate ca metode noi. -
Diferența dintre
Abstract Class
șiInterface
Una dintre întrebările populare de interviu pentru dezvoltatori Java care se referă la principiile OOP. În primul rând, în Java
interface
definește un comportament șiabstract class
creează ierarhie.Clasa abstracte Interfață Este posibil să existe un corp de metodă (metode non-abstracte) în clasa abstractă Interfața poate avea doar metode abstracte. În Java 8 sau mai nou, a devenit posibil să se definească metode implicite și să le implementeze direct în interfață. De asemenea, interfețele din Java 8 ar putea avea metode statice. Variabilele de instanță pot fi în clasa abstractă O interfață nu poate avea variabile de instanță. Constructorii au voie Interfața nu poate avea niciun constructor. Sunt permise metode statice Metodele statice nu sunt permise Clasa poate avea un singur părinte abstract O interfață poate implementa diferite clase Clasa abstractă poate oferi implementarea interfeței. Interfața nu poate furniza implementarea clasei abstracte. O clasă abstractă are voie să extindă cealaltă clasă Java și să implementeze mai multe interfețe Java. O interfață poate extinde numai cealaltă interfață Java. O clasă abstractă Java poate avea membri de clasă privați și protejați Membrii unei interfețe Java sunt publici în mod implicit -
Putem declara
static
variabile și metode într-oabstract
clasă?Da, este posibil să declarați
static
variabile și metode înabstract
metodă. Nu există nicio cerință de a crea un obiect pentru a accesa contextul static. Deci ni se permite să accesăm contextul static declarat în interiorul claseiabstract
folosind numele claseiabstract
. -
Ce tipuri de zone de memorie sunt alocate de JVM?
Zona de clasă stochează structuri per clasă, de exemplu, grupul de constante de rulare, câmpurile, datele metodelor și tot codul pentru metode.
Heap este o zonă de date de rulare în care memoria este alocată obiectelor.
Stack depozite rame. Conține variabile locale și rezultate parțiale și participă la invocarea și returnarea metodei. Fiecare thread are o stivă JVM privată, creată în același timp cu firul. Un nou cadru este creat de fiecare dată când este invocată o metodă. Un cadru este distrus când se încheie invocarea metodei sale.
Program Counter Register conține o adresă a instrucțiunii de mașină virtuală Java în curs de executare.
Native Method Stack conține toate metodele native care sunt utilizate în aplicație.
-
De ce moștenirea multiplă nu este permisă în java?
Ar fi chiar complicat. Imaginează-ți trei clase
A
,B
, șiC
șiC
moșteneșteA
șiB
. Acum,A
șiB
clasele au aceeași metodă și o numiți dintr-un obiect de clasă copil... Care?A
ale lui sauB
ale lui? Aici avem ambiguitate.dacă încercați să moșteniți două clase, Java redă o eroare de timp de compilare.
-
Putem supraîncărca
main()
metoda?Sigur, avem voie să avem multe
main
metode într-un program Java folosind supraîncărcarea metodelor. Încearcă! -
Putem declara un constructor ca
final
?Nu. Un constructor nu poate fi declarat ca a
final
deoarece nu poate fi moștenit. Deci, nu are sens să declari constructori cafinal
. Cu toate acestea, dacă încercați să o faceți, compilatorul Java vă afișează o eroare. -
Putem declara o interfață ca
final
?Nu, nu putem face asta. O interfață nu poate fi
final
deoarece interfața ar trebui implementată de o clasă conform definiției sale. Prin urmare, nu are sens să faci o interfațăfinal
. Cu toate acestea, dacă încercați să faceți acest lucru, compilatorul va afișa o eroare. -
Care este diferența dintre
static binding
șidynamic binding
?Cea
binding
care poate fi rezolvată în timpul compilării de către compilator este numităstatic
sau legarea timpurie.Binding
dintre toate metodelestatic
,private
șifinal
se face în timpul compilării.În
Dynamic binding
compilator nu se poate alege o metodă care să fie apelată. Suprascrierea este un exemplu perfect dedynamic binding
. În anulare, atât clasele părinte, cât și cele copil au aceeași metodă.Static Binding class Cat{ private void talk() {System.out.println("cat is mewing..."); } public static void main(String args[]){ Cat cat=new Cat(); cat.talk(); } } Dynamic Binding class Animal{ void talk(){ System.out.println("animal is talking..."); } } class Cat extends Animal{ void talk(){ System.out.println("cat is talking..."); } public static void main(String args[]){ Animal animal=new Cat(); animal.talk(); } }
-
Cum se creează o clasă numai pentru citire în Java?
Puteți face acest lucru făcând private toate câmpurile clasei. Clasa numai în citire are numai metode getter care returnează proprietatea privată a clasei metodei
main
. Nu puteți modifica această proprietate, motivul este lipsa metodei setterilor.public class HockeyPlayer{ private String team ="Maple leaf"; public String getTeam(){ return team; } }
-
Cum se creează o clasă numai pentru scriere în Java?
Din nou, ar trebui să creați toate câmpurile clasei
private
. Acum, clasa dvs. de numai scriere ar trebui să aibă numai metode setter și nu getters. Prin urmare, nu putem citi proprietățile clasei.public class HockeyPlayer{ private String team; public void setTeam(String college){ this.team = team; } }
-
Fiecare
try
bloc trebuie să fie urmat de uncatch
bloc, nu-i așa?Nu. Nu este o necesitate. Fiecare
try
bloc poate fi fără uncatch
bloc. Ar putea fi urmat fie de un catchblock, fie de un finally block sau chiar fără ele.public class Main{ public static void main(String []args){ try{ int variable = 1; System.out.println(variable/0); } finally { System.out.println("the other part of the program..."); } } }
Ieșire:
Exception in thread main java.lang.ArithmeticException:/ by zero the other part of the program...
Inca un exemplu:class Main { public static void main(String[] args) throws IOException { try(InputStreamReader inputStreamReader = new InputStreamReader(System.in); BufferedReader reader = new BufferedReader(inputStreamReader)){ System.out.println("test"); } } }
Ieșire:
test
PS: Înainte de Java 8, metodele din interfețe puteau fi doar abstracte. În Java 8 sau mai nou, a devenit posibil să se definească metode implicite și să le implementeze direct în interfață. -
Care este diferența dintre
throw
șithrows
cuvinte cheie?Throws
este folosit pentru a declara o excepție, așa că funcționează similar cutry-catch
blocul.Throw
cuvântul cheie este folosit pentru a arunca o excepție în mod explicit de la o metodă sau orice alt bloc de cod.Throw
este urmată de o instanță deException
clasă și throws este urmată de numele claselor de excepție.Throw
este folosit în corpul metodei pentru a arunca o excepție.Throws
este utilizat într-o semnătură de metodă pentru a declara excepțiile care pot apărea în instrucțiunile prezente în metodă.Este permis să aruncați o excepție la un moment dat, dar puteți gestiona mai multe excepții declarându-le folosind
throw
cuvântul cheie. Puteți declara mai multe excepții, de exemplu,public void method()throws IOException
,SQLException
.
GO TO FULL VERSION