-
„Szedd szét”
public static void main(String args[])
.Az egyik népszerű java interjúkérdés pályakezdőknek, és nagyon egyszerű.
-
public
egy hozzáférés módosító. Ezzel a módszerrel határozzuk meg a hozzáférést. Itt a módosító „nyilvános”, tehát bármely osztály hozzáférhet ehhez a metódushoz. -
static
. Ez a Java kulcsszó azt jelenti, hogy ezt a módszert használjuk anélkül, hogy egy osztály új objektumát hoznánk létre. -
Void
a metódus visszatérési típusa. Ez azt jelenti, hogy a metódus nem ad vissza semmilyen értéket. -
main
a módszer neve. A JVM „ismeri” egy alkalmazás belépési pontjaként (adott aláírással kell rendelkeznie).Main
egy olyan módszer, ahol a fő végrehajtás történik. -
String args[]
. Ez a fő metódusnak átadott paraméter. Itt vannak a String típusú argumentumok, amelyeket a Java-alkalmazása futtatásakor elfogad. Ezeket beírhatja a terminálba.
-
-
Mi a különbség
equals()
a és között==
?Először is a „
==
” egy operátor, mígequals()
egy metódus.==
A referencia-összehasonlításhoz operátort (vagy cím-összehasonlításhoz),equals()
a tartalom-összehasonlításhoz pedig módszert használunk . Ez azt jelenti, hogy==
ellenőrzi, hogy mindkét objektum ugyanarra a memóriahelyre mutat-e, miközbenequals()
összehasonlítja az objektumok értékeit. -
Futtathatunk-e programot
main()
metódus nélkül?Sok alapvető Java interjúkérdés nagyon egyszerű. Mint ez. A válasz tehát rövid: igen, megtehetjük. Például megtehetjük statikus blokk segítségével.
Statikus blokk segítségével inicializálhatja a statikus adattagot.
main
A metódus előtt, az osztálybetöltéskor kerül végrehajtásra .class Example{ Static{ System.out.println("static block is invoked"); } public static void main(String args[]){ System.out.println("Now main method"); } }
A kimenet a következő:
static block is invoked Now main method
Mi a helyzet a fő módszer teljes hiányával? Ha egy közönséges osztályt a main metódus nélkül próbál meg futtatni, a következő hibaüzenetet kapja: A fő metódus nem található a teszt osztályban, kérjük, határozza meg a fő metódust a következőképpen: public static void main (String [] args) vagy JavaFX alkalmazás osztálynak ki kell terjesztenie a javafx.application.Application-t. Maga a hiba azt mondja, hogy ha ez egy JavaFX alkalmazás, és az osztály a javafx.application.Application-ből származik, akkor lehetséges.
-
Mi az
immutable
objektum? Tudszimmutable
objektumot létrehozni?immutable
Az osztály objektumai létrehozásuk után nem módosíthatók . Tehát ha egyszer létrehozta őket, nem tudja megváltoztatni őket. Ha megpróbálja módosítaniImmutable
az objektumot, új objektumot (klónt) kap, és ezt a klónt módosítja a létrehozás során.Jó példa erre , hogy Java nyelven
String
van .immutable
Ez azt jelenti, hogy magát az objektumot nem módosíthatja, de az objektumra mutató hivatkozást megváltoztathatja. -
Hány objektum jön létre a következő kódban?
A Java technikai interjúkérdések egyike, amely a 4-et helyettesíti.
String s1="Hello"; String s2="Hello"; String s3="Hello";
A válasz „csak egy”, mert a Java-nak van String Pool. Amikor létrehozunk egy String objektumot a new() operátor használatával, az új objektumot hoz létre a kupacmemóriában. Ha String literális szintaxist használunk, mint a példánkban, akkor visszaadhat egy meglévő objektumot a String készletből, ha az már létezik.
-
Hány objektum jön létre a következő kódban?
String s = new String("Hello");
2 objektum van. Az egyik a string konstans készletben van (ha még nincs jelen), a másik pedig a kupacban van.
-
Mi a különbség a Java
String
osztályaiStringBuilder
ésStringBuffer
osztályai között?Ott van az egyik vezető java interjúkérdésekben.
Először is
String
egy megváltoztathatatlan osztály. Ez azt jelenti, hogy a tartalmat a létrehozás után nem módosíthatja. A WhileStringBuffer
ésStringBuilder
változtatható osztályok, így később megváltoztathatod őket. Ha megváltoztatjukString
az objektum tartalmát, az új karakterláncot hoz létre, így az eredetit nem módosítja. EzértStringBuffer
jobb a teljesítmény -val, mint -valString
.A fő különbség
StringBuffer
a és aStringBuilder
metódusok közöttStringBuffer
szinkronizált, mígStringBuilder
a metódusai nem. -
Van valami különbség abban,
String
hogy a literal és az operátor használatával jött létrenew()
?Van. Ha létrehozunk egy karakterláncot az operátorral
new()
, akkor az megjelenik a kupacban és a karakterlánc-készletben (ha még nincs jelen). Ha literált használString
, akkor az a karakterlánckészletben jön létre (ha még nincs jelen). A string pool egy tárolóterület a kupacban, amely karakterlánc-literálokat tárol. -
Felülírható
private
vagystatic
metódus Java-ban?Az egyik java trükkös interjúkérdés újoncoknak. Javaban tényleg nem lehet felülírni
private
vagy metódusolni.static
A metódusok nem írhatók felül,
private
mert a privát hozzáférés-meghatározó hatóköre csak az osztályon belül van. Ha felül akarsz írni valamit, akkor legyen szülői és gyermeki osztály. Ha a szuperosztály metódusaprivate
, akkor a gyermekosztály nem használhatja, és a gyermekosztály metódusai új metódusként lesznek kezelve (nem felülírva).Static
A metódusokat sem lehet felülírni, mertstatic
a metódusok magának az osztálynak a részét képezik, és nem az osztály egyetlen objektumának sem. Természetesen ugyanazt a metódust ugyanazzal az aláírással deklarálhatjastatic
a gyermekosztályokban, de a rendszer új metódusként kezeli őket. -
Különbség
Abstract Class
és közöttInterface
Az egyik népszerű java fejlesztői interjúkérdés, amely az OOP elvein alapul. Először is, a Java-ban
interface
viselkedést határoz meg ésabstract class
hierarchiát hoz létre.Absztrakt osztály Felület Lehetséges egy metódustörzs (nem absztrakt metódusok) az absztrakt osztályban Az interfésznek csak absztrakt metódusai lehetnek. A Java 8-ban vagy újabb verziókban lehetővé vált az alapértelmezett metódusok meghatározása és közvetlenül a felületen való implementálása. Ezenkívül a Java 8 interfészei statikus metódusokkal rendelkezhetnek. A példányváltozók lehetnek absztrakt osztályban Egy interfész nem tartalmazhat példányváltozókat. A kivitelezők engedélyezettek A felületnek nem lehet konstruktora. A statikus módszerek megengedettek A statikus módszerek nem megengedettek Az osztálynak csak egy absztrakt szülője lehet Egy interfész különböző osztályokat valósíthat meg Az absztrakt osztály biztosíthatja az interfész megvalósítását. Az interfész nem tudja biztosítani az absztrakt osztály megvalósítását. Egy absztrakt osztály kiterjesztheti a többi Java osztályt és több Java interfészt implementálhat. Egy interfész csak a másik Java interfészt bővítheti. Egy absztrakt Java osztálynak lehetnek privát és védett osztálytagjai A Java felület tagjai alapértelmezés szerint nyilvánosak -
Deklarálhatunk-e
static
változókat és metódusokat egyabstract
osztályban?Igen, lehet
static
változókat és metódusokat deklarálni aabstract
metódusban. A statikus kontextus eléréséhez nincs szükség objektum létrehozására.abstract
Így az osztály nevének használatával hozzáférhetünk az osztályon belül deklarált statikus kontextushozabstract
. -
Milyen típusú memóriaterületeket foglal le a JVM?
Az osztályterület osztályonkénti struktúrákat tárol, például futásidejű állandó készletet, mezőket, metódusadatokat és a metódusokhoz tartozó összes kódot.
A kupac egy futásidejű adatterület, ahol memória van lefoglalva az objektumokhoz.
Stack üzletek kereteket. Lokális változókat és részeredményeket tartalmaz, részt vesz a metódusok meghívásában és visszatérésében. Minden szálhoz tartozik egy privát JVM-verem, amely a szállal egy időben jön létre. Minden alkalommal új keret jön létre, amikor egy metódust meghívnak. Egy keret megsemmisül, amikor a metódushívása befejeződik.
A Program Counter Register az éppen végrehajtott Java virtuálisgép-utasítás címét tartalmazza.
A Native Method Stack tartalmazza az alkalmazásban használt összes natív metódust.
-
Miért nem engedélyezett a többszörös öröklődés a Java-ban?
Tényleg bonyolult lenne. Képzeljünk el három osztályt
A
,B
, ésC
ésC
örökliA
ésB
. Nos,A
ésB
az osztályoknak ugyanaz a metódusuk van, és egy gyermek osztály objektumból hívod meg... Melyik?A
's vagyB
's? Itt van kétértelműség.Ha két osztályt próbál örökölni, a Java fordítási idő hibát jelez.
-
Túlterhelhetjük a
main()
módszert?Természetesen sok módszert használhatunk
main
Java programokban metódus túlterhelés használatával. Próbáld ki! -
Deklarálhatunk-e konstruktort nek
final
?Dehogy. Egy konstruktor nem deklarálható a-nak,
final
mert nem örökölhető. Tehát értelmetlen a konstruktorokat nek nyilvánítanifinal
. Ha azonban megpróbálja megtenni, a Java fordító hibát jelez. -
Deklarálhatunk egy interfészt mint
final
?Nem, ezt nem tehetjük meg. Interfész nem lehet
final
azért, mert az interfészt valamilyen osztálynak kellene megvalósítania a definíciója szerint. Ezért nincs értelme interfészt készítenifinal
. Ha azonban megpróbálja ezt megtenni, a fordító hibát jelez. -
Mi a különbség
static binding
a és közöttdynamic binding
?A
binding
fordítási időben a fordító által feloldhatótstatic
korai kötésnek nevezzük.Binding
az összesstatic
,private
ésfinal
metódus közül fordítási időben történik.A fordítóprogramban
Dynamic binding
nem lehet kiválasztani a meghívandó metódust. A felülírás tökéletes példa arra , hogydynamic binding
. A felülbírálásban mind a szülő, mind a gyermek osztályok ugyanazt a módszert alkalmazzák.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(); } }
-
Hogyan készítsünk csak olvasható osztályt Java-ban?
Ezt úgy teheti meg, hogy az osztály összes mezőjét priváttá teszi. A csak olvasható osztálynak csak getter metódusai vannak, amelyek visszaadják az osztály privát tulajdonát a metódusnak
main
. Ezt a tulajdonságot nem tudja módosítani, ennek oka a setters metódus hiánya.public class HockeyPlayer{ private String team ="Maple leaf"; public String getTeam(){ return team; } }
-
Hogyan készítsünk csak írható osztályt Java-ban?
Ismét be kell töltenie az osztály összes mezőjét
private
. Most a csak írható osztálynak csak setter metódusokat kell tartalmaznia, gettereket nem. Ezért nem tudjuk elolvasni az osztály tulajdonságait.public class HockeyPlayer{ private String team; public void setTeam(String college){ this.team = team; } }
-
Minden
try
blokkot egy blokknak kell követniecatch
, nem?Dehogy. Ez nem létszükséglet. Mindegyik
try
blokk lehetcatch
blokk nélkül. Utána jöhet akár a catchblock, akár a végleges blokk, vagy akár ezek nélkül is.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..."); } } }
Kimenet:
Exception in thread main java.lang.ArithmeticException:/ by zero the other part of the program...
Még egy példa: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"); } } }
Kimenet:
test
PS: A Java 8 előtt az interfészek metódusai csak absztraktak lehettek. A Java 8-ban vagy újabb verziókban lehetővé vált az alapértelmezett metódusok meghatározása és közvetlenül a felületen való implementálása. -
Mi a különbség a kulcsszavak
throw
és athrows
kulcsszavak között?Throws
kivétel deklarálására szolgál, így atry-catch
blokkhoz hasonlóan működik.Throw
A kulcsszó kifejezetten kivételt dob egy metódusból vagy bármely más kódblokkból.Throw
után következik az osztály példányaException
, a dobásokat pedig kivétel osztálynevek követik.Throw
a metódus törzsében egy kivétel dobására szolgál.Throws
metódus aláírásban használatos a metódusban jelenlévő utasításokban előforduló kivételek deklarálására.Egyszerre egy kivételt lehet dobni, de több kivételt is kezelhet
throw
a kulcsszó használatával deklarálva. Több kivételt is deklarálhat, pl.public void method()throws IOException
,SQLException
.
A 21 legjobb Java-interjúkérdés
Számtalan Java-interjúkérdés létezik, és nem gyűjthetjük össze őket egy cikkben. Itt azonban találhat néhány igen gyakori Java-interjúkérdést IT-cégek HR-vezetői szerint.
GO TO FULL VERSION