CodeGym /Java Blog /Random-IT /Le 21 domande principali dell'intervista Java
John Squirrels
Livello 41
San Francisco

Le 21 domande principali dell'intervista Java

Pubblicato nel gruppo Random-IT
Ci sono miriadi di domande di interviste Java e non possiamo raccoglierle tutte in un articolo. Tuttavia qui puoi trovare alcune domande di interviste Java molto comuni, secondo i responsabili delle risorse umane delle aziende IT. Le 21 domande principali dell'intervista Java - 1
  1. “Smontare” public static void main(String args[]).

    Una delle popolari domande di intervista java per matricole e molto facile.

    • publicè un modificatore di accesso. Lo usiamo per specificare l'accesso a questo metodo. Qui il modificatore è "pubblico", quindi qualsiasi classe ha accesso a questo metodo.

    • static. Questa parola chiave Java significa che usiamo questo metodo senza creare un nuovo oggetto di una classe.

    • Voidè il tipo restituito del metodo. Significa che il metodo non restituisce alcun valore.

    • mainè il nome del metodo. JVM lo "conosce" come punto di ingresso a un'applicazione (dovrebbe avere una firma particolare). Mainè un metodo in cui si verifica l'esecuzione principale.

    • String args[]. Questo è il parametro passato al metodo principale. Qui abbiamo gli argomenti di tipo String che la tua applicazione Java accetta quando la esegui. Puoi digitarli sul terminale.

  2. Qual è la differenza tra equals()e ==?

    Innanzitutto, " ==" è un operatore mentre equals()è un metodo. Utilizziamo ==l'operatore per il confronto dei riferimenti (o il confronto degli indirizzi) e equals()il metodo per il confronto dei contenuti. Significa che ==controlla se entrambi gli oggetti puntano alla stessa posizione di memoria mentre equals()confronta i valori negli oggetti.

  3. Possiamo eseguire un programma senza main()metodo?

    Molte domande di intervista di base su Java sono davvero facili. Come questo. Quindi la risposta breve è: sì, possiamo. Ad esempio possiamo farlo usando il blocco statico.

    È possibile utilizzare il blocco statico per inizializzare il membro dati statico. Viene eseguito prima del mainmetodo, al momento del caricamento della classe.

    
    class Example{  
     Static{
    System.out.println("static block is invoked");
    }  
      public static void main(String args[]){  
       System.out.println("Now main method");  
      }  
    }
    

    L'uscita è:

    
    static block is invoked
    Now main method
    
  4. Che dire dell'assenza totale del metodo principale? Se provi a eseguire una classe ordinaria senza il metodo principale, ottieni l'errore successivo: Metodo principale non trovato nella classe Test, definisci il metodo principale come: public static void main (String [] args) o un'applicazione JavaFX la classe deve estendere javafx.application.Application. L'errore stesso dice che se questa è un'applicazione JavaFX e la classe è ereditata da javafx.application.Application, allora è possibile.
  5. Cos'è immutablel'oggetto? Puoi creare immutableun oggetto?

    Non puoi modificare gli oggetti di una immutableclasse dopo la loro creazione. Quindi, una volta che li hai creati, non puoi cambiarli. Se provi a modificare Immutablel'oggetto ottieni un nuovo oggetto (clone) e cambia questo clone durante la creazione.

    Un buon esempio è String, è immutablein Java. Ciò significa che non è possibile modificare l'oggetto stesso, ma è possibile modificare il riferimento all'oggetto.

  6. Quanti oggetti vengono creati nel seguente codice?

    Una delle domande dell'intervista tecnica Java che sostituisce la n. 4.

    
    String s1="Hello";  
    String s2="Hello";  
    String s3="Hello";  
    

    La risposta è "solo una" perché Java ha uno String Pool. Quando creiamo un oggetto String utilizzando l'operatore new(), crea un nuovo oggetto nella memoria heap. Se usiamo la sintassi letterale String, come nel nostro esempio, potrebbe restituire un oggetto esistente dal pool String, se esiste già.

  7. Quanti oggetti vengono creati nel seguente codice?

    
    String s = new String("Hello");
    

    Ci sono 2 oggetti. Uno è nel pool costante di stringhe (se non è già presente) e l'altro è nell'heap.

  8. Qual è la differenza tra Stringe StringBuilderle StringBufferclassi in Java?

    C'è uno dei leader nelle principali domande di intervista Java.

    Prima di tutto Stringè una classe immutabile. Ciò significa che non puoi modificarne il contenuto una volta creato. Mentre StringBuffere StringBuildersono classi mutabili, quindi puoi cambiarle in seguito. Se cambiamo il contenuto dell'oggetto String, crea una nuova stringa quindi non modifica quella originale. Ecco perché le prestazioni con StringBuffersono migliori che con String.

    La principale differenza tra i metodi di StringBuffere StringBuilderthat StringBufferè sincronizzata mentre StringBuilderquelli di non lo sono.

  9. C'è qualche differenza nel Stringfatto che è stato creato usando letterale e con new()operatore?

    C'è. Se creiamo una stringa con l' new()operatore, appare nell'heap e nel pool di stringhe (se non è già presente). Se crei un Stringusando un letterale, viene creato nel pool di stringhe (se non è già presente). Un pool di stringhe è un'area di archiviazione all'interno dell'heap, che memorizza i valori letterali stringa.

  10. Puoi eseguire l'override privateo staticil metodo in Java?

    Una delle domande complicate dell'intervista Java per i principianti. Non puoi davvero eseguire l'override privateo staticil metodo in Java.

    Non è possibile eseguire l'override dei privatemetodi perché l'ambito dell'identificatore di accesso privato è solo all'interno della classe. Quando hai intenzione di sovrascrivere qualcosa, dovremmo avere una classe genitore e figlio. Se il metodo della superclasse è private, la classe figlia non può usarlo e i metodi nella classe figlia verranno trattati come nuovi metodi (non sovrascritti).

    Staticanche i metodi non possono essere sovrascritti, perché statici metodi sono la parte della classe stessa e non una parte di alcun oggetto della classe. Sicuramente puoi dichiarare lo stesso staticmetodo con la stessa firma nelle classi figlie, ma ancora una volta verranno trattati come nuovi metodi.

  11. Differenza tra Abstract ClasseInterface

    Una delle popolari domande di intervista per sviluppatori Java che si basa sui principi OOP. Prima di tutto, in Java interfacedefinisce un comportamento e abstract classcrea una gerarchia.

    Classe astratta Interfaccia
    È possibile avere un corpo del metodo (metodi non astratti) in una classe astratta L'interfaccia può avere solo metodi astratti. In Java 8 o versioni successive, è diventato possibile definire metodi predefiniti e implementarli direttamente nell'interfaccia. Inoltre, le interfacce in Java 8 potrebbero avere metodi statici.
    Le variabili di istanza possono essere in una classe astratta Un'interfaccia non può avere variabili di istanza.
    I costruttori sono ammessi L'interfaccia non può avere alcun costruttore.
    Sono consentiti metodi statici I metodi statici non sono consentiti
    La classe può avere un solo genitore astratto Un'interfaccia può implementare diverse classi
    La classe astratta può fornire l'implementazione dell'interfaccia. L'interfaccia non può fornire l'implementazione della classe astratta.
    Una classe astratta può estendere l'altra classe Java e implementare più interfacce Java. Un'interfaccia può estendere solo l'altra interfaccia Java.
    Una classe astratta Java può avere membri di classe privati ​​e protetti I membri di un'interfaccia Java sono pubblici per impostazione predefinita
  12. Possiamo dichiarare staticvariabili e metodi in una abstractclasse?

    Sì, è possibile dichiarare staticvariabili e metodi in abstractmethod. Non è necessario creare un oggetto per accedere al contesto statico. Quindi possiamo accedere al contesto statico dichiarato all'interno della abstractclasse usando il nome della abstractclasse.

  13. Quali tipi di aree di memoria sono allocate da JVM?

    Class Area memorizza le strutture per classe, ad esempio pool di costanti di runtime, campi, dati del metodo e tutto il codice per i metodi.

    L'heap è un'area di dati di runtime in cui la memoria è allocata agli oggetti.

    Stack memorizza i frame. Contiene variabili locali e risultati parziali e partecipa all'invocazione e al ritorno del metodo. Ogni thread ha uno stack JVM privato, creato contemporaneamente al thread. Ogni volta che viene richiamato un metodo viene creato un nuovo frame. Un frame viene distrutto al termine della sua chiamata al metodo.

    Il registro contatore del programma contiene un indirizzo dell'istruzione della macchina virtuale Java attualmente in esecuzione.

    Native Method Stack contiene tutti i metodi nativi utilizzati nell'applicazione.

  14. Perché l'ereditarietà multipla non è consentita in Java?

    Sarebbe davvero complicato. Immagina tre classi A, B, e Ce Ceredita Ae B. Ora, Ae Ble classi hanno lo stesso metodo e lo chiami da un oggetto classe figlio... Quale? A's o B's? Qui abbiamo l'ambiguità.

    se si tenta di ereditare due classi, Java esegue il rendering dell'errore in fase di compilazione.

  15. Possiamo sovraccaricare il main()metodo?

    Certo, possiamo avere molti mainmetodi in un programma Java usando l'overload dei metodi. Provalo!

  16. Possiamo dichiarare un costruttore come final?

    No. Un costruttore non può essere dichiarato come a finalperché non può essere ereditato. Quindi non ha senso dichiarare i costruttori come final. Tuttavia, se provi a farlo, il compilatore Java ti genera un errore.

  17. Possiamo dichiarare un'interfaccia come final?

    No, non possiamo farlo. Un'interfaccia non può essere finalperché l'interfaccia dovrebbe essere implementata da una classe in base alla sua definizione. Pertanto, non ha senso creare un'interfaccia final. Tuttavia, se provi a farlo, il compilatore mostrerà un errore.

  18. Qual è la differenza tra static bindinge dynamic binding?

    Il bindingche può essere risolto in fase di compilazione dal compilatore viene chiamato statico associazione anticipata. Bindingdi tutti i staticmetodi privatee finalviene eseguito in fase di compilazione.

    Nel Dynamic bindingcompilatore non è possibile scegliere un metodo da chiamare. L'override è un perfetto esempio di dynamic binding. Nell'override, entrambe le classi genitore e figlio hanno lo stesso metodo.

    
    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. Come creare una classe di sola lettura in Java?

    Puoi farlo rendendo privati ​​tutti i campi della classe. La classe di sola lettura ha solo metodi getter che restituiscono al metodo la proprietà privata della classe main. Non sei in grado di modificare questa proprietà, il motivo è la mancanza del metodo setter.

    
    public class HockeyPlayer{    
    private String team ="Maple leaf";    
    public String getTeam(){    
    return team;    
    }    
    }
    
  20. Come creare una classe di sola scrittura in Java?

    Ancora una volta, dovresti creare tutti i campi della classe private. Ora, la tua classe di sola scrittura dovrebbe avere solo metodi setter e nessun getter. Pertanto, non possiamo leggere le proprietà della classe.

    
    public class HockeyPlayer{       
    private String team;    
    public void setTeam(String college){    
    this.team = team;    
    }    
    }    
    
  21. Ogni tryblocco deve essere seguito da un catchblocco, no?

    No. Non è una necessità. Ogni tryblocco può essere senza un catchblocco. Potrebbe essere seguito da un catchblock o da un finally block o addirittura senza di essi.

    
    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...");  
            }  
         }  
    }
    

    Produzione:

    
    Exception in thread main java.lang.ArithmeticException:/ by zero
    the other part of the program...
    

    Un altro esempio:
    
    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");
                }
            }
        }
    

    Produzione:

    
    test
    

    PS: prima di Java 8 i metodi nelle interfacce potevano essere solo astratti. In Java 8 o versioni successive, è diventato possibile definire metodi predefiniti e implementarli direttamente nell'interfaccia.
  22. Qual è la differenza tra throwe throwsparole chiave?

    Throwsè usato per dichiarare un'eccezione, quindi funziona in modo simile al try-catchblocco. Throwparola chiave viene utilizzata per lanciare un'eccezione in modo esplicito da un metodo o da qualsiasi altro blocco di codice.

    Throwè seguito da un'istanza di Exceptionclass e throws è seguito dai nomi delle classi di eccezione.

    Throwviene utilizzato nel corpo del metodo per generare un'eccezione. Throwsviene utilizzato in una firma del metodo per dichiarare le eccezioni che possono verificarsi nelle istruzioni presenti nel metodo.

    È consentito generare un'eccezione alla volta, ma è possibile gestire più eccezioni dichiarandole tramite throwparola chiave. È possibile dichiarare più eccezioni, ad esempio public void method()throws IOException, SQLException.

Qui avevamo solo alcune domande e risposte di interviste Java. Questo articolo è il primo di una serie di interviste. Il prossimo (prossimamente) riguarda le domande sulla struttura dei dati.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION