JavaRush /Java Blog /Random-IT /Pausa caffè #145. 90 domande e risposte frequenti sull'in...

Pausa caffè #145. 90 domande e risposte frequenti sull'intervista Java

Pubblicato nel gruppo Random-IT
Fonte: Usemynotes Questa pubblicazione contiene un elenco di domande che spesso si incontrano nelle interviste con sviluppatori Java di livello base e intermedio. Pausa caffè #145.  90 domande e risposte frequenti sull'intervista Java - 1

1. Cosa rende Java un linguaggio indipendente dalla piattaforma?

Java è chiamato linguaggio indipendente dalla piattaforma perché il codice byte generato dal JDK (Java Development Kit) può essere eseguito dalla JVM (Java Virtual Machine) su qualsiasi piattaforma, indipendentemente dal sistema operativo.

2. Perché Java non è un linguaggio completamente orientato agli oggetti?

Java non è un linguaggio completamente orientato agli oggetti perché utilizza otto tipi di dati primitivi che non sono oggetti: boolean , byte , char , int , float , double , long e short .

3. Perché il metodo main() è reso statico in Java?

Il metodo main() è dichiarato statico in modo che possa essere chiamato direttamente dalla JVM senza creare un oggetto o un'istanza della classe in cui è dichiarato.

4. Cosa sono le classi wrapper in Java?

In Java, ogni tipo di dati primitivo come int , float ha una classe corrispondente nota come classi wrapper. Sono anche chiamati wrapper perché racchiudono o convertono un tipo di dati primitivo in oggetti.

5. Cos'è un costruttore in Java?

I costruttori in Java sono metodi speciali che vengono chiamati automaticamente quando viene creato un oggetto o un'istanza. I nomi del costruttore e della classe devono corrispondere.

6. Quali sono le differenze tra array e ArrayList in Java?

Array Lista di array
È una struttura dati statica, il che significa che la sua dimensione è fissa e non può essere modificata. Si tratta di un array di lunghezza variabile o di dimensioni dinamiche in una struttura di raccolta, il che significa che la sua dimensione può essere modificata in base ai requisiti.
Possono memorizzare sia oggetti che tipi primitivi. Può solo archiviare o contenere oggetti, ma non tipi primitivi.
Possiamo accedere a un elemento specificando il suo indice tra parentesi quadre [ ]. Possiamo accedere a un elemento specificando il suo numero di indice all'interno del metodo get() .

7. Perché Java non utilizza i puntatori?

Java non utilizza i puntatori perché non sono sicuri e aggiungono complessità al programma. Inoltre, Java evita i puntatori per evitare di fornire all'utente l'accesso diretto alla memoria.

8. Quali tipi di modificatori di accesso sono presenti in Java?

In Java, i modificatori di accesso sono parole chiave utilizzate per indicare l'accesso a una classe e metodi esterni alla classe o in un'altra classe. Esistono quattro diversi tipi di modificatori di accesso in Java:
  • Predefinito
  • Pubblico
  • Privato
  • Protetto

9. Cos'è JIT in Java?

JIT è l'acronimo di Just-In-Time Compiler in Java. In fase di esecuzione, converte il bytecode in codice macchina nativo. Il compilatore JIT aiuta a migliorare le prestazioni dei programmi Java.

10. Qual è la parola chiave finale in Java?

La parola chiave finale in Java viene utilizzata per rappresentare le costanti. Può essere utilizzato con variabili, classi e metodi.
  • Se la parola chiave finale viene utilizzata con le variabili, non è possibile modificarne il valore.
  • Se la parola chiave final viene utilizzata con i metodi, non è possibile sovrascrivere tale metodo.
  • Se dichiari una classe final , quella classe non può essere estesa o ereditata da una sottoclasse.

11. Quali sono i concetti di base della programmazione OOP o Object Oriented in Java?

La programmazione orientata agli oggetti o OOP in Java utilizza 4 concetti principali:
  • Incapsulamento.
  • Astrazione.
  • Eredità.
  • Polimorfismo.

12. Cos'è una classe singleton in Java e come rendere una classe singleton?

In Java, una classe singleton è una classe che ha una sola istanza o oggetto. Creando un costruttore privato, possiamo rendere la classe un singleton.

13. Qual è la differenza tra variabili locali e variabili di istanza in Java?

Una variabile locale è definita all'interno di un blocco o metodo. L'ambito di una variabile locale è esclusivamente all'interno del blocco. Una variabile di istanza di classe è una variabile definita all'interno della classe ma all'esterno del metodo. Si accede creando un oggetto della classe e termina quando l'oggetto viene eliminato.

14. Cos'è la programmazione OOP o orientata agli oggetti?

La programmazione orientata agli oggetti o OOP è un paradigma di programmazione utilizzato per sviluppare programmi o applicazioni utilizzando il concetto di oggetti.

15. Cosa rende immutabili le stringhe Java?

Le stringhe in Java sono immutabili, il che significa che una volta creato un oggetto stringa, non può essere aggiornato, ma viene creato un nuovo oggetto stringa. Questo perché gli oggetti stringa vengono memorizzati nella cache del pool di stringhe.

16. Descrivere le differenze tra interfaccia e classi astratte in Java

Interfaccia Classe astratta
Possono avere solo metodi astratti. Consente metodi sia astratti che non astratti.
La sottoclasse implementa l'interfaccia utilizzando la parola chiave Implements . Una sottoclasse o una classe derivata eredita l'astrazione utilizzando parole chiave per estendere l'implementazione (extends).
Un'interfaccia può avere solo metodi statici pubblici senza implementazione. Può avere metodi senza implementazione o con implementazione.
Tutti i metodi di un'interfaccia devono essere implementati dalla classe che la implementa. Una classe che eredita da una classe astratta non è tenuta a implementare tutti i metodi della sua superclasse.

17. Cosa intendi per polimorfismo e quali sono le sue tipologie?

Il polimorfismo in Java è la capacità di un oggetto di assumere più di una forma. Può anche essere definito come un singolo compito o attività che può essere svolto in diversi modi. Il polimorfismo si divide in due tipi:
  1. Polimorfismo in fase di compilazione.
  2. Polimorfismo di runtime.

18. In che modo Java ottiene il polimorfismo in fase di compilazione e in fase di esecuzione?

In Java, il polimorfismo in fase di compilazione viene ottenuto tramite l'overload del metodo, mentre il polimorfismo in fase di esecuzione viene ottenuto tramite l'override del metodo.

19. Cosa intendi per astrazione e come viene ottenuta in Java?

L'astrazione è l'atto di rappresentare informazioni importanti senza mostrare dettagli interni o di implementazione. In Java, ciò si ottiene attraverso l'uso di classi e interfacce astratte.

20. Cosa sono le interfacce in Java?

Un'interfaccia in Java è un insieme di metodi astratti con solo dichiarazioni di funzioni, ma nessuna implementazione. Non possiamo creare oggetti o istanze di un'interfaccia. Un'interfaccia non può avere costruttori. Una classe può implementare più interfacce utilizzando la parola chiave Implements in Java.

21. Quali tipi di ereditarietà esistono in Java?

In Java utilizziamo le parole chiave extends per ereditare gli attributi e i metodi di una super classe o di una classe base. Esistono cinque tipi di eredità:
  1. Eredità unica.
  2. Eredità multilivello.
  3. Eredità gerarchica.
  4. Eredità multipla tramite interfaccia.
  5. Eredità ibrida.

22. Perché Java non supporta l'ereditarietà multipla?

Java non supporta l'ereditarietà multipla per evitare ambiguità. Ad esempio, supponiamo che ci siano due superclassi A e B e una sottoclasse C che eredita sia A che B. Entrambe le classi A e B hanno un metodo show() . Se chiamiamo il metodo show() creando un oggetto di classe C, allora il compilatore lancia un errore perché non è chiaro quale classe del metodo show() debba essere eseguita.

23. Qual è la differenza tra l'overload del metodo e l'override del metodo?

Sovraccarico del metodo Metodo prioritario
Polimorfismo in fase di compilazione. Polimorfismo di runtime.
Due o più metodi nella stessa classe con la stessa funzione o nome del metodo ma firme diverse. Due o più metodi che hanno la stessa funzione o nome del metodo e firma in classi diverse.

24. È possibile sovrascrivere un metodo statico o privato in Java?

Un metodo privato non è accessibile all'esterno della classe, quindi non verrà sovrascritto da una sottoclasse. Pertanto non è possibile sovrascriverlo. Allo stesso modo, un metodo statico non può essere sovrascritto perché se creiamo metodi statici con lo stesso nome e firma del metodo sia nella classe base che in quella derivata, la classe derivata nasconderà i metodi nella classe base. Questo è noto come metodo nascosto.

25. Cos'è l'overload del costruttore in Java?

In Java, un costruttore è considerato sovraccaricato se una classe ha più di un costruttore, ma con un diverso elenco di parametri.

26. Possiamo definire una classe astratta anche se non ha metodi astratti?

Sì, possiamo creare una classe astratta anche se non ha un metodo astratto. Tuttavia, se una classe contiene almeno un metodo astratto, deve essere definita come astratta, altrimenti si verificherà un errore.

27. A cosa servono variabili e metodi statici?

Utilizziamo membri statici (metodi e variabili) quando vogliamo utilizzare un metodo o una variabile comune per tutti gli oggetti di una classe invece di creare più copie di ciascun oggetto. Ad esempio, nella classe Employee, il nome dell'azienda può essere reso statico perché tutti gli oggetti avranno lo stesso nome dell'azienda.

28. Quanti diversi tipi di costruttori ci sono in Java?

In Java esistono due tipi di costruttori:
  1. Il costruttore predefinito non accetta alcun parametro.
  2. Costruttore con parametri: accetta almeno un parametro.

29. Java utilizza un costruttore di copie?

No, Java non ha un costruttore di copie come C++.

30. Dichiara le differenze tra costruttore e metodi in Java

Costruttore Metodo
È obbligatorio che il nome del costruttore e il nome della classe corrispondano. Il nome del metodo può o meno essere lo stesso del nome della classe.
Non può avere un tipo restituito. Obbligatorio avere un tipo di reso.
I costruttori non possono essere statici. Il metodo può essere statico o meno.
Viene richiamato o chiamato automaticamente quando viene creato un oggetto o un'istanza di una classe. Viene richiamato o applicato utilizzando il nome dell'oggetto insieme a un punto (.).
Viene utilizzato per inizializzare lo stato di un oggetto. Viene utilizzato per definire il comportamento di un oggetto.

31. È possibile eseguire un programma senza utilizzare il metodo main()?

No, un programma non può essere eseguito senza il metodo main() in Java perché l'esecuzione del programma inizia dal metodo main() .

32. Cosa significa la parola chiave this in Java?

La parola chiave this in Java è una variabile di riferimento utilizzata per fare riferimento all'oggetto corrente che chiama un metodo o una variabile.

33. È possibile utilizzare la parola chiave this in Java per fare riferimento a membri statici?

Sì, poiché è una variabile di riferimento per l'oggetto corrente, possiamo utilizzare la parola chiave this per fare riferimento a membri statici.

34. Possiamo rendere il metodo main() in Java privato anziché pubblico?

Possiamo rendere privato il metodo main() , ma in questo caso otterremo un errore di runtime e quindi il programma non verrà eseguito.

35. Cosa significa la parola chiave super in Java?

In Java, la parola chiave super è una variabile di riferimento utilizzata per fare riferimento a un oggetto della classe genitore immediata.

36. Dichiara le differenze tra un vettore e un array.

Vettore Vettore
Si tratta di un array di dimensioni dinamiche. È una struttura dati a dimensione fissa.
Il vettore è sincronizzato. L'array non è sincronizzato.
È più lento rispetto a un array. È più veloce rispetto al vettore.
Può contenere o archiviare solo oggetti Java. Viene utilizzato per archiviare sia tipi primitivi che oggetti Java.
Possiamo usare il metodo size() per scoprire la lunghezza del vettore. Possiamo usare la proprietà length per scoprire la lunghezza dell'array.

37. Cos'è il multithreading in Java?

Il multithreading è il processo di esecuzione simultanea di più attività all'interno di un singolo programma. Questo viene fatto per ottenere il massimo carico del processore.

38. Quali sono i modi per implementare il multithreading in Java?

Il multithreading in Java può essere implementato in due modi:
  1. Implementando l' interfaccia Runnable in java.lang.Runnable .
  2. Estendendo la classe Thread in java.lang.Thread .

39. Indica alcune differenze tra le parole chiave super e this in Java.

Super Questo
Utilizzato per fare riferimento agli oggetti della classe genitore. Utilizzato per fare riferimento all'oggetto della classe corrente.
Utilizzato per accedere ai metodi di una classe genitore o base. Utilizzato per accedere a un metodo della classe corrente.
Chiama il costruttore predefinito della classe base. Chiama il costruttore predefinito della classe corrente.

40. Quali sono le differenze tra una sottoclasse e una classe interna?

Sottoclasse Classe interiore
Questa è una classe che eredita le proprietà e i metodi di una classe base o genitore. Questa è una classe annidata all'interno di un'altra classe.
Può accedere a tutti i membri pubblici e protetti di una superclasse o di una classe base. Ha accesso a tutti i membri della classe esterna.

41. ​​Che cos'è un caricatore di classi in Java?

Java Class Loader è un componente di Java Runtime Environment o JRE utilizzato per caricare le classi Java nella Java Virtual Machine (JVM) in fase di runtime.

42. È necessario che un blocco Try sia seguito dalla gestione delle eccezioni Java in un blocco Catch?

Sì, è obbligatorio utilizzare un blocco catch perché qualsiasi eccezione lanciata da un blocco try deve essere catturata nel blocco catch .

43. Nomina i tipi di eccezioni in Java

Le eccezioni in Java sono di due tipi:
  1. Eccezione non controllata
  2. Eccezione controllata

44. Quali sono gli stati del thread?

Ci sono 4 stati del thread in Java:
  1. Nuovo flusso.
  2. Percorribile.
  3. Non eseguibile.
  4. Morto o terminato.

45. Cos'è una NullPointerException?

Quando un utente tenta di accedere o modificare i valori di un oggetto null, viene lanciata una NullPointerException .

46. ​​​​Quali tipi di parole chiave vengono utilizzate nella gestione delle eccezioni Java?

  1. Tentativo

  2. presa

  3. Finalmente

  4. gettare

  5. lancia

47. È possibile sovraccaricare il metodo main() in Java?

Sì, il metodo main() può essere sovraccaricato, ma JVM o Java Virtual Machine chiama solo il metodo main() originale .

48. È possibile sovrascrivere il metodo main() in Java?

No, perché il metodo main() è un metodo statico e i metodi statici non possono essere sovrascritti.

49. Quali sono le differenze tra equals() e == ?

In Java, equals() è un metodo utilizzato per confrontare i valori di due oggetti o variabili, mentre == è un operatore di confronto utilizzato per confrontare gli indirizzi o le posizioni di memoria di altri due oggetti o variabili.

50. Un costruttore di classe può restituire qualsiasi valore?

No, il costruttore non ha un tipo restituito, quindi non può restituire alcun valore.

51. Definire l'aggregazione

L'aggregazione è una forma di associazione definita come una relazione di tipo has-a tra due classi. Questo viene fatto per il riutilizzo del codice. Questa è una relazione unidirezionale o unidirezionale tra due classi.

52. Cos'è un'associazione?

Un'associazione definisce una relazione tra due classi utilizzando oggetti. La relazione o associazione può essere uno a uno, uno a molti, molti a molti o molti a uno. Aggregazione e composizione sono due forme di associazione.

53. Cos'è la composizione?

La composizione è una forma di associazione in cui due classi dipendono l'una dall'altra.

54. Qual è la differenza tra rilegatura dinamica e statica?

Con l'associazione dinamica, la decisione di associare un metodo a un oggetto viene presa in fase di esecuzione. L'associazione tardiva è un altro nome per l'associazione dinamica. Con l'associazione statica, la decisione di associare un metodo a un oggetto viene presa in fase di compilazione. L'associazione statica è un altro nome per l'associazione anticipata.

55. Dichiara la differenza tra incapsulamento e astrazione

Nell'incapsulamento, dati e metodi vengono impacchettati o raggruppati in una singola unità nota come classe. L'astrazione mostra solo le informazioni importanti e nasconde i dettagli interni o di implementazione.

56. Cos'è una classe astratta in Java?

Una classe astratta è una classe di cui non è possibile istanziare, ma possiamo creare una variabile di riferimento. Una classe viene dichiarata astratta utilizzando la parola chiave abstract. Include metodi sia astratti che non astratti.

57. Possiamo utilizzare sia parole chiave finali che astratte in un metodo?

No, non possiamo usare metodi final e statici insieme ad abstract perché un metodo astratto deve essere sovrascritto da una sottoclasse e un metodo finale non può essere sovrascritto.

58. Possiamo dichiarare un metodo come finale in un'interfaccia?

No, non possiamo dichiarare un metodo come finale perché tutti i metodi in un'interfaccia sono astratti, quindi deve essere implementato da una sottoclasse e un metodo finale non può essere sovrascritto.

59. Assegnare un nome alla classe base di tutte le classi di eccezioni Java

La classe base per tutte le eccezioni è java.lang.Throwable .

60. È possibile creare più blocchi catch in un blocco try?

Sì, possiamo creare più blocchi catch per un blocco try .

61. Definire due variabili di ambiente che devono essere specificate per eseguire qualsiasi programma Java

  1. Variabile del percorso.
  2. Variabile del percorso di classe.

62. È possibile utilizzare un distruttore in Java?

No, non possiamo usare i distruttori in Java.

63. Cosa intendi per classe anonima?

Una classe interna anonima in Java non ha nome e crea solo un oggetto.

64. Nominare un metodo Java che deve essere implementato per tutti i thread

Metodo Esegui() .

65. Qual è la differenza tra interruzione e continuazione in Java?

Rottura Continua
Utilizzato per terminare o terminare un loop se viene soddisfatta una determinata condizione. Utilizzato per saltare l'esecuzione del ciclo per l'iterazione corrente in base ad alcune condizioni.
Può essere utilizzato all'interno di un loop e di un interruttore. Utilizzato solo all'interno di un loop.

66. Cosa sono i pool di stringhe in Java?

Un pool di stringhe in Java è una raccolta di stringhe archiviate nella memoria heap.

67. Qual è la differenza tra le parole chiave Throw e Throws in Java?

Gettare Lancia
Utilizzato per generare esplicitamente un'eccezione. Utilizzato per dichiarare un'eccezione che può essere lanciata da un metodo in fase di runtime.
Utilizzato all'interno del corpo del metodo. Usando le parole chiave Throws possiamo dichiarare più eccezioni.
Throw è seguito da un'istanza della classe Exception . È seguito dal nome della classe Exception da generare.

68. È possibile chiamare un costruttore all'interno di un altro costruttore della stessa classe?

Sì, possiamo chiamare un costruttore della stessa classe all'interno di un altro costruttore utilizzando this() come prima riga.

69. È possibile confrontare String Buffer e la classe String in Java?

No, non possiamo confrontare String Buffer e oggetti String . Perché otterremo un errore.

70. In quale sequenza vengono chiamati i costruttori durante l'ereditarietà?

Viene chiamato prima il costruttore della classe genitore o base, quindi viene chiamato il costruttore della classe derivata.

71. Possiamo nominare un costruttore diverso dal nome della classe?

No, il costruttore e il nome della classe devono essere gli stessi.

72. Cosa sono i pacchetti Java?

Un pacchetto è una raccolta di classi e interfacce raggruppate.

73. Qual è la differenza tra le classi String e StringBuffer?

Corda StringBuffer
La classe String è immutabile. La classe StringBuffer è modificabile.
Più lento di StringBuffer . Più veloce di String .
Utilizza più memoria quando concatena molte stringhe. Utilizza meno memoria quando concatena molte stringhe.

74. È possibile sovraccaricare metodi statici in Java?

Sì, possiamo sovraccaricare metodi statici in Java passando firme di funzioni diverse.

75.Quale componente della memoria, lo stack o l'heap, viene ripulito durante la garbage collection?

Mucchio.

76.Quale delle seguenti classi di stringhe dovrebbe essere utilizzata quando i dati devono essere aggiornati frequentemente?

La classe StringBuffer dovrebbe essere utilizzata in caso di aggiornamenti frequenti poiché è modificabile e quindi il pool di stringhe non verrà sovraccaricato.

77. Cosa succede se la parola chiave static non viene utilizzata con il metodo main() in Java?

Non ci sarà alcun errore di compilazione, ma in fase di runtime otterremo un errore NoSuchMethodError .

78. Verrà eseguito un blocco final se viene inserita un'istruzione return alla fine dei blocchi try and catch?

Sì, il blocco last verrà sempre eseguito indipendentemente dal fatto che sia presente un'eccezione.

79. È possibile avere molte classi pubbliche in un file sorgente Java?

No, possiamo avere solo una classe pubblica in un file sorgente Java.

80. Può un'interfaccia estendere un'altra interfaccia?

Sì, un'interfaccia può estendere un'altra interfaccia utilizzando la parola chiave extends in Java.

81. Nomina i diversi tipi di caricatori di classi in Java

  1. Caricatore di classi Bootstrap

  2. Estensioni ClassLoader

  3. Caricatore classi di sistema

82. Cosa fa l'operatore ternario in Java?

L'operatore ternario viene utilizzato in sostituzione dell'operatore if-else in Java. Questo è l'unico operatore condizionale che contiene tre operandi.

83. Cosa fa la garbage collection in Java?

La Garbage Collection Java è un metodo mediante il quale le applicazioni Java conservano automaticamente la memoria rimuovendo o ripulendo oggetti e pacchetti inutilizzati in memoria.

84. Come viene utilizzato il costruttore predefinito in Java?

In Java, il costruttore predefinito viene utilizzato per inizializzare i membri dati o le variabili membro di un oggetto con i relativi valori predefiniti. Viene generato automaticamente dal compilatore quando non sono presenti altri costruttori nel programma.

85. Qual è la differenza tra percorso e percorso di classe in Java

  1. Il classpath definisce la posizione dei file bytecode, ovvero i file .class.
  2. Il percorso specifica la posizione dei file .exe.

86. Quali sono i tipi di dati in Java?

In Java esistono 8 tipi di dati:
  1. corto

  2. byte

  3. car

  4. int

  5. galleggiante

  6. Doppio

  7. lungo

  8. booleano

87. Quali sono i quattro concetti di OOP in Java?

  1. Incapsulamento.
  2. Astrazione.
  3. Polimorfismo.
  4. Eredità.

88. Possiamo assegnare un valore nullo alla parola chiave this in Java?

NO.

89. Cosa intendi per blocco statico in Java?

Il blocco statico in Java viene utilizzato per inizializzare le variabili statiche di una classe. Viene eseguito una sola volta: quando la classe viene caricata per la prima volta in memoria.

90. Cos'è un'eccezione? Quale pacchetto contiene tutte le definizioni delle classi di eccezioni in Java?

Le eccezioni sono situazioni anomale che si verificano durante l'esecuzione del programma. Possono verificarsi a causa di un input utente errato o di una logica encoder errata. Il pacchetto java.lang.Exception contiene tutte le definizioni delle classi di eccezioni in Java.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION