CodeGym /Blog Java /Aleatoriu /Top 21 de întrebări pentru interviul Java
John Squirrels
Nivel
San Francisco

Top 21 de întrebări pentru interviul Java

Publicat în grup
Există nenumărate întrebări de interviu Java și nu le putem colecta pe toate într-un singur articol. Cu toate acestea, aici puteți găsi câteva întrebări foarte frecvente de interviu Java, potrivit managerilor de resurse umane ai companiilor IT. Top 21 de întrebări de interviu Java - 1
  1. „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ă.

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

    • Voideste tipul de returnare al metodei. Înseamnă că metoda nu returnează nicio valoare.

    • maineste numele metodei. JVM îl „știe” ca un punct de intrare într-o aplicație (ar trebui să aibă o anumită semnătură). Maineste 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.

  2. Care este diferența dintre equals()și ==?

    În primul rând, „ ==” este un operator, în timp ce equals()este o metodă. Folosim ==operator pentru compararea referințelor (sau compararea adreselor) și equals()metoda pentru compararea conținutului. Înseamnă că verifică ==dacă ambele obiecte indică aceeași locație de memorie în timp ce equals()compară valorile din obiecte.

  3. 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 mainmetodei, 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
    
  4. 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.
  5. Ce este immutableobiectul? Puteți crea immutableobiecte?

    Nu puteți modifica obiectele unei immutableclase după crearea lor. Deci, odată ce le creați, nu le puteți modifica. Dacă încercați să modificați Immutableun obiect, obțineți un nou obiect (clonă) și modificați această clonă în timpul creării.

    Un bun exemplu este String, este immutableîn Java. Aceasta înseamnă că nu puteți schimba obiectul în sine, dar puteți modifica referința la obiect.

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

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

  8. Care este diferența dintre și Stringclasele din Java?StringBuilderStringBuffer

    Există unul dintre liderii în topul întrebărilor de interviu Java.

    În primul rând Stringeste o clasă imuabilă. Asta înseamnă că nu-i poți modifica conținutul odată creat. În timp ce StringBufferși StringBuildersunt clase mutabile, așa că le puteți schimba mai târziu. Dacă schimbăm conținutul Stringobiectului, acesta creează un șir nou, deci nu îl modifică pe cel original. De aceea, performanța cu StringBuffereste mai bună decât cu String.

    Principala diferență între metodele StringBufferși StringBuilderacelea StringBuffersunt sincronizate în timp ce StringBuildermetodele lui nu sunt.

  9. Există vreo diferență în Stringfaptul că a fost creat folosind literal și cu new()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 un Stringfolosind 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.

  10. Puteți suprascrie privatesau staticmetoda în Java?

    Una dintre întrebările de interviu complicate de Java pentru începători. Chiar nu puteți suprascrie privatesau staticmetoda în Java.

    Nu puteți suprascrie privatemetodele 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 este private, clasa copil nu o poate folosi, iar metodele din clasa copil vor fi tratate ca metode noi (nu sunt suprascrise).

    StaticDe asemenea, metodele nu pot fi suprascrise, deoarece staticmetodele sunt o parte a clasei în sine și nu o parte a vreunui obiect al clasei. Sigur că puteți declara aceeași staticmetodă cu aceeași semnătură în clasele copil, dar din nou, acestea vor fi tratate ca metode noi.

  11. 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 interfacedefinește un comportament și abstract classcreează 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
  12. Putem declara staticvariabile și metode într-o abstractclasă?

    Da, este posibil să declarați staticvariabile și metode în abstractmetodă. 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 clasei abstractfolosind numele clasei abstract.

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

  14. De ce moștenirea multiplă nu este permisă în java?

    Ar fi chiar complicat. Imaginează-ți trei clase A, B, și Cși Cmoștenește Ași B. Acum, Ași Bclasele au aceeași metodă și o numiți dintr-un obiect de clasă copil... Care? Aale lui sau Bale lui? Aici avem ambiguitate.

    dacă încercați să moșteniți două clase, Java redă o eroare de timp de compilare.

  15. Putem supraîncărca main()metoda?

    Sigur, avem voie să avem multe mainmetode într-un program Java folosind supraîncărcarea metodelor. Încearcă!

  16. Putem declara un constructor ca final?

    Nu. Un constructor nu poate fi declarat ca a finaldeoarece nu poate fi moștenit. Deci, nu are sens să declari constructori ca final. Cu toate acestea, dacă încercați să o faceți, compilatorul Java vă afișează o eroare.

  17. Putem declara o interfață ca final?

    Nu, nu putem face asta. O interfață nu poate fi finaldeoarece 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.

  18. Care este diferența dintre static bindingși dynamic binding?

    Cea bindingcare poate fi rezolvată în timpul compilării de către compilator este numită staticsau legarea timpurie. Bindingdintre toate metodele static, privateși finalse face în timpul compilării.

    În Dynamic bindingcompilator nu se poate alege o metodă care să fie apelată. Suprascrierea este un exemplu perfect de dynamic 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();  
     }  
    }
    
  19. 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;    
    }    
    }
    
  20. 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;    
    }    
    }    
    
  21. Fiecare trybloc trebuie să fie urmat de un catchbloc, nu-i așa?

    Nu. Nu este o necesitate. Fiecare trybloc poate fi fără un catchbloc. 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ță.
  22. Care este diferența dintre throwși throwscuvinte cheie?

    Throwseste folosit pentru a declara o excepție, așa că funcționează similar cu try-catchblocul. Throwcuvântul cheie este folosit pentru a arunca o excepție în mod explicit de la o metodă sau orice alt bloc de cod.

    Throweste urmată de o instanță de Exceptionclasă și throws este urmată de numele claselor de excepție.

    Throweste folosit în corpul metodei pentru a arunca o excepție. Throwseste 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 throwcuvântul cheie. Puteți declara mai multe excepții, de exemplu, public void method()throws IOException, SQLException.

Aici am avut doar câteva întrebări și răspunsuri la interviul Java. Acest articol este primul dintr-o serie de interviuri. Următorul (în curând) este despre întrebări privind structura datelor.
Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION