35+ Java 8 domande e risposte all'intervista (2025)
Che si tratti di un tecnico o di qualsiasi altro professionista, le interviste fanno sempre uscire l'adrenalina dal nervosismo. Tuttavia, per distinguersi dalla massa, è importante affinare le tue abilità e scommettere sulle tue abilità. Inoltre, avere le mani sulle domande più frequenti Java 8 domande e risposte all'intervista possono essere più intelligenti.
Pertanto, approfondisci queste domande dell'intervista Java 8 per esperti e principianti per superare le tue prossime interviste.
Java 8 domande di intervista per matricole ed esperienza
1) Java 8 rientra in quale paradigma di programmazione?
Java 8 rientra nel seguente paradigma di programmazione:
- Linguaggio di programmazione orientato agli oggetti o alle classi.
- Linguaggio di programmazione funzionale.
- Linguaggio di programmazione procedurale specificato.
- Linguaggio di programmazione logica.
2) Perché si dovrebbe usare la classe Opzionale?
La classe facoltativa è una classe contenitore appena introdotta, utile per dimostrare i valori facoltativi esistenti o non esistenti. Il suo principale vantaggio è evitare controlli nulli e non validi e facilita metodi utili per verificare l'esistenza di un valore per una particolare variabile.
3) Cita alcune funzionalità recenti introdotte in Java 8.
Di seguito sono riportate le funzionalità più recenti introdotte in Java 8:
- Espressioni Lambda: È una Java funzione che è possibile condividere o a cui fare riferimento come oggetto.
- Interferenza del metodo: Utilizza la funzione come criterio per implementare un metodo.
- Interferenza funzionale: Ad ogni interferenza funzionale è associato un unico metodo astratto detto metodo funzionale.
- Metodo predefinito: È utile per implementare metodi nelle interfacce che aiutano a abilitare il potenziale di "evoluzione dell'interfaccia".
- API data e ora: È una versione migliorata ma ispirata delle API Java Time per affrontare gli svantaggi dell'ultima versione.
- Stream API viene definito livello astratto, che aiuta a convogliare i dati di elaborazione.
- Opzionale: La classe wrapper è utile per controllare i valori nulli ed elaborare gli ulteriori dati.
- JavaScript e motore Nashorn: È la versione migliorata del JavaScript Engine, utile per abilitare la sua funzionalità in Java, in sostituzione di Rhino.
4) Specificare i vantaggi derivanti dall'utilizzo di Java 8
Ecco alcuni vantaggi dell'utilizzo Java 8:
- Aiuta a creare applicazioni molto più velocemente e in modo più semplice.
- Fornisce un ambiente molto stabile per gli sviluppatori.
- Codici concisi, riutilizzabili e di facile comprensione.
- Supporto migliorato ed efficace.
- Facile da trasferire su vari sistemi operativi.
- Codici minimi standard.
5) Cos'è una raccolta e in cosa differisce da uno streaming?
Una raccolta è un database in memoria che registra tutti i valori in base alla struttura dati corrente. Quindi, prima di aggiungerlo alla raccolta, è importante calcolarli ciascuno. Mentre un flusso è una struttura dati visivamente fissa in cui possiamo calcolare gli elementi in base alle nostre esigenze.
6) Cos'è l'espressione Lambada?
L'espressione Lambada è un tipo di funzione senza nome e talvolta viene definita funzione anonima perché non dispone di un proprio tipo di informazioni. Puoi usarlo secondo le tue necessità ed è molto utile per ripetere, filtrare ed estrarre qualsiasi dato dalla raccolta.
Esempio:
import java. util.Arrays; import java.util.List; import java.util.stream.Collectors; public class LambdaExpressionExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave"); List<String> filteredNames = names.stream() .filter(name -> name.startsWith("C")) .map(name -> name.toUpperCase()) .collect(Collectors.toList()); System.out.println(filteredNames); } }
Produzione:
Charlie
7) Definire lo stream pipeline
Lo stream pipeline è un metodo per raggruppare complessivamente operazioni diverse. È possibile ottenere ciò classificando le operazioni del flusso in due parti. Operazioni intermedie e terminali.
Ogni volta che viene eseguita un'operazione intermedia, viene restituita un'istanza alla pipeline del flusso. Pertanto, qualsiasi utente può impostare un numero irrazionale di operazioni intermedie per semplificare i dati e infine formare una pipeline di elaborazione.
Inoltre, per terminare le condotte, è necessaria un'operazione terminale alla fine del processo.
8) Cosa sono predicato e consumatore Java 8?
Un predicato è un'interfaccia funzionale che in genere riceve argomenti e recupera un valore booleano. Puoi usarlo per applicare il filtro per una raccolta di oggetti.
D'altra parte, il consumatore viene definito un'interfaccia funzionale incorporata che si trova in Javapacchetto .util.function. Puoi usarlo per consumare qualsiasi oggetto e prende il valore di input e non emette nulla.
9) Perché viene utilizzato il metodo peek() in Java 8?
Il metodo peek() aiuta a supportare il debug, in cui si vuole notare gli elementi mentre tendono a fluire da un punto specifico in una pipeline. È una rappresentazione della nostra osservazione di come passa ogni elemento.
Sintassi: public Object peek()
10) Cosa ti rende il candidato ideale per il Java ruolo di sviluppatore?
Ecco alcune qualità importanti che possono renderti un candidato ideale per Java ruolo dello sviluppatore:
- Dovresti avere la capacità di scrivere codici chiari, facili da comprendere ed efficienti.
- Una profonda comprensione dei modelli e dei concetti di “Programmazione OOP o orientata agli oggetti. "
- Buona conoscenza di vari modelli architettonici e di progettazione.
- Familiarità con Java modelli di concorrenza.
- Esperienza e conoscenza nel lavorare con vari framework di applicazioni web come Spark e gioca.
- Conoscenza fondamentale di Java Macchina virtuale o JVM, suoi svantaggi, soluzione alternativa, ecc.
- Una buona esperienza nell'utilizzo di database incorporati ed esterni.
11) Spiegare l'"interfaccia funzionale".
Un'interfaccia con un solo abstract è chiamata interfaccia funzionale. È noto anche come metodo astratto singolo o SAM. Tuttavia, l'annotazione @FunctionalInterface è facoltativa e può essere utilizzata anche se non è presente. Si estende all'altra interfaccia se non ha alcun abstract.
12) Perché sono necessari i metodi statici Java 8?
Il riferimento al metodo statico viene definito metodo di utilità o di supporto, collegato a un'interfaccia. È anche una classe che non è collegata ad alcun oggetto.
Ecco i motivi per utilizzare il metodo statico in Java:
- Utile per mantenere ed estendere l'API.
- Comporta una condivisione chiara e concisa delle responsabilità e non è necessario disporre di una classe di utilità per disporre delle raccolte di utilità.
- Utile per mantenere tutte le interfacce in un'interfaccia comune anziché in interfacce specifiche.
13) Quali sono i vantaggi del Nashorn?
Nashorn è il più avanzato e nuovo JavaCopione motore di elaborazione introdotto in Java 8. In precedenza, era basato su Mozilla Rhino. Fornisce una maggiore conformità con l'ECMA JavaScript. È più veloce delle versioni precedenti.
14) In cosa differiscono l'API Collection e l'API Stream?
Di seguito sono riportate alcune importanti differenze tra l'API Collection e l'API Stream
API di raccolta | Stream API |
---|---|
L'API di raccolta è stata utilizzata per la prima volta in Java 1.2 | L'API Stream è stata introdotta per la prima volta in Java SE8. |
Puoi usarlo per memorizzare dati illimitati. | Puoi usarlo per calcolare dati illimitati. |
L'API di raccolta consente di utilizzare Iterator e Spilterator per l'iterazione dei dati. | L'API Stream ti consente di utilizzare Iterator e Spilterator per l'iterazione dei dati. |
L'API di raccolta è di facile accesso. | API in-stream, non esiste un modo diretto per raggiungere elementi specifici. |
Inoltre, consente di elaborarlo facilmente in base alle proprie esigenze. | L'API Stream può essere elaborata una sola volta. |
15) Descrivere PermGenSpace e MetaSpace.
PermGen o Permanent Generation Space è un tipo unico di spazio heap utilizzato per tenere traccia dei metadati archiviati che ora vengono rimossi Java 8.
Con questa nuova versione, l'archiviazione dei metadati verrà effettuata in una memoria simile nota come "MetaSpace". Non è trasferibile Java Memoria heap ed è una versione migliorata di PermGen per quanto riguarda gli aspetti di auto-tuning, garbage collection, ecc.
16) Come viene creata l'interfaccia funzionale in Java 8?
Puoi utilizzare l'espressione lambda per implementare il metodo astratto dell'interfaccia funzionale in Java 8. Di seguito è riportato un esempio di codifica dello stesso:
Esempio
import java.util.function.Consumer; public class FunctionalInterfaceExample { public static void main(String[] args) { Consumer<String> printer = System.out::println; printer.accept("Hello, world!"); } }
Produzione:
Hello, world!
17) Quali sono le differenze e le somiglianze tra Funzione e Predicato in Java 8?
Ecco le differenze tra Funzione e Predicato in Java 8:
- La funzione è utile nella trasformazione, mentre il predicato può essere utilizzato per testare qualsiasi condizione.
- La funzione può ricevere un argomento e fornire un risultato, mentre il predicato può anche ricevere un argomento ma fornisce solo il valore booleano.
- La funzione è indicata da , e il predicato è indicato solo con , dove T è il tipo di funzione e R è il risultato.
Di seguito sono riportate le somiglianze tra funzione e predicato:
- Sia la funzione che il predicato sono interfacce funzionali.
- Sia la funzione che il predicato sono funzioni ad argomento singolo.
18) Spiega la differenza tra skip(long) e limit(long) utilizzando un esempio.
Lo skip (lungo) è un'operazione intermedia che recupera gli elementi rimanenti dopo aver eliminato gli n elementi iniziali di uno stream specifico.
Esempio:
import java.util.Arrays; import java.util.List; public class SkipExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Eve"); // Create a stream from the names list names.stream() // Skip the first two elements of the stream .skip(2) // Print the remaining elements to the console .forEach(System.out::println); } }
Produzione:
Charlie Dave Eve
Il limite (lungo) recupera il flusso di elementi di una dimensione particolare
Esempio:
import java.util.Arrays; import java.util.List; public class LimitExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Dave", "Eve"); // Create a stream from the names list names.stream() // Limit the stream to the first three elements .limit(3) // Print the elements to the console .forEach(System.out::println); } }
Produzione:
AliceBob Charlie
19) Quale situazione è più adatta per l'utilizzo dell'API stream Java 8?
Puoi utilizzare l'API stream in Java 8. Sono necessarie le seguenti operazioni:
- È possibile eseguire l'elaborazione parallela.
- Per eseguire operazioni pigramente
- Per eseguire operazioni sul database
- Utilizzare per iterazioni interne.
- Per scrivere programmazione in stile funzionale
- È possibile utilizzarlo per utilizzare le operazioni della pipeline.
20) Qual è la funzione di Type Inference?
Type Inference aiuta il compilatore a identificare o riconoscere i tipi di argomenti semplicemente avendo una panoramica della dichiarazione corrispondente e dell'invocazione del metodo.
21) Qual è il modo più semplice per identificare ed eliminare gli elementi duplicati da un elenco in Java 8?
Il modo più semplice per identificare e rimuovere gli elementi duplicati è utilizzare l'operazione stream ed eseguire una raccolta, seguita dall'utilizzo del metodo Collections.toSet().
22) Quali sono le linee guida per l'Interfaccia Funzionale?
Di seguito sono riportate le linee guida per un'interfaccia funzionale che è tra le più richieste Java 8 domande di programmazione:
- Dovrebbe avere un solo metodo astratto.
- Puoi avere tanti metodi predefiniti in quanto non sono astratti e l'implementazione è fornita in precedenza dallo stesso.
- Un metodo astratto, l'elemento principale dei metodi pubblici da Java.lang, è conosciuto in un'interfaccia funzionale. L'oggetto è ancora considerato un'interfaccia utile.
Nota: La spiegazione di ciò è che ciascuna classe di implementazione per questa interfaccia può avere un'implementazione per questo metodo astratto che è definita dalla classe di implementazione stessa o presa da una superclasse.
23) Distinguere tra spliterator e iterator.
Ecco alcune differenze tra spliterator e iteratore:
separatore | Iteratore |
---|---|
È stato introdotto in Java 1.2 | È stato introdotto in Java 1.8 |
Itera solo tutti gli elementi separatamente. | Attraversa tutti gli elementi separatamente e alla rinfusa. |
Funziona come un iteratore per una raccolta completa di API. | Funziona come un iteratore sia per l'API di flusso che di raccolta. |
Non supporterà la programmazione parallela. | Supporta la programmazione parallela. |
24) Come si può chiamare un metodo predefinito di un'interfaccia in una classe?
La parola chiave default, presente all'inizio della firma del metodo, viene utilizzata per designare una dichiarazione di metodo in un'interfaccia come metodo predefinito. Puoi saltare il modificatore public perché ogni dichiarazione di metodo in un'interfaccia, inclusi i metodi predefiniti, è automaticamente pubblica.
25) Definire il metodo predefinito. Quando puoi usarlo?
Il metodo predefinito è presente nell'interfaccia e include un'implementazione. Questo metodo è utile per aggiungere nuove funzionalità a una determinata interfaccia mantenendo la compatibilità con le versioni precedenti insieme alle classi già implementate in un'interfaccia.
26) Come vengono creati gli stream in Javaed è tra le domande più frequenti nei colloqui di lavoro su Java 8 Stream?
Streaming in Java descrivono la sequenza di oggetti da una fonte specifica, come una raccolta, che supporterà operazioni aggregate. Puoi utilizzarla per raccogliere, filtrare, stampare e modificare una struttura dati in un'altra.
Ecco gli esempi su come creare flussi in Java:
import java.util.stream.Stream; public class StreamExample { public static void main(String[] args) { Stream<String> stream = Stream.of("Alice", "Bob", "Charlie", "Dave", "Eve"); stream.forEach(System.out::println); } }
Produzione:
Alice Bob Charlie Dave Eve
27) Cosa sono le operazioni di flusso Map e FlatMap?
Map e FlatMap sono considerate operazioni di flusso e flusso intermedio che accettano una funzione. Aiuta anche ad applicare la funzione data al resto degli elementi.
28) Perché dobbiamo modificare il Java linguaggio di programmazione frequentemente?
Dobbiamo modificare il Java linguaggio di programmazione frequentemente a causa dei seguenti motivi:
- Puoi utilizzare le funzionalità di Programmazione funzionale.
- Per utilizzare in modo efficace la tecnologia più recente delle CPU multi-core.
29) Menzionare alcune interfacce funzionali utilizzate in Java 8.
Di seguito sono riportate alcune interfacce funzionali utilizzate in Java 8:
- BinarioOperator
- Consumatori
- Funzione
- Fornitore
- unarioOperator
- Bifunzione
- Predicato
30) Quali sono le principali classi API per ora e data?
Di seguito sono elencate le principali classi API per ora e data utilizzate in Java 8:
- Ora locale
- LocalDateTime
- Data locale
31) Fornire la struttura/sintassi di base dell'espressione Lambda.
La struttura/sintassi di base dell'espressione Lambda è:
(arugument - list) - > {body}
Qui,
- Argomento – elenco: Puoi tenerlo pieno o vuoto.
- Segnalino freccia: È utile per collegare espressioni e argomenti del corpo: elenco.
- Corpo: È costituito da istruzioni ed espressioni per l'espressione lambda.
32) Quali sono le principali caratteristiche di Stream?
Di seguito le principali caratteristiche di Stream:
- pipelining
- Fonte
- Aggregato Operazioni
- Sequenza di elementi
- Iterazioni automatiche
33) Quali sono le operazioni Intermedie più comuni?
Alcuni dei tipi più comuni di espressioni intermedie sono:
- Distinto ()
- Salta (lungo n)
- Filtro (predicato)
- Limite (lungo n)
- Mappa (Funzione)
34) Quali sono le tipologie più comuni di operazioni Terminal?
Di seguito sono elencate le tipologie più comuni di operazioni da terminale:
- Contare
- Riduce
- Min
- AllMatch
- Max
- AnyMatch
- Per schierare
35) In cosa consiste il riferimento al metodo Java 8?
Riferimento al metodo in Java 8 è un modo per riferirsi all'interfaccia funzionale. È conosciuta come una forma molto più semplice ed efficiente di espressione lambda. Quando utilizzi le espressioni lambda per fare riferimento a un metodo, puoi sostituirlo con il riferimento al metodo.
36) In cosa differiscono le iterazioni interne ed esterne?
Di seguito sono riportate le differenze tra iterazione interna ed esterna:
Iterazione interna | Iterazione esterna |
---|---|
È noto anche come iteratore passivo o implicito. | È noto anche come iteratore attivo o esplicito. |
È portato internamente su vari oggetti. | Viene trasportato esternamente su vari oggetti. |
Viene utilizzato nella programmazione funzionale. | Viene utilizzato nella programmazione orientata agli oggetti. |
Rappresenta molto meno errori. Tuttavia, la codifica è un must per questo. | Rappresenta più errori. Tuttavia, la codifica non è necessaria. |
37) L'inferenza di tipo è stata utilizzata nelle versioni precedenti di Java?
Java introdotto l'interferenza di tipo in Java 5 ma con accesso molto limitato. Ma nel corso degli anni, le possibilità di interferenza di tipo sono aumentate, e dà il meglio di sé Java 8.
38) Annotare a Java 8 programma in grado di trovare il numero minimo e massimo di uno stream.
import java.util.Arrays; import java.util.stream.IntStream; public class MinMaxExample { public static void main(String[] args) { int[] numbers = {9, 3, 8, 1, 5, 7, 2, 6, 4}; int min = IntStream.of(numbers).min().getAsInt(); int max = IntStream.of(numbers).max().getAsInt(); System.out.println("Minimum number: " + min); System.out.println("Maximum number: " + max); } }
Produzione:
Minimum number: 1 Maximum number: 9
39) Come si uniscono più stringhe tramite la classe StringJoiner?
StringJoiner aiuta a unire una o più String, e può essere fatto tramite uno specifico joiner o delimitatore. Ad esempio, si possono unire più stringhe separandole con una virgola (,).
Per creare una stringa CSV, è possibile generare un percorso completo per una particolare directory in Linux, operazione che può essere eseguita unendo la stringa con l'aiuto della barra "/".
40) Qual è la migliore alternativa alle espressioni lambda in Java 8?
In generale, utilizziamo le espressioni lambda per creare metodi anonimi che aiutano a ottenere l'output desiderato. Tuttavia, esistono casi in cui le espressioni lambda non funzionano e utilizzano solo un metodo esistente.
Quindi, per evitare questo, puoi usare il riferimento al metodo che può aiutarti a ottenere l'output desiderato. Il riferimento al metodo è rappresentato usando il simbolo: (doppio due punti).