CodeGym /Java blog /Véletlen /A 21 legjobb Java-interjúkérdés
John Squirrels
Szint
San Francisco

A 21 legjobb Java-interjúkérdés

Megjelent a csoportban
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. A 21 legjobb Java-interjúkérdés – 1
  1. „Szedd szét” public static void main(String args[]).

    Az egyik népszerű java interjúkérdés pályakezdőknek, és nagyon egyszerű.

    • publicegy 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.

    • Voida metódus visszatérési típusa. Ez azt jelenti, hogy a metódus nem ad vissza semmilyen értéket.

    • maina módszer neve. A JVM „ismeri” egy alkalmazás belépési pontjaként (adott aláírással kell rendelkeznie). Mainegy 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.

  2. Mi a különbség equals()a és között ==?

    Először is a „ ==” egy operátor, míg equals()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özben equals()összehasonlítja az objektumok értékeit.

  3. 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. mainA 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
    
  4. 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.
  5. Mi az immutableobjektum? Tudsz immutableobjektumot létrehozni?

    immutableAz 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ítani Immutableaz 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 Stringvan . immutableEz azt jelenti, hogy magát az objektumot nem módosíthatja, de az objektumra mutató hivatkozást megváltoztathatja.

  6. 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.

  7. 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.

  8. Mi a különbség a Java Stringosztályai StringBuilderés StringBufferosztályai között?

    Ott van az egyik vezető java interjúkérdésekben.

    Először is Stringegy megváltoztathatatlan osztály. Ez azt jelenti, hogy a tartalmat a létrehozás után nem módosíthatja. A While StringBufferés StringBuilderváltoztatható osztályok, így később megváltoztathatod őket. Ha megváltoztatjuk Stringaz objektum tartalmát, az új karakterláncot hoz létre, így az eredetit nem módosítja. Ezért StringBufferjobb a teljesítmény -val, mint -val String.

    A fő különbség StringBuffera és a StringBuildermetódusok között StringBufferszinkronizált, míg StringBuildera metódusai nem.

  9. Van valami különbség abban, Stringhogy a literal és az operátor használatával jött létre new()?

    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ál String, 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.

  10. Felülírható privatevagy staticmetódus Java-ban?

    Az egyik java trükkös interjúkérdés újoncoknak. Javaban tényleg nem lehet felülírni privatevagy metódusolni.static

    A metódusok nem írhatók felül, privatemert 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ódusa private, akkor a gyermekosztály nem használhatja, és a gyermekosztály metódusai új metódusként lesznek kezelve (nem felülírva).

    StaticA metódusokat sem lehet felülírni, mert statica 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álhatja statica gyermekosztályokban, de a rendszer új metódusként kezeli őket.

  11. 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 interfaceviselkedést határoz meg és abstract classhierarchiá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
  12. Deklarálhatunk-e staticváltozókat és metódusokat egy abstractosztályban?

    Igen, lehet staticváltozókat és metódusokat deklarálni a abstractmetó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 kontextushoz abstract.

  13. 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.

  14. 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, és Cés Cörökli Aés B. Nos, Aés Baz osztályoknak ugyanaz a metódusuk van, és egy gyermek osztály objektumból hívod meg... Melyik? A's vagy B'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.

  15. Túlterhelhetjük a main()módszert?

    Természetesen sok módszert használhatunk mainJava programokban metódus túlterhelés használatával. Próbáld ki!

  16. Deklarálhatunk-e konstruktort nek final?

    Dehogy. Egy konstruktor nem deklarálható a-nak, finalmert nem örökölhető. Tehát értelmetlen a konstruktorokat nek nyilvánítani final. Ha azonban megpróbálja megtenni, a Java fordító hibát jelez.

  17. Deklarálhatunk egy interfészt mint final?

    Nem, ezt nem tehetjük meg. Interfész nem lehet finalazé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íteni final. Ha azonban megpróbálja ezt megtenni, a fordító hibát jelez.

  18. Mi a különbség static bindinga és között dynamic binding?

    A bindingfordítási időben a fordító által feloldhatót statickorai kötésnek nevezzük. Bindingaz összes static, privateés finalmetódus közül fordítási időben történik.

    A fordítóprogramban Dynamic bindingnem lehet kiválasztani a meghívandó metódust. A felülírás tökéletes példa arra , hogy dynamic 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();  
     }  
    }
    
  19. 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;    
    }    
    }
    
  20. 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;    
    }    
    }    
    
  21. Minden tryblokkot egy blokknak kell követnie catch, nem?

    Dehogy. Ez nem létszükséglet. Mindegyik tryblokk lehet catchblokk 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.
  22. Mi a különbség a kulcsszavak throwés a throwskulcsszavak között?

    Throwskivétel deklarálására szolgál, így a try-catchblokkhoz hasonlóan működik. ThrowA kulcsszó kifejezetten kivételt dob ​​egy metódusból vagy bármely más kódblokkból.

    Throwután következik az osztály példánya Exception, a dobásokat pedig kivétel osztálynevek követik.

    Throwa metódus törzsében egy kivétel dobására szolgál. Throwsmetó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 throwa kulcsszó használatával deklarálva. Több kivételt is deklarálhat, pl. public void method()throws IOException, SQLException.

Itt csak néhány Java-interjú kérdésünk és válaszunk volt. Ez a cikk az interjúsorozat első része. A következő (hamarosan) az adatszerkezeti kérdésekről szól.
Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION