-
“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.
-
-
Qual è la differenza tra
equals()
e==
?Innanzitutto, "
==
" è un operatore mentreequals()
è un metodo. Utilizziamo==
l'operatore per il confronto dei riferimenti (o il confronto degli indirizzi) eequals()
il metodo per il confronto dei contenuti. Significa che==
controlla se entrambi gli oggetti puntano alla stessa posizione di memoria mentreequals()
confronta i valori negli oggetti. -
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
main
metodo, 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
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.
-
Cos'è
immutable
l'oggetto? Puoi creareimmutable
un oggetto?Non puoi modificare gli oggetti di una
immutable
classe dopo la loro creazione. Quindi, una volta che li hai creati, non puoi cambiarli. Se provi a modificareImmutable
l'oggetto ottieni un nuovo oggetto (clone) e cambia questo clone durante la creazione.Un buon esempio è
String
, èimmutable
in Java. Ciò significa che non è possibile modificare l'oggetto stesso, ma è possibile modificare il riferimento all'oggetto. -
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à.
-
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.
-
Qual è la differenza tra
String
eStringBuilder
leStringBuffer
classi 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. MentreStringBuffer
eStringBuilder
sono classi mutabili, quindi puoi cambiarle in seguito. Se cambiamo il contenuto dell'oggettoString
, crea una nuova stringa quindi non modifica quella originale. Ecco perché le prestazioni conStringBuffer
sono migliori che conString
.La principale differenza tra i metodi di
StringBuffer
eStringBuilder
thatStringBuffer
è sincronizzata mentreStringBuilder
quelli di non lo sono. -
C'è qualche differenza nel
String
fatto che è stato creato usando letterale e connew()
operatore?C'è. Se creiamo una stringa con l'
new()
operatore, appare nell'heap e nel pool di stringhe (se non è già presente). Se crei unString
usando 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. -
Puoi eseguire l'override
private
ostatic
il metodo in Java?Una delle domande complicate dell'intervista Java per i principianti. Non puoi davvero eseguire l'override
private
ostatic
il metodo in Java.Non è possibile eseguire l'override dei
private
metodi 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).Static
anche i metodi non possono essere sovrascritti, perchéstatic
i metodi sono la parte della classe stessa e non una parte di alcun oggetto della classe. Sicuramente puoi dichiarare lo stessostatic
metodo con la stessa firma nelle classi figlie, ma ancora una volta verranno trattati come nuovi metodi. -
Differenza tra
Abstract Class
eInterface
Una delle popolari domande di intervista per sviluppatori Java che si basa sui principi OOP. Prima di tutto, in Java
interface
definisce un comportamento eabstract class
crea 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 -
Possiamo dichiarare
static
variabili e metodi in unaabstract
classe?Sì, è possibile dichiarare
static
variabili e metodi inabstract
method. Non è necessario creare un oggetto per accedere al contesto statico. Quindi possiamo accedere al contesto statico dichiarato all'interno dellaabstract
classe usando il nome dellaabstract
classe. -
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.
-
Perché l'ereditarietà multipla non è consentita in Java?
Sarebbe davvero complicato. Immagina tre classi
A
,B
, eC
eC
ereditaA
eB
. Ora,A
eB
le classi hanno lo stesso metodo e lo chiami da un oggetto classe figlio... Quale?A
's oB
's? Qui abbiamo l'ambiguità.se si tenta di ereditare due classi, Java esegue il rendering dell'errore in fase di compilazione.
-
Possiamo sovraccaricare il
main()
metodo?Certo, possiamo avere molti
main
metodi in un programma Java usando l'overload dei metodi. Provalo! -
Possiamo dichiarare un costruttore come
final
?No. Un costruttore non può essere dichiarato come a
final
perché non può essere ereditato. Quindi non ha senso dichiarare i costruttori comefinal
. Tuttavia, se provi a farlo, il compilatore Java ti genera un errore. -
Possiamo dichiarare un'interfaccia come
final
?No, non possiamo farlo. Un'interfaccia non può essere
final
perché l'interfaccia dovrebbe essere implementata da una classe in base alla sua definizione. Pertanto, non ha senso creare un'interfacciafinal
. Tuttavia, se provi a farlo, il compilatore mostrerà un errore. -
Qual è la differenza tra
static binding
edynamic binding
?Il
binding
che può essere risolto in fase di compilazione dal compilatore viene chiamatostatic
o associazione anticipata.Binding
di tutti istatic
metodiprivate
efinal
viene eseguito in fase di compilazione.Nel
Dynamic binding
compilatore non è possibile scegliere un metodo da chiamare. L'override è un perfetto esempio didynamic 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(); } }
-
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; } }
-
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; } }
-
Ogni
try
blocco deve essere seguito da uncatch
blocco, no?No. Non è una necessità. Ogni
try
blocco può essere senza uncatch
blocco. 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. -
Qual è la differenza tra
throw
ethrows
parole chiave?Throws
è usato per dichiarare un'eccezione, quindi funziona in modo simile altry-catch
blocco.Throw
parola 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 diException
class e throws è seguito dai nomi delle classi di eccezione.Throw
viene utilizzato nel corpo del metodo per generare un'eccezione.Throws
viene 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
throw
parola chiave. È possibile dichiarare più eccezioni, ad esempiopublic void method()throws IOException
,SQLException
.
Le 21 domande principali dell'intervista Java
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.
GO TO FULL VERSION