Scarica il pdf
Abbiamo compilato le domande e risposte dell'intervista Java più frequenti che ti aiuteranno a prepararti per le domande dell'intervista Java di base che un intervistatore potrebbe chiederti durante l'intervista. In questo elenco di domande di intervista su Java di base, abbiamo coperto tutte le domande di intervista su Java di base e avanzate più frequenti con risposte dettagliate per aiutarti a cancellare il colloquio di lavoro.
Il seguente elenco contiene 100 importanti domande di intervista Core Java per matricole, nonché domande e risposte di interviste Java per programmatori esperti per aiutarli a prepararsi per l'intervista. Questa guida dettagliata alle domande del colloquio per la programmazione Java ti aiuterà a risolvere facilmente il tuo colloquio di lavoro.
Domande e risposte al colloquio di base su Java per matricole ed esperti
Q1. Qual è la differenza tra una classe interna e una sottoclasse?
Risposta: Una classe interna è una classe annidata all'interno di un'altra classe. Una classe interna ha diritti di accesso per la classe che la sta annidando e può accedere a tutte le variabili e metodi definiti nella classe esterna.
Una sottoclasse è una classe che eredita da un'altra classe chiamata superclasse. La sottoclasse può accedere a tutti i metodi e campi pubblici e protetti della sua super classe.
Q2. Quali sono i vari specificatori di accesso per le classi Java?
Risposta: In Java, gli specificatori di accesso sono le parole chiave utilizzate prima del nome di una classe che definisce l'ambito di accesso. I tipi di specificatori di accesso per le classi sono:
1. Pubblico: Classe, Metodo, Campo è accessibile da qualsiasi luogo.
2. Protected: Method, Field è accessibile dalla stessa classe a cui appartengono o dalle sottoclassi, e dalla classe dello stesso pacchetto, ma non dall'esterno.
3. Predefinito: metodo, campo, classe è accessibile solo dallo stesso pacchetto e non dall'esterno del suo pacchetto nativo.
4. Private: Method, Field è accessibile dalla stessa classe a cui appartengono.
Q3. Qual è lo scopo dei metodi statici e delle variabili statiche?
Risposta: Quando è necessario condividere un metodo o una variabile tra più oggetti di una classe invece di creare copie separate per ogni oggetto, utilizziamo la parola chiave statica per rendere un metodo o una variabile condivisi per tutti gli oggetti.
Q4. Cos'è l'incapsulamento dei dati e qual è il suo significato?
Risposta: L'incapsulamento è un concetto della programmazione orientata agli oggetti per combinare proprietà e metodi in una singola unità.
L'incapsulamento aiuta i programmatori a seguire un approccio modulare per lo sviluppo del software poiché ogni oggetto ha il proprio insieme di metodi e variabili e serve le sue funzioni indipendentemente dagli altri oggetti. L'incapsulamento serve anche per nascondere i dati.
Q5. Cos'è una classe singleton? Fornisci un esempio pratico del suo utilizzo.
Una classe singleton in java può avere una sola istanza e quindi tutti i suoi metodi e variabili appartengono a una sola istanza. Il concetto di classe Singleton è utile per le situazioni in cui è necessario limitare il numero di oggetti per una classe.
Il miglior esempio di scenario di utilizzo singleton è quando esiste un limite di avere una sola connessione a un database a causa di alcune limitazioni del driver o per problemi di licenza.
Q6. Cosa sono i loop in Java? Quali sono i tre tipi di loop?
Risposta: Il looping viene utilizzato nella programmazione per eseguire ripetutamente un'istruzione o un blocco di istruzioni. Esistono tre tipi di loop in Java:
1) Per loop
I cicli for vengono utilizzati in java per eseguire ripetutamente le istruzioni per un determinato numero di volte. I cicli For vengono utilizzati quando il programmatore conosce il numero di volte per eseguire le istruzioni.
2) While Loops
Il ciclo While viene utilizzato quando determinate istruzioni devono essere eseguite ripetutamente finché una condizione non viene soddisfatta. Nei cicli while, la condizione viene verificata prima dell'esecuzione delle istruzioni.
3) Fai While Loops
Il ciclo Do While è uguale al ciclo While con la sola differenza che la condizione viene verificata dopo l'esecuzione del blocco di istruzioni. Quindi, in caso di ciclo do while, le istruzioni vengono eseguite almeno una volta.
Q7: Cos'è un loop infinito? Come viene dichiarato il ciclo infinito?
Risposta: Un ciclo infinito viene eseguito senza alcuna condizione e viene eseguito all'infinito. Un ciclo infinito può essere interrotto definendo qualsiasi logica di interruzione nel corpo dei blocchi di istruzioni.
Il ciclo infinito è dichiarato come segue:
for (;;){// Statements to execute// Add any loop breaking logic}
Q8. Qual è la differenza tra continue e break statement?
Risposta: interrompi e continua sono due importanti parole chiave utilizzate nei cicli. Quando una parola chiave break viene utilizzata in un ciclo, il ciclo viene interrotto istantaneamente mentre quando viene utilizzata la parola chiave continue, l'iterazione corrente viene interrotta e il ciclo continua con l'iterazione successiva.
Nell'esempio seguente, Loop viene interrotto quando il contatore raggiunge 4.
for (counter = 0; counter & lt; 10; counter++)system.out.println(counter);if (counter == 4) {break;}}
Nell'esempio seguente, quando counter raggiunge 4, il ciclo salta all'iterazione successiva e tutte le istruzioni dopo la parola chiave continue vengono ignorate per l'iterazione corrente.
for (counter = 0; counter < 10; counter++)system.out.println(counter);if (counter == 4) {continue;}system.out.println("This will not get printed when counter is 4");}
Q9. Qual è la differenza tra le variabili double e float in Java?
Risposta: In java, float richiede 4 byte in memoria mentre Double richiede 8 byte in memoria. Float è un numero decimale a virgola mobile a precisione singola mentre Double è un numero decimale a doppia precisione.
Q10. Qual è la parola chiave finale in Java? Dare un esempio.
Risposta: In java, una costante viene dichiarata utilizzando la parola chiave Final. Il valore può essere assegnato solo una volta e dopo l'assegnazione, il valore di una costante non può essere modificato.
Nell'esempio seguente, una costante con il nome const_val viene dichiarata e assegnata come valore:
Private Final int const_val = 100
Quando un metodo è dichiarato come finale, NON può essere sovrascritto dalle sottoclassi. Questo metodo è più veloce di qualsiasi altro metodo, perché vengono risolti al momento rispettato.
Quando una classe viene dichiarata come finale, non può essere sottoclasse. Esempio String, Integer e altre classi wrapper.
Q11. Cos'è l'operatore ternario? Dare un esempio.
Risposta: L'operatore ternario, chiamato anche operatore condizionale, viene utilizzato per decidere quale valore assegnare a una variabile in base alla valutazione di un valore booleano. È indicato come?
Nell'esempio seguente, se il rango è 1, allo stato viene assegnato un valore "Fatto" altrimenti "In sospeso".
public class conditionTest {public static void main(String args[]) {String status;int rank = 3;status = (rank == 1) ? "Done" : "Pending";System.out.println(status);}}
D12: Come puoi generare numeri casuali in Java?
Risposta:
- Utilizzando Math.random () è possibile generare numeri casuali nell'intervallo maggiore o uguale a 0,1 e inferiore a 1,0
- Utilizzando la classe Random nel pacchetto java.util
Q13. Qual è il caso dell'interruttore predefinito? Dai un esempio.
Risposta: In un'istruzione switch, il caso predefinito viene eseguito quando nessun'altra condizione di switch corrisponde. Il caso predefinito è un caso opzionale e può essere dichiarato solo una volta che tutti gli altri casi degli interruttori sono stati codificati.
Nell'esempio seguente, quando il punteggio non è 1 o 2, viene utilizzato il caso predefinito.
public class switchExample {int score = 4;public static void main(String args[]) {switch (score) {case 1:system.out.println("Score is 1");break;case 2:system.out.println("Score is 2");break;default:system.out.println("Default Case");}}}
Q14. Qual è la classe base in Java da cui derivano tutte le classi?
Risposta: java.lang.object
Q15. Il metodo main () in Java può restituire dati?
Risposta: In java, il metodo main () non può restituire alcun dato e quindi è sempre dichiarato con un tipo di ritorno void.
Q16. Cosa sono i pacchetti Java? Qual è il significato dei pacchetti?
Risposta: In Java, il pacchetto è una raccolta di classi e interfacce che sono raggruppate insieme in quanto sono correlate l'una all'altra. L'uso dei pacchetti aiuta gli sviluppatori a modularizzare il codice e raggruppare il codice per un corretto riutilizzo. Una volta che il codice è stato impacchettato in Pacchetti, può essere importato in altre classi e utilizzato.
Q17. Possiamo dichiarare una classe come astratta senza avere alcun metodo astratto?
Risposta: Sì, possiamo creare una classe astratta usando la parola chiave abstract prima del nome della classe anche se non ha alcun metodo astratto. Tuttavia, se una classe ha anche un solo metodo astratto, deve essere dichiarato astratto altrimenti darà un errore.
Q18. Qual è la differenza tra una classe astratta e un'interfaccia in Java?
Risposta: La differenza principale tra una classe astratta e un'interfaccia è che un'interfaccia può possedere solo la dichiarazione di metodi statici pubblici senza implementazione concreta mentre una classe astratta può avere membri con qualsiasi specificatore di accesso (pubblico, privato, ecc.) Con o senza implementazione concreta.
Un'altra differenza fondamentale nell'uso di classi e interfacce astratte è che una classe che implementa un'interfaccia deve implementare tutti i metodi dell'interfaccia mentre una classe che eredita da una classe astratta non richiede l'implementazione di tutti i metodi della sua super classe.
Una classe può implementare più interfacce ma può estendere solo una classe astratta.
Q19. Quali sono le implicazioni sulle prestazioni delle interfacce rispetto alle classi astratte?
Risposta: Le interfacce sono più lente in termini di prestazioni rispetto alle classi astratte poiché per le interfacce sono richieste indicazioni indirette aggiuntive. Un altro fattore chiave da tenere in considerazione per gli sviluppatori è che qualsiasi classe può estendere solo una classe astratta mentre una classe può implementare molte interfacce.
L'uso delle interfacce pone anche un onere aggiuntivo per gli sviluppatori ogni volta che un'interfaccia viene implementata in una classe; lo sviluppatore è costretto a implementare ogni metodo di interfaccia.
Q20. L'importazione di un pacchetto importa anche i suoi sotto-pacchetti in Java?
Risposta: In java, quando un pacchetto viene importato, i suoi sotto-pacchetti non vengono importati e lo sviluppatore deve importarli separatamente se necessario.
Ad esempio, se uno sviluppatore importa un pacchetto university. *, Vengono caricate tutte le classi nel pacchetto denominato university ma non vengono caricate classi del sottopacchetto. Per caricare le classi dal suo sotto-pacchetto (diciamo dipartimento), lo sviluppatore deve importarlo esplicitamente come segue:
Import university.department. *
Q21. Possiamo dichiarare privato il metodo principale della nostra classe?
Risposta: In java, il metodo principale deve essere statico pubblico per eseguire correttamente qualsiasi applicazione. Se il metodo principale è dichiarato come privato, lo sviluppatore non riceverà alcun errore di compilazione, tuttavia non verrà eseguito e darà un errore di runtime.
Q22. Come possiamo passare un argomento a una funzione per riferimento invece di passare per valore?
Risposta: In java, possiamo passare un argomento a una funzione solo per valore e non per riferimento.
Q23. Come viene serializzato un oggetto in java?
Risposta: In java, per convertire un oggetto in flusso di byte tramite serializzazione, un'interfaccia con il nome Serializable è implementata dalla classe. Tutti gli oggetti di una classe che implementa un'interfaccia serializzabile vengono serializzati e il loro stato viene salvato nel flusso di byte.
Q24. Quando dovremmo usare la serializzazione?
Risposta: la serializzazione viene utilizzata quando i dati devono essere trasmessi sulla rete. Utilizzando la serializzazione, lo stato dell'oggetto viene salvato e convertito in flusso di byte. Il flusso di byte viene trasferito sulla rete e l'oggetto viene ricreato a destinazione.
Q25. È obbligatorio che un blocco di prova sia seguito da un blocco di cattura in Java per la gestione delle eccezioni?
Risposta: Il blocco Try deve essere seguito dal blocco Catch o dal blocco Finalmente o da entrambi. Qualsiasi eccezione generata dal blocco try deve essere catturata nel blocco catch oppure qualsiasi attività specifica da eseguire prima che l'aborto del codice venga inserito nel blocco fine.
Q26. C'è un modo per saltare il blocco delle eccezioni alla fine anche se si verifica un'eccezione nel blocco delle eccezioni?
Risposta: Se viene sollevata un'eccezione nel blocco Try, il controllo passa al blocco catch se esiste, altrimenti al blocco finale. Infine il blocco viene sempre eseguito quando si verifica un'eccezione e l'unico modo per evitare l'esecuzione di qualsiasi istruzione nel blocco Finalmente è interrompere forzatamente il codice scrivendo la seguente riga di codice alla fine del blocco try:
System.exit(0);
Q27. Quando viene richiamato il costruttore di una classe?
Risposta: Il costruttore di una classe viene richiamato ogni volta che viene creato un oggetto con una nuova parola chiave.
Ad esempio, nella classe seguente vengono creati due oggetti utilizzando la nuova parola chiave e quindi il costruttore viene richiamato due volte.
public class const_example {const_example() {system.out.println("Inside constructor");}public static void main(String args[]) {const_example c1 = new const_example();const_example c2 = new const_example();}}
Q28. Una classe può avere più costruttori?
Risposta: Sì, una classe può avere più costruttori con parametri diversi. Quale costruttore viene utilizzato per la creazione di oggetti dipende dagli argomenti passati durante la creazione degli oggetti.
Q29. Possiamo sovrascrivere i metodi statici di una classe?
Risposta: Non possiamo ignorare i metodi statici. I metodi statici appartengono a una classe e non a singoli oggetti e vengono risolti al momento della compilazione (non in fase di runtime). Anche se proviamo a sovrascrivere il metodo statico, non avremo un errore di compilazione, né l'impatto dell'override durante l'esecuzione del codice.
Q30. Nell'esempio seguente, quale sarà l'output?
public class superclass {public void displayResult() {system.out.println("Printing from superclass");}}public class subclass extends superclass {public void displayResult() {system.out.println("Displaying from subClass");super.displayResult();}public static void main(String args[]) {subclass obj = new subclass();obj.displayResult();}}
Risposta : L'output sarà:
Visualizzazione da sottoclasse
Visualizzazione da superclasse
Q31. String è un tipo di dati in java?
Risposta: String non è un tipo di dati primitivo in java. Quando una stringa viene creata in java, è in realtà un oggetto della classe Java.Lang.String che viene creata. Dopo la creazione di questo oggetto stringa, tutti i metodi incorporati della classe String possono essere utilizzati sull'oggetto stringa.
Q32. Nell'esempio seguente, quanti oggetti stringa vengono creati?
String s1="I am Java Expert";String s2="I am C Expert";String s3="I am Java Expert";
Risposta: Nell'esempio precedente, vengono creati due oggetti della classe Java.Lang.String. s1 e s3 sono riferimenti allo stesso oggetto.
Q33. Perché le stringhe in Java sono chiamate immutabili?
Risposta: In java, gli oggetti stringa sono chiamati immutabili poiché una volta che il valore è stato assegnato a una stringa, non può essere modificato e, se modificato, viene creato un nuovo oggetto.
Nell'esempio seguente, il riferimento str si riferisce a un oggetto stringa con valore "Valore uno".
String str="Value One";
Quando gli viene assegnato un nuovo valore, viene creato un nuovo oggetto String e il riferimento viene spostato al nuovo oggetto.
str="New Value";
Q34. Qual è la differenza tra un array e un vettore?
Risposta: Un array raggruppa dati dello stesso tipo primitivo ed è di natura statica mentre i vettori sono di natura dinamica e possono contenere dati di diversi tipi di dati.
Q35. Cos'è il multi-threading?
Risposta: Il multi threading è un concetto di programmazione per eseguire più attività in modo simultaneo all'interno di un singolo programma. I thread condividono lo stesso stack di processo e vengono eseguiti in parallelo. Aiuta a migliorare le prestazioni di qualsiasi programma.
Q36. Perché l'interfaccia eseguibile viene utilizzata in Java?
Risposta: L'interfaccia eseguibile viene utilizzata in java per l'implementazione di applicazioni multi thread. L'interfaccia Java.Lang.Runnable è implementata da una classe per supportare il multi threading.
Q37. Quali sono i due modi per implementare il multi-threading in Java?
Risposta: Le applicazioni multi thread possono essere sviluppate in Java utilizzando una delle seguenti due metodologie:
1. Utilizzando l'interfaccia Java.Lang.Runnable. Le classi implementano questa interfaccia per abilitare il multi threading. C'è un metodo Run () in questa interfaccia che è implementato.
2. Scrivendo una classe che estenda la classe Java.Lang.Thread.
Q38. Quando sono necessarie molte modifiche nei dati, quale dovrebbe essere una preferenza da utilizzare? String o StringBuffer?
Risposta: Poiché StringBuffer sono di natura dinamica e possiamo modificare i valori degli oggetti StringBuffer a differenza di String che è immutabile, è sempre una buona scelta utilizzare StringBuffer quando i dati vengono modificati troppo. Se usiamo String in questo caso, per ogni modifica dei dati verrà creato un nuovo oggetto String che sarà un sovraccarico extra.
Q39. Qual è lo scopo dell'utilizzo di Break in ogni caso di Switch Statement?
Risposta: Break viene utilizzato dopo ogni caso (tranne l'ultimo) in uno switch in modo che il codice si interrompa dopo il caso valido e non scorre anche nei casi in corso.
Se break non viene utilizzato dopo ogni caso, vengono eseguiti anche tutti i casi dopo il caso valido con risultati errati.
Q40. Come viene eseguita la garbage collection in Java?
Risposta: In java, quando un oggetto non viene più referenziato, ha luogo la garbage collection e l'oggetto viene distrutto automaticamente. Per la raccolta automatica dei rifiuti, java chiama il metodo System.gc () o il metodo Runtime.gc ().
Q41. Come possiamo eseguire qualsiasi codice anche prima del metodo principale?
Risposta: Se vogliamo eseguire qualsiasi istruzione prima ancora della creazione di oggetti al momento del caricamento della classe, possiamo utilizzare un blocco statico di codice nella classe. Qualsiasi istruzione all'interno di questo blocco statico di codice verrà eseguita una volta al momento del caricamento della classe, anche prima della creazione di oggetti nel metodo principale.
Q42. Una classe può essere una superclasse e una sottoclasse allo stesso tempo? Dai un esempio.
Risposta: Se viene utilizzata una gerarchia di ereditarietà, una classe può essere una super classe per un'altra classe e una sottoclasse per un'altra allo stesso tempo.
Nell'esempio seguente, la classe continente è una sottoclasse di classe mondiale ed è super classe di classe paese.
public class world {… .}public class continenet extends world {… }public class country extends continent {… .}
Q43. Come vengono creati gli oggetti di una classe se nella classe non è definito alcun costruttore?
Risposta: Anche se nessun costruttore esplicito è definito in una classe java, gli oggetti vengono creati con successo poiché un costruttore predefinito viene utilizzato implicitamente per la creazione degli oggetti. Questo costruttore non ha parametri.
Q44. Nel multi-threading come possiamo garantire che una risorsa non venga utilizzata da più thread contemporaneamente?
Risposta: Nel multi-threading, l'accesso alle risorse condivise tra più thread può essere controllato utilizzando il concetto di sincronizzazione. Utilizzando la parola chiave sincronizzata, possiamo garantire che solo un thread possa utilizzare la risorsa condivisa alla volta e gli altri possano ottenere il controllo della risorsa solo una volta che si è liberata dall'altro che la utilizza.
Q45. Possiamo chiamare il costruttore di una classe più di una volta per un oggetto?
Risposta: Constructor viene chiamato automaticamente quando creiamo un oggetto utilizzando una nuova parola chiave. Viene chiamato solo una volta per un oggetto al momento della creazione dell'oggetto e quindi non possiamo richiamare nuovamente il costruttore per un oggetto dopo la sua creazione.
Q46. Esistono due classi denominate classA e classB. Entrambe le classi sono nello stesso pacchetto. È possibile accedere a un membro privato di classeA da un oggetto di classeB?
Risposta: I membri privati di una classe non sono accessibili al di fuori dell'ambito di quella classe e qualsiasi altra classe anche nello stesso pacchetto non può accedervi.
Q47. Possiamo avere due metodi in una classe con lo stesso nome?
Risposta: Possiamo definire due metodi in una classe con lo stesso nome ma con diverso numero / tipo di parametri. Quale metodo deve essere richiamato dipenderà dai parametri passati.
Ad esempio, nella classe seguente abbiamo due metodi di stampa con lo stesso nome ma parametri diversi. A seconda dei parametri, verrà chiamato quello appropriato:
public class methodExample {public void print() {system.out.println("Print method without parameters.");}public void print(String name) {system.out.println("Print method with parameter");}public static void main(String args[]) {methodExample obj1 = new methodExample();obj1.print();obj1.print("xx");}}
Q48. Come possiamo fare una copia di un oggetto java?
Risposta: Possiamo usare il concetto di clonazione per creare una copia di un oggetto. Usando clone, creiamo copie con lo stato effettivo di un oggetto.
Clone () è un metodo di interfaccia clonabile e, quindi, l'interfaccia clonabile deve essere implementata per creare copie di oggetti.
Q49. Qual è il vantaggio di utilizzare l'ereditarietà?
Risposta: Il vantaggio principale dell'utilizzo dell'ereditarietà è la riutilizzabilità del codice poiché l'ereditarietà consente alle sottoclassi di riutilizzare il codice della sua super classe. Il polimorfismo (estensibilità) è un altro grande vantaggio che consente di introdurre nuove funzionalità senza influire sulle classi derivate esistenti.
Q50. Qual è lo specificatore di accesso predefinito per variabili e metodi di una classe?
Risposta: L'identificatore di accesso predefinito per le variabili e il metodo è protetto dal pacchetto, ovvero variabili e classe sono disponibili per qualsiasi altra classe ma nello stesso pacchetto, non all'esterno del pacchetto.
Q51. Fornisci un esempio di utilizzo dei puntatori nella classe Java.
Risposta: Non ci sono puntatori in Java. Quindi non possiamo usare il concetto di puntatori in Java.
Q52. Come possiamo limitare l'ereditarietà di una classe in modo che nessuna classe possa essere ereditata da essa?
Risposta: Se vogliamo che una classe non venga ulteriormente estesa da nessuna classe, possiamo usare la parola chiave Finale con il nome della classe.
Nell'esempio seguente, la classe Stone è Final e non può essere estesa
public Final Class Stone {// Class methods and Variables}
Q53. Qual è l'ambito di accesso dello specificatore di accesso protetto?
Risposta: Quando un metodo o una variabile viene dichiarato con lo specificatore di accesso protetto, diventa accessibile nella stessa classe, in qualsiasi altra classe dello stesso pacchetto e in una sottoclasse.
Modificatore |
Classe |
Pacchetto |
Sottoclasse |
Mondo |
pubblico |
Y |
Y |
Y |
Y |
protetto |
Y |
Y |
Y |
N |
nessun modificatore |
Y |
Y |
N |
N |
privato |
Y |
N |
N |
N |
Q54. Qual è la differenza tra Stack e Queue?
Risposta: Stack e Queue vengono utilizzati entrambi come segnaposto per una raccolta di dati. La differenza principale tra uno stack e una coda è che lo stack si basa sul principio Last in First out (LIFO) mentre una coda si basa sul principio FIFO (First In First Out).
Q55. In Java, come possiamo non consentire la serializzazione delle variabili?
Risposta: Se vogliamo che alcune variabili di una classe non vengano serializzate, possiamo usare la parola chiave transient mentre le dichiari. Ad esempio, la variabile trans_var di seguito è una variabile transitoria e non può essere serializzata:
public class transientExample {private transient trans_var;// rest of the code}
Q56. Come possiamo usare i tipi di dati primitivi come oggetti?
Risposta: tipi di dati primitivi come int possono essere gestiti come oggetti mediante l'uso delle rispettive classi wrapper. Ad esempio, Integer è una classe wrapper per il tipo di dati primitivo int. Possiamo applicare metodi diversi a una classe wrapper, proprio come qualsiasi altro oggetto.
Q57. Quali tipi di eccezioni vengono rilevate in fase di compilazione?
Risposta: Le eccezioni selezionate possono essere rilevate al momento della compilazione del programma. Le eccezioni verificate devono essere gestite utilizzando il blocco try catch nel codice per compilare correttamente il codice.
Q58. Descrivi i diversi stati di un thread.
Risposta: un thread in Java può trovarsi in uno dei seguenti stati:
- Pronto: quando viene creato un thread, è nello stato Pronto.
- In esecuzione: un thread attualmente in esecuzione è in stato di esecuzione.
- In attesa: un thread in attesa che un altro thread liberi determinate risorse è in stato di attesa.
- Dead: un thread che è morto dopo l'esecuzione è in stato morto.
Q59. Possiamo usare un costruttore predefinito di una classe anche se è definito un costruttore esplicito?
Risposta: Java fornisce un costruttore predefinito senza argomenti se nessun costruttore esplicito è definito in una classe Java. Ma se è stato definito un costruttore esplicito, il costruttore predefinito non può essere richiamato e lo sviluppatore può utilizzare solo quei costruttori definiti nella classe.
Q60. È possibile sovrascrivere un metodo utilizzando lo stesso nome e argomenti del metodo ma diversi tipi restituiti?
Risposta: La condizione di base dell'override del metodo è che il nome del metodo, gli argomenti e il tipo restituito devono essere esattamente gli stessi del metodo che viene sovrascritto. Quindi l'utilizzo di un diverso tipo di ritorno non sovrascrive un metodo.
Q61.Quale sarà l'output del seguente pezzo di codice?
public class operatorExample {public static void main(String args[]) {int x = 4;system.out.println(x++);}}
Risposta: In questo caso viene utilizzato l'operatore postfisso ++ che prima restituisce il valore e poi incrementa. Quindi il suo output sarà 4.
Q61. Una persona dice di aver compilato con successo una classe java senza nemmeno avere un metodo principale in essa? È possibile?
Risposta: il metodo principale è un punto di ingresso della classe Java ed è tuttavia richiesto per l'esecuzione del programma; una classe viene compilata correttamente anche se non dispone di un metodo principale. Tuttavia non può essere eseguito.
Q62. Possiamo chiamare un metodo non statico dall'interno di un metodo statico?
Risposta: I metodi non statici sono di proprietà degli oggetti di una classe e hanno un ambito a livello di oggetto e per chiamare i metodi non statici da un blocco statico (come da un metodo principale statico), è necessario creare un oggetto della classe primo. Quindi, utilizzando il riferimento all'oggetto, questi metodi possono essere richiamati.
Q63. Quali sono le due variabili d'ambiente che devono essere impostate per eseguire qualsiasi programma Java?
Risposta: I programmi Java possono essere eseguiti su una macchina solo una volta che le seguenti due variabili di ambiente sono state impostate correttamente:
- Variabile PATH
- Variabile CLASSPATH
Q64. Le variabili possono essere utilizzate in Java senza inizializzazione?
Risposta: In Java, se una variabile viene utilizzata in un codice senza previa inizializzazione con un valore valido, il programma non si compila e restituisce un errore poiché nessun valore predefinito è assegnato alle variabili in Java.
Q65. Una classe in Java può essere ereditata da più di una classe?
Risposta: In Java, una classe può essere derivata da una sola classe e non da più classi. Le eredità multiple non sono supportate da Java.
Q66. Un costruttore può avere un nome diverso da un nome di classe in Java?
Risposta: Il costruttore in Java deve avere lo stesso nome del nome della classe e se il nome è diverso, non agisce come un costruttore e il compilatore lo considera un metodo normale.
Q67. Quale sarà l'output di Round (3.7) e Ceil (3.7)?
Risposta: Round (3.7) restituisce 4 e Ceil (3.7) restituisce 4.
D68: Possiamo usare goto in Java per andare a una riga particolare?
Risposta: In Java, non c'è la parola chiave goto e java non supporta questa funzione per andare su una particolare riga etichettata.
Q69. È possibile riavviare un thread morto?
Risposta: In java, un thread che è in stato morto non può essere riavviato. Non è possibile riavviare un thread inattivo.
Q70. La seguente dichiarazione di classe è corretta?
Risposta:
public abstract final class testClass {// Class methods and variables}
Risposta: La dichiarazione della classe precedente non è corretta in quanto una classe astratta non può essere dichiarata come finale.
Q71. JDK è richiesto su ogni macchina per eseguire un programma Java?
Risposta: JDK è il kit di sviluppo di Java ed è richiesto solo per lo sviluppo e per eseguire un programma Java su una macchina, JDK non è richiesto. È richiesto solo JRE.
Q72. Qual è la differenza tra il confronto eseguito con il metodo uguale e l'operatore ==?
Risposta: In Java, il metodo equals () viene utilizzato per confrontare il contenuto di due oggetti stringa e restituisce true se i due hanno lo stesso valore, mentre l'operatore == confronta i riferimenti di due oggetti stringa.
Nell'esempio seguente, equals () restituisce true poiché i due oggetti stringa hanno gli stessi valori. Tuttavia, l'operatore == restituisce false poiché entrambi gli oggetti stringa fanno riferimento a oggetti diversi:
public class equalsTest {public static void main(String args[]) {String str1 = new String("Hello World");String str2 = new String("Hello World");if (str1.equals(str2)){ // this condition is trueSystem.out.println("str1 and str2 are equal in terms of values");}if (str1 == str2) {//This condition is trueSystem.out.println("Both strings are referencing same object");} else{// This condition is NOT trueSystem.out.println("Both strings are referencing different objects");}}}
Q73. È possibile definire un metodo nella classe Java ma fornire la sua implementazione nel codice di un altro linguaggio come il C?
Ans: Sì, possiamo farlo utilizzando metodi nativi. In caso di sviluppo basato su metodi nativi, definiamo metodi statici pubblici nella nostra classe Java senza la sua implementazione e quindi l'implementazione viene eseguita in un altro linguaggio come C separatamente.
Q74. Come vengono definiti i distruttori in Java?
Risposta: In Java, non ci sono distruttori definiti nella classe in quanto non è necessario farlo. Java ha il proprio meccanismo di raccolta dei rifiuti che esegue automaticamente il lavoro distruggendo gli oggetti quando non vengono più referenziati.
Q75. Una variabile può essere locale e statica allo stesso tempo?
Risposta: No, una variabile non può essere statica e locale allo stesso tempo. La definizione di una variabile locale come statica genera un errore di compilazione.
Q76. Possiamo avere metodi statici in un'interfaccia?
Risposta: I metodi statici non possono essere sovrascritti in nessuna classe mentre tutti i metodi in un'interfaccia sono astratti per impostazione predefinita e dovrebbero essere implementati nelle classi che implementano l'interfaccia. Quindi non ha senso avere metodi statici in un'interfaccia in Java.
Q77. In una classe che implementa un'interfaccia, possiamo modificare il valore di qualsiasi variabile definita nell'interfaccia?
Risposta: No, non possiamo cambiare il valore di nessuna variabile di un'interfaccia nella classe di implementazione poiché tutte le variabili definite nell'interfaccia sono per impostazione predefinita pubbliche, statiche e le variabili finali e finali sono come costanti che non possono essere modificate in seguito.
Q78. È corretto affermare che a causa della funzionalità di raccolta dei rifiuti in Java, un programma Java non esaurisce mai la memoria?
Risposta: Anche se Java fornisce la garbage collection automatica, non garantisce che un programma Java non esaurisca la memoria poiché esiste la possibilità che la creazione di oggetti Java venga eseguita a un ritmo più veloce rispetto alla garbage collection risultante riempimento di tutte le risorse di memoria disponibili.
Quindi, la raccolta dei rifiuti aiuta a ridurre le possibilità che un programma vada senza memoria, ma non lo garantisce.
Q79. Possiamo avere un altro tipo di ritorno oltre a void per il metodo principale?
Risposta: No, il metodo principale della classe Java può avere solo il tipo restituito void affinché il programma venga eseguito correttamente.
Tuttavia, se devi assolutamente restituire un valore al completamento del metodo principale, puoi usare System.exit (int status)
Q80. Voglio ri-raggiungere e utilizzare un oggetto una volta che è stato raccolto nella spazzatura. Com'è possibile?
Risposta: Una volta che un oggetto è stato distrutto dal Garbage Collector, non esiste più nell'heap e non è possibile accedervi nuovamente. Non è possibile farvi riferimento di nuovo.
Q81. Nella programmazione dei thread Java, quale metodo è un'implementazione obbligatoria per tutti i thread?
Risposta: Run () è un metodo di interfaccia eseguibile che deve essere implementato da tutti i thread.
Q82. Desidero controllare le connessioni al database nel mio programma e desidero che solo un thread alla volta sia in grado di stabilire una connessione al database. Come posso implementare questa logica?
Risposta: Questo può essere implementato utilizzando il concetto di sincronizzazione. Il codice relativo al database può essere inserito in un metodo che ha la parola chiave sincronizzata in modo che un solo thread possa accedervi alla volta.
Q83. Come può un'eccezione essere lanciata manualmente da un programmatore?
Risposta: Per lanciare manualmente un'eccezione in un blocco di codice, viene utilizzata la parola chiave throw . Quindi questa eccezione viene rilevata e gestita nel blocco catch.
public void topMethod() {try {excMethod();} catch (ManualException e) {}}public void excMethod {String name = null;if (name == null) {throw (new ManualException("Exception thrown manually ");}}
Q84. Voglio che la mia classe sia sviluppata in modo tale che nessun'altra classe (nemmeno classe derivata) possa creare i suoi oggetti. Come posso farlo?
Risposta: Se dichiariamo privato il costruttore di una classe, non sarà accessibile da nessun'altra classe e quindi nessun'altra classe sarà in grado di istanziarla e la formazione del suo oggetto sarà limitata solo a se stessa.
Q85. Come vengono archiviati gli oggetti in Java?
Risposta: In Java, ogni oggetto quando viene creato ottiene uno spazio di memoria da un heap. Quando un oggetto viene distrutto da un garbage collector, lo spazio allocato dall'heap viene riassegnato all'heap e diventa disponibile per tutti i nuovi oggetti.
Q86. Come possiamo trovare la dimensione effettiva di un oggetto sull'heap?
Risposta: In java, non c'è modo di scoprire la dimensione esatta di un oggetto nell'heap.
Q87. Quale delle seguenti classi avrà più memoria allocata?
Classe A: tre metodi, quattro variabili, nessun oggetto
Classe B: cinque metodi, tre variabili, nessun oggetto
Risposta: La memoria non viene allocata prima della creazione degli oggetti. Poiché per entrambe le classi, non ci sono oggetti creati, quindi nessuna memoria viene allocata sull'heap per nessuna classe.
Q88. Cosa succede se un'eccezione non viene gestita in un programma?
Risposta: Se un'eccezione non viene gestita in un programma che utilizza i blocchi try catch, il programma viene interrotto e nessuna istruzione viene eseguita dopo l'istruzione che ha causato la generazione dell'eccezione.
Q89. Ho più costruttori definiti in una classe. È possibile chiamare un costruttore dal corpo di un altro costruttore?
Risposta: Se una classe ha più costruttori, è possibile chiamare un costruttore dal corpo di un altro usando this () .
Q90. Cosa si intende per classe anonima?
Risposta: Una classe anonima è una classe definita senza alcun nome in una singola riga di codice utilizzando una nuova parola chiave.
Ad esempio, nel codice seguente abbiamo definito una classe anonima in una riga di codice:
public java.util.Enumeration testMethod(){return new java.util.Enumeration(){@Overridepublic boolean hasMoreElements(){// TODO Auto-generated method stubreturn false;}@Overridepublic Object nextElement(){// TODO Auto-generated method stubreturn null;}}
Q91. C'è un modo per aumentare la dimensione di un array dopo la sua dichiarazione?
Risposta: Gli array sono statici e una volta specificata la sua dimensione, non possiamo cambiarla. Se vogliamo utilizzare tali raccolte in cui potremmo richiedere un cambio di dimensione (numero di elementi), dovremmo preferire il vettore all'array.
Q92. Se un'applicazione contiene più classi, va bene avere un metodo principale in più di una classe?
Risposta: Se esiste un metodo principale in più di una classe in un'applicazione java, non causerà alcun problema poiché il punto di ingresso per qualsiasi applicazione sarà una classe specifica e il codice inizierà solo dal metodo principale di quella particolare classe.
Q93. Voglio rendere persistenti i dati degli oggetti per un uso successivo. Qual è l'approccio migliore per farlo?
Risposta: Il modo migliore per rendere persistenti i dati per un utilizzo futuro è utilizzare il concetto di serializzazione.
Q94. Cos'è una classe locale in Java?
Risposta: In Java, se definiamo una nuova classe all'interno di un particolare blocco, si chiama classe locale. Tale classe ha un ambito locale e non è utilizzabile al di fuori del blocco in cui è definita.
Q95. String e StringBuffer rappresentano entrambi oggetti String. Possiamo confrontare String e StringBuffer in Java?
Risposta: Sebbene String e StringBuffer rappresentino entrambi oggetti String, non possiamo confrontarli tra loro e se proviamo a confrontarli, otteniamo un errore.
Q96. Quale API è fornita da Java per le operazioni su un insieme di oggetti?
Risposta: Java fornisce un'API di raccolta che fornisce molti metodi utili che possono essere applicati a un insieme di oggetti. Alcune delle classi importanti fornite dall'API Collection includono ArrayList, HashMap, TreeSet e TreeMap.
Q97. Possiamo lanciare qualsiasi altro tipo su Boolean Type con il casting del tipo?
Risposta: No, non possiamo né eseguire il cast di alcun altro tipo primitivo su un tipo di dati booleano né eseguire il cast di un tipo di dati booleano su qualsiasi altro tipo di dati primitivo.
Q98. Possiamo usare diversi tipi di ritorno per i metodi quando vengono sovrascritti?
Risposta: Il requisito di base dell'override del metodo in Java è che il metodo sovrascritto deve avere lo stesso nome e parametri, ma un metodo può essere sovrascritto con un diverso tipo restituito purché il nuovo tipo restituito estenda l'originale.
Ad esempio, il metodo restituisce un tipo di riferimento.
Class B extends A {A method(int x) {//original method}B method(int x) {//overridden method}}
Q99. Qual è la classe base di tutte le classi di eccezione?
Risposta: In Java, Java.lang.Throwable è la super classe di tutte le classi di eccezione e tutte le classi di eccezione derivano da questa classe di base.
Q100. Qual è l'ordine di chiamata dei costruttori nell'ereditarietà?
Risposta: In caso di ereditarietà, quando viene creato un nuovo oggetto di una classe derivata, viene richiamato prima il costruttore della super classe e quindi viene richiamato il costruttore della classe derivata.
Preparati per il tuo colloquio di lavoro !!! Segui il tutorial Java per essere meglio preparato.
Questo pdf dettagliato delle domande dell'intervista Java ti aiuterà a chiarire i dubbi sulle domande dell'intervista Java e ti aiuterà anche a risolvere l'intervista.