top 40 java 8 interview questions answers
In questo tutorial, abbiamo fornito le domande di intervista più importanti su Java 8 e le loro risposte con esempi di codice e spiegazioni:
Tutte le domande importanti elencate in questo tutorial sono specifiche di Java 8. Java si è evoluto molto (nel tempo) con l'introduzione di nuove versioni. Con ogni versione, abbiamo nuove funzionalità associate a Java. Tutte queste importanti funzionalità saranno trattate in questo tutorial.
Queste sono domande molto comuni che ti verranno poste in qualsiasi intervista Java che richiede competenze avanzate. Questi concetti sono indispensabili se stai per partecipare a qualsiasi esame di certificazione Java standard come Oracle Certified Associate (OCA).
=> Dai un'occhiata alla guida per principianti di Java qui.
Questo articolo sarà molto adatto sia per gli sviluppatori Java che per i tester / tester di automazione Java o chiunque sia alla ricerca di una retribuzione più elevata nello stesso campo perché richiede competenze Java avanzate.
Domande di intervista su Java 8 più frequenti
D # 1) Elenca le nuove funzionalità introdotte in Java 8?
Risposta: Le nuove funzionalità introdotte in Java 8 sono elencate di seguito:
- Espressioni lambda
- Riferimenti al metodo
- Classe opzionale
- Interfaccia funzionale
- Metodi predefiniti
- Rhinoceros, motore JavaScript
- Stream API
- Data API
D # 2) Cosa sono le interfacce funzionali?
Risposta: L'interfaccia funzionale è un'interfaccia che ha un solo metodo astratto. L'implementazione di queste interfacce viene fornita utilizzando un'espressione Lambda, il che significa che per utilizzare l'espressione Lambda, è necessario creare una nuova interfaccia funzionale oppure è possibile utilizzare il predefinito interfaccia funzionale di Java 8 .
L'annotazione utilizzata per creare una nuova interfaccia funzionale è ' @FunctionalInterface '.
Q # 3) Cos'è una classe opzionale?
Risposta: La classe facoltativa è una classe wrapper speciale introdotta in Java 8 che viene utilizzata per evitare NullPointerExceptions. Questa classe finale è presente nel pacchetto java.util. NullPointerExceptions si verifica quando non riusciamo a eseguire i controlli Null.
Q # 4) Quali sono i metodi predefiniti?
Risposta: I metodi predefiniti sono i metodi dell'interfaccia che ha un corpo. Questi metodi, come suggerisce il nome, utilizzano le parole chiave predefinite. L'uso di questi metodi predefiniti è 'Compatibilità con le versioni precedenti', il che significa che se JDK modifica un'interfaccia (senza metodo predefinito), le classi che implementano questa interfaccia verranno interrotte.
D'altra parte, se aggiungi il metodo predefinito in un'interfaccia, sarai in grado di fornire l'implementazione predefinita. Ciò non influirà sulle classi di implementazione.
Sintassi:
public interface questions{ default void print() { System.out.println('www.softwaretestinghelp.com'); } }
Q # 5) Quali sono le principali caratteristiche della funzione Lambda?
Risposta: Le principali caratteristiche della funzione Lambda sono le seguenti:
- Un metodo definito come Lambda Expression può essere passato come parametro a un altro metodo.
- Un metodo può esistere da solo senza appartenere a una classe.
- Non è necessario dichiarare il tipo di parametro perché il compilatore può recuperare il tipo dal valore del parametro.
- Possiamo usare le parentesi quando usiamo più parametri ma non c'è bisogno di avere parentesi quando usiamo un singolo parametro.
- Se il corpo dell'espressione ha una singola istruzione, non è necessario includere le parentesi graffe.
Q # 6) Cosa c'era di sbagliato nella vecchia data e ora?
Risposta: Di seguito sono elencati gli svantaggi della vecchia data e ora:
- Java.util.Date è modificabile e non è thread-safe, mentre le nuove API Java 8 Date and Time sono thread-safe.
- Java 8 Date and Time API soddisfa gli standard ISO, mentre la vecchia data e ora erano progettate male.
- Ha introdotto diverse classi API per una data come LocalDate, LocalTime, LocalDateTime, ecc.
- Parlando delle prestazioni tra i due, Java 8 funziona più velocemente del vecchio regime di data e ora.
D # 7) Qual è la differenza tra Collection API e Stream API?
Risposta: La differenza tra l'API Stream e l'API Collection può essere compresa dalla tabella seguente:
Stream API | API di raccolta |
---|---|
È stato introdotto nella versione Java 8 Standard Edition. | È stato introdotto nella versione 1.2 di Java |
Non è possibile utilizzare l'iteratore e gli spliteratori. | Con l'aiuto di forEach, possiamo usare Iterator e Spliterators per iterare gli elementi ed eseguire un'azione su ogni elemento o elemento. |
È possibile memorizzare un numero infinito di funzioni. | È possibile memorizzare un numero numerabile di elementi. |
Il consumo e l'iterazione degli elementi dall'oggetto Stream possono essere eseguiti una sola volta. | Il consumo e l'iterazione degli elementi dall'oggetto Collection possono essere eseguiti più volte. |
Viene utilizzato per calcolare i dati. | Viene utilizzato per memorizzare i dati. |
Q # 8) Come puoi creare un'interfaccia funzionale?
Risposta: Sebbene Java possa identificare un'interfaccia funzionale, è possibile definirne una con l'annotazione
@FunctionalInterface
Una volta definita l'interfaccia funzionale, puoi avere un solo metodo astratto. Poiché hai un solo metodo astratto, puoi scrivere più metodi statici e metodi predefiniti.
Di seguito è riportato l'esempio di programmazione di FunctionalInterface scritto per la moltiplicazione di due numeri.
@FunctionalInterface // annotation for functional interface interface FuncInterface { public int multiply(int a, int b); } public class Java8 { public static void main(String args()) { FuncInterface Total = (a, b) -> a * b; // simple operation of multiplication of 'a' and 'b' System.out.println('Result: '+Total.multiply(30, 60)); } }
Produzione:
D # 9) Cos'è un'interfaccia SAM?
Risposta: Java 8 ha introdotto il concetto di FunctionalInterface che può avere un solo metodo astratto. Poiché queste interfacce specificano solo un metodo astratto, a volte vengono chiamate interfacce SAM. SAM sta per 'Single Abstract Method'.
Q # 10) Cos'è il metodo di riferimento?
migliori sistemi operativi di tutti i tempi
Risposta: In Java 8, è stata introdotta una nuova funzionalità nota come Method Reference. Viene utilizzato per fare riferimento al metodo dell'interfaccia funzionale. Può essere utilizzato per sostituire Lambda Expression facendo riferimento a un metodo.
Per esempio: Se l'espressione Lambda assomiglia a
num -> System.out.println(num)
Quindi il corrispondente metodo di riferimento sarebbe,
System.out::println
dove '::' è un operatore che distingue il nome della classe dal nome del metodo.
Q # 11) Spiega la seguente sintassi
String:: Valueof Expression
Risposta: È un metodo statico che fa riferimento a Valore di metodo del Corda classe. System.out :: println è un riferimento al metodo statico al metodo println dell'oggetto out della classe System.
Restituisce la corrispondente rappresentazione di stringa dell'argomento passato. L'argomento può essere Character, Integer, Boolean e così via.
D # 12) Che cos'è un predicato? Indicare la differenza tra un predicato e una funzione?
Risposta: Predicate è un'interfaccia funzionale predefinita. È sotto il pacchetto java.util.function.Predicate. Accetta solo un singolo argomento che è nella forma mostrata di seguito,
Predicato
Predicato | Funzione |
---|---|
Ha il tipo restituito come Boolean. | Ha il tipo restituito come Object. |
È scritto sotto forma di Predicato che accetta un singolo argomento. | È scritto sotto forma di Funzione che accetta anche un singolo argomento. |
È un'interfaccia funzionale che viene utilizzata per valutare le espressioni Lambda. Può essere utilizzato come destinazione per un riferimento al metodo. | È anche un'interfaccia funzionale che viene utilizzata per valutare le espressioni Lambda. In Funzione, T è per il tipo di input e R è per il tipo di risultato. Può anche essere utilizzato come destinazione per un'espressione Lambda e un riferimento al metodo. |
Q # 13) C'è qualcosa di sbagliato nel codice seguente? Compilerà o darà qualche errore specifico?
@FunctionalInterface public interface Test { public C apply(A a, B b); default void printString() { System.out.println('softwaretestinghelp'); } }
Risposta: Sì. Il codice verrà compilato perché segue la specifica dell'interfaccia funzionale di definire un solo metodo astratto. Il secondo metodo, printString (), è un metodo predefinito che non conta come metodo astratto.
Q # 14) Cos'è un'API Stream? Perché abbiamo bisogno dell'API Stream?
Risposta: Stream API è una nuova funzionalità aggiunta in Java 8. È una classe speciale utilizzata per l'elaborazione di oggetti da un'origine come Collection.
Abbiamo bisogno dell'API Stream perché,
- Supporta operazioni aggregate che rendono semplice l'elaborazione.
- Supporta la programmazione in stile funzionale.
- Fa un'elaborazione più veloce. Quindi, è adatto per prestazioni migliori.
- Consente operazioni parallele.
Q # 15) Qual'è la differenza tra limit e skip?
Risposta: Il metodo limit () viene utilizzato per restituire lo Stream della dimensione specificata. Per esempio, Se hai menzionato il limite (5), il numero di elementi di output sarebbe 5.
Consideriamo il seguente esempio. L'output qui restituisce sei elementi poiché il limite è impostato su 'sei'.
import java.util.stream.Stream; public class Java8 { public static void main(String() args) { Stream.of(0,1,2,3,4,5,6,7,8) .limit(6) /*limit is set to 6, hence it will print the numbers starting from 0 to 5 */ .forEach(num->System.out.print('
'+num)); } }
Produzione:
Considerando che, il metodo skip () viene utilizzato per saltare l'elemento.
Consideriamo il seguente esempio. Nell'output, gli elementi sono 6, 7, 8 il che significa che ha saltato gli elementi fino al 6 ° indice (a partire da 1).
import java.util.stream.Stream; public class Java8 { public static void main(String() args) { Stream.of(0,1,2,3,4,5,6,7,8) .skip(6) /* It will skip till 6th index. Hence 7th, 8th and 9th index elements will be printed */ .forEach(num->System.out.print('
'+num)); } }
Produzione:
Q # 16) Come si ottengono la data e l'ora correnti utilizzando l'API di data e ora di Java 8?
Risposta: Il programma seguente è stato scritto con l'aiuto della nuova API introdotta in Java 8. Abbiamo utilizzato le API LocalDate, LocalTime e LocalDateTime per ottenere la data e l'ora correnti.
Nella prima e nella seconda istruzione print, abbiamo recuperato la data e l'ora correnti dall'orologio di sistema con il fuso orario impostato come predefinito. Nella terza istruzione di stampa, abbiamo utilizzato l'API LocalDateTime che stamperà sia la data che l'ora.
class Java8 { public static void main(String() args) { System.out.println('Current Local Date: ' + java.time.LocalDate.now()); //Used LocalDate API to get the date System.out.println('Current Local Time: ' + java.time.LocalTime.now()); //Used LocalTime API to get the time System.out.println('Current Local Date and Time: ' + java.time.LocalDateTime.now()); //Used LocalDateTime API to get both date and time } }
Produzione:
Q # 17) Qual è lo scopo del metodo limit () in Java 8?
Risposta: Il metodo Stream.limit () specifica il limite degli elementi. La dimensione specificata nel limite (X), restituirà lo Stream della dimensione di 'X'. È un metodo di java.util.stream.Stream
Sintassi:
limit(X)
Dove 'X' è la dimensione dell'elemento.
D # 18) Scrivi un programma per stampare 5 numeri casuali usando forEach in Java 8?
Risposta: Il programma seguente genera 5 numeri casuali con l'aiuto di forEach in Java 8. È possibile impostare la variabile limite su qualsiasi numero a seconda di quanti numeri casuali si desidera generare.
import java.util.Random; class Java8 { public static void main(String() args) { Random random = new Random(); random.ints().limit(5).forEach(System.out::println); /* limit is set to 5 which means only 5 numbers will be printed with the help of terminal operation forEach */ } }
Produzione:
Q # 19) Scrivi un programma per stampare 5 numeri casuali in ordine ordinato usando forEach in Java 8?
Risposta: Il programma seguente genera 5 numeri casuali con l'aiuto di forEach in Java 8. È possibile impostare la variabile limite su qualsiasi numero a seconda di quanti numeri casuali si desidera generare. L'unica cosa che devi aggiungere qui è il metodo Sort ().
import java.util.Random; class Java8 { public static void main(String() args) { Random random = new Random(); random.ints().limit(5).sorted().forEach(System.out::println); /* sorted() method is used to sort the output after terminal operation forEach */ } }
Produzione:
Q # 20) Qual è la differenza tra operazioni intermedie e terminal in Stream?
Risposta: Tutte le operazioni di flusso possono essere Terminale o Intermedio. Le operazioni intermedie sono le operazioni che restituiscono lo stream in modo che alcune altre operazioni possano essere eseguite su quello stream. Le operazioni intermedie non elaborano il flusso nel sito della chiamata, quindi sono chiamate pigre.
Questi tipi di operazioni (Operazioni intermedie) elaborano i dati quando viene eseguita un'operazione di Terminale. Esempi delle operazioni intermedie sono mappa e filtro.
convertitore da youtube a mp3 gratuito sicuro
Le operazioni del terminale avviano l'elaborazione del flusso. Durante questa chiamata, lo Stream subisce tutte le operazioni intermedie. Esempi di Terminal Operation sono sum, Collect e forEach.
In questo programma, proviamo prima a eseguire l'operazione intermedia senza operazione da terminale. Come puoi vedere, il primo blocco di codice non verrà eseguito perché non è supportata l'operazione Terminal.
Il secondo blocco è stato eseguito con successo a causa dell'operazione del terminale sum ().
import java.util.Arrays; class Java8 { public static void main(String() args) { System.out.println('Intermediate Operation won't execute'); Arrays.stream(new int() { 0, 1 }).map(i -> { System.out.println(i); return i; // No terminal operation so it won't execute }); System.out.println('Terminal operation starts here'); Arrays.stream(new int() { 0, 1 }).map(i -> { System.out.println(i); return i; // This is followed by terminal operation sum() }).sum(); } }
Produzione:
Q # 21) Scrivi un programma Java 8 per ottenere la somma di tutti i numeri presenti in una lista?
Risposta: In questo programma, abbiamo utilizzato ArrayList per memorizzare gli elementi. Quindi, con l'aiuto del metodo sum (), abbiamo calcolato la somma di tutti gli elementi presenti nell'ArrayList. Quindi viene convertito in Stream e aggiunto ogni elemento con l'aiuto dei metodi mapToInt () e sum ().
import java.util.*; class Java8 { public static void main(String() args) { ArrayList list = new ArrayList(); list.add(10); list.add(20); list.add(30); list.add(40); list.add(50); // Added the numbers into Arraylist System.out.println(sum(list)); } public static int sum(ArrayList list) { return list.stream().mapToInt(i -> i).sum(); // Found the total using sum() method after // converting it into Stream } }
Produzione:
D # 22) Scrivere un programma Java 8 per quadrare l'elenco dei numeri e quindi filtrare i numeri maggiori di 100 e quindi trovare la media dei numeri rimanenti?
Risposta: In questo programma, abbiamo preso un array di numeri interi e li abbiamo memorizzati in un elenco. Quindi, con l'aiuto di mapToInt (), abbiamo squadrato gli elementi e filtrato i numeri maggiori di 100. Infine, viene calcolata la media del numero rimanente (maggiore di 100).
import java.util.Arrays; import java.util.List; import java.util.OptionalDouble; public class Java8 { public static void main(String() args) { Integer() arr = new Integer() { 100, 100, 9, 8, 200 }; List list = Arrays.asList(arr); // Stored the array as list OptionalDouble avg = list.stream().mapToInt(n -> n * n).filter(n -> n > 100).average(); /* Converted it into Stream and filtered out the numbers which are greater than 100. Finally calculated the average */ if (avg.isPresent()) System.out.println(avg.getAsDouble()); } }
Produzione:
Q # 23) Qual è la differenza tra findFirst () e findAny () di Stream?
Risposta: Come suggerisce il nome, il metodo findFirst () viene utilizzato per trovare il primo elemento dallo stream mentre il metodo findAny () viene utilizzato per trovare qualsiasi elemento dallo stream.
FindFirst () è di natura predestinarista mentre findAny () non è deterministico. Nella programmazione, deterministico significa che l'output si basa sull'input o sullo stato iniziale del sistema.
Q # 24) Qual è la differenza tra Iterator e Spliterator?
Risposta: Di seguito sono riportate le differenze tra Iterator e Spliterator.
Iteratore | Splitter |
---|---|
È stato introdotto nella versione 1.2 di Java | È stato introdotto in Java SE 8 |
Viene utilizzato per Collection API. | Viene utilizzato per Stream API. |
Alcuni dei metodi di iterazione sono next () e hasNext () che vengono utilizzati per iterare gli elementi. | Il metodo Spliterator è tryAdvance (). |
Dobbiamo chiamare il metodo iterator () su Collection Object. | Dobbiamo chiamare il metodo spliterator () su Stream Object. |
Itera solo in ordine sequenziale. | Itera in ordine parallelo e sequenziale. |
Q # 25) Cos'è l'interfaccia funzionale del consumatore?
Risposta: Consumer Functional Interface è anche un'interfaccia con un singolo argomento (come Predicate e Function). Rientra in java.util.function.Consumer. Questo non restituisce alcun valore.
Nel programma seguente, abbiamo utilizzato il metodo accept per recuperare il valore dell'oggetto String.
import java.util.function.Consumer; public class Java8 { public static void main(String() args) Consumer str = str1 -> System.out.println(str1); str.accept('Saket'); /* We have used accept() method to get the value of the String Object */ } }
Produzione:
Q # 26) Cos'è l'interfaccia funzionale del fornitore?
Risposta: L'interfaccia funzionale del fornitore non accetta parametri di input. Rientra in java.util.function.Supplier. Ciò restituisce il valore utilizzando il metodo get.
Nel programma seguente, abbiamo utilizzato il metodo get per recuperare il valore dell'oggetto String.
import java.util.function.Supplier; public class Java8 { public static void main(String() args) { Supplier str = () -> 'Saket'; System.out.println(str.get()); /* We have used get() method to retrieve the value of String object str. */ } }
Produzione:
Q # 27) Cos'è Nashorn in Java 8?
Risposta: Nashorn in Java 8 è un motore basato su Java per l'esecuzione e la valutazione del codice JavaScript.
Q # 28) Scrivi un programma Java 8 per trovare il numero più basso e più alto di uno Stream?
Risposta: In questo programma, abbiamo utilizzato i metodi min () e max () per ottenere il numero più alto e più basso di un flusso. Prima di tutto, abbiamo inizializzato uno Stream che ha Integers e con l'aiuto del metodo Comparator.comparing (), abbiamo confrontato gli elementi dello Stream.
Quando questo metodo è incorporato con max () e min (), ti darà i numeri più alti e più bassi. Funzionerà anche quando si confrontano le stringhe.
import java.util.Comparator; import java.util.stream.*; public class Java8{ public static void main(String args()) { Integer highest = Stream.of(1, 2, 3, 77, 6, 5) .max(Comparator.comparing(Integer::valueOf)) .get(); /* We have used max() method with Comparator.comparing() method to compare and find the highest number */ Integer lowest = Stream.of(1, 2, 3, 77, 6, 5) .min(Comparator.comparing(Integer::valueOf)) .get(); /* We have used max() method with Comparator.comparing() method to compare and find the highest number */ System.out.println('The highest number is: ' + highest); System.out.println('The lowest number is: ' + lowest); } }
Produzione:
Q # 29) Qual è la differenza tra le operazioni Map e flatMap Stream?
Risposta: L'operazione Map Stream fornisce un valore di output per valore di input mentre l'operazione flatMap Stream fornisce zero o più valori di output per valore di input.
Esempio di mappa- L'operazione Map Stream viene generalmente utilizzata per operazioni semplici su Stream come quella menzionata di seguito.
In questo programma, abbiamo cambiato i caratteri di 'Nomi' in maiuscolo usando l'operazione di mappa dopo averli memorizzati in uno Stream e con l'aiuto dell'operazione forEach Terminal, abbiamo stampato ogni elemento.
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Map { public static void main(String() str) { List Names = Arrays.asList('Saket', 'Trevor', 'Franklin', 'Michael'); List UpperCase = Names.stream().map(String::toUpperCase).collect(Collectors.toList()); // Changed the characters into upper case after converting it into Stream UpperCase.forEach(System.out::println); // Printed using forEach Terminal Operation } }
Produzione:
flatMap Esempio- L'operazione flatMap Stream viene utilizzata per operazioni Stream più complesse.
Qui abbiamo eseguito l'operazione flatMap su “List of List of type String”. Abbiamo dato i nomi di input come elenco e poi li abbiamo memorizzati in uno Stream su cui abbiamo filtrato i nomi che iniziano con 'S'.
Infine, con l'aiuto dell'operazione forEach Terminal, abbiamo stampato ogni elemento.
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class flatMap { public static void main(String() str) { List Names = Arrays.asList(Arrays.asList('Saket', 'Trevor'), Arrays.asList('John', 'Michael'), Arrays.asList('Shawn', 'Franklin'), Arrays.asList('Johnty', 'Sean')); /* Created a “List of List of type String” i.e. List Stored names into the list */ List Start = Names.stream().flatMap(FirstName -> FirstName.stream()).filter(s -> s.startsWith('S')) .collect(Collectors.toList()); /* Converted it into Stream and filtered out the names which start with 'S' */ Start.forEach(System.out::println); /* Printed the Start using forEach operation */ } }
Produzione:
convertitore online gratuito da youtube a mp4
Q # 30) Cos'è MetaSpace in Java 8?
Risposta: In Java 8, è stata introdotta una nuova funzionalità per memorizzare le classi. L'area in cui tutte le classi memorizzate in Java 8 sono chiamate MetaSpace. MetaSpace ha sostituito PermGen.
Fino a Java 7, PermGen è stato utilizzato da Java Virtual Machine per memorizzare le classi. Poiché MetaSpace è dinamico in quanto può crescere dinamicamente e non ha limiti di dimensione, Java 8 ha sostituito PermGen con MetaSpace.
Q # 31) Qual è la differenza tra l'iterazione interna ed esterna di Java 8?
Risposta: La differenza tra iterazione interna ed esterna è elencata di seguito.
Iterazione interna | Iterazione esterna |
---|---|
È stato introdotto in Java 8 (JDK-8). | È stato introdotto e messo in pratica nella versione precedente di Java (JDK-7, JDK-6 e così via). |
Itera internamente sugli oggetti aggregati come Collection. | Itera esternamente sugli oggetti aggregati. |
Supporta lo stile di programmazione funzionale. | Supporta lo stile di programmazione OOPS. |
L'iteratore interno è passivo. | L'iteratore esterno è attivo. |
È meno errato e richiede meno codifica. | Richiede un po 'più di codice ed è più soggetto a errori. |
Q # 32) Cos'è JJS?
Risposta: JJS è uno strumento da riga di comando utilizzato per eseguire codice JavaScript dalla console. In Java 8, JJS è il nuovo eseguibile che è un motore JavaScript.
D # 33) Cos'è ChronoUnits in Java 8?
Risposta: ChronoUnits è l'enumerazione introdotta per sostituire i valori Integer utilizzati nella vecchia API per rappresentare il mese, il giorno, ecc.
Q # 34) Spiega la classe StringJoiner in Java 8? Come possiamo ottenere l'unione di più stringhe usando StringJoiner Class?
Risposta: In Java 8, una nuova classe è stata introdotta nel pacchetto java.util che era noto come StringJoiner. Attraverso questa classe, possiamo unire più stringhe separate da delimitatori insieme a fornire loro prefisso e suffisso.
Nel programma seguente, impareremo come unire più stringhe usando StringJoiner Class. Qui abbiamo ',' come delimitatore tra due stringhe differenti. Quindi abbiamo unito cinque diverse stringhe aggiungendole con l'aiuto del metodo add (). Infine, ha stampato lo String Joiner.
Nella prossima domanda # 35 imparerai ad aggiungere prefisso e suffisso alla stringa.
import java.util.StringJoiner; public class Java8 { public static void main(String() args) { StringJoiner stj = new StringJoiner(','); // Separated the elements with a comma in between. stj.add('Saket'); stj.add('John'); stj.add('Franklin'); stj.add('Ricky'); stj.add('Trevor'); // Added elements into StringJoiner “stj” System.out.println(stj); } }
Produzione:
D # 35) Scrivere un programma Java 8 per aggiungere prefisso e suffisso alla stringa?
Risposta: In questo programma, abbiamo ',' come delimitatore tra due stringhe differenti. Inoltre, abbiamo fornito parentesi quadre '(' e ')' come prefisso e suffisso. Quindi cinque diverse stringhe vengono unite aggiungendole con l'aiuto del metodo add (). Infine, ha stampato lo String Joiner.
import java.util.StringJoiner; public class Java8 { public static void main(String() args) { StringJoiner stj = new StringJoiner(',', '(', ')'); // Separated the elements with a comma in between. //Added a prefix '(' and a suffix ')' stj.add('Saket'); stj.add('John'); stj.add('Franklin'); stj.add('Ricky'); stj.add('Trevor'); // Added elements into StringJoiner “stj” System.out.println(stj); } }
Produzione:
Q # 36) Scrivere un programma Java 8 per iterare un flusso utilizzando il metodo forEach?
Risposta: In questo programma, stiamo iterando un flusso a partire da 'numero = 2', seguito dalla variabile di conteggio incrementata di '1' dopo ogni iterazione.
Quindi, stiamo filtrando il numero il cui resto non è zero quando diviso per il numero 2. Inoltre, abbiamo impostato il limite come? 5 che significa che solo 5 volte itererà. Infine, stampiamo ogni elemento utilizzando forEach.
import java.util.stream.*; public class Java8 { public static void main(String() args){ Stream.iterate(2, count->count+1) // Counter Started from 2, incremented by 1 .filter(number->number%2==0) // Filtered out the numbers whose remainder is zero // when divided by 2 .limit(5) // Limit is set to 5, so only 5 numbers will be printed .forEach(System.out::println); } }
Produzione:
Q # 37) Scrivere un programma Java 8 per ordinare un array e quindi convertire l'array ordinato in Stream?
Risposta: In questo programma, abbiamo utilizzato l'ordinamento parallelo per ordinare un array di numeri interi. Quindi convertito l'array ordinato in Stream e con l'aiuto di forEach, abbiamo stampato ogni elemento di uno Stream.
import java.util.Arrays; public class Java8 { public static void main(String() args) { int arr() = { 99, 55, 203, 99, 4, 91 }; Arrays.parallelSort(arr); // Sorted the Array using parallelSort() Arrays.stream(arr).forEach(n -> System.out.print(n + ' ')); /* Converted it into Stream and then printed using forEach */ } }
Produzione:
Q # 38) Scrivi un programma Java 8 per trovare il numero di stringhe in un elenco la cui lunghezza è maggiore di 5?
Risposta: In questo programma, quattro stringhe vengono aggiunte nell'elenco utilizzando il metodo add (), quindi con l'aiuto dell'espressione Stream e Lambda, abbiamo contato le stringhe che hanno una lunghezza maggiore di 5.
import java.util.ArrayList; import java.util.List; public class Java8 { public static void main(String() args) { List list = new ArrayList(); list.add('Saket'); list.add('Saurav'); list.add('Softwaretestinghelp'); list.add('Steve'); // Added elements into the List long count = list.stream().filter(str -> str.length() > 5).count(); /* Converted the list into Stream and filtering out the Strings whose length more than 5 and counted the length */ System.out.println('We have ' + count + ' strings with length greater than 5'); } }
Produzione:
Q # 39) Scrivere un programma Java 8 per concatenare due stream?
Risposta: In questo programma, abbiamo creato due stream dai due elenchi già creati e poi li abbiamo concatenati utilizzando un metodo concat () in cui due elenchi vengono passati come argomento. Infine, ha stampato gli elementi del flusso concatenato.
import java.util.Arrays; import java.util.List; import java.util.stream.Stream; public class Java8 { public static void main(String() args) { List list1 = Arrays.asList('Java', '8'); List list2 = Arrays.asList('explained', 'through', 'programs'); Stream concatStream = Stream.concat(list1.stream(), list2.stream()); // Concatenated the list1 and list2 by converting them into Stream concatStream.forEach(str -> System.out.print(str + ' ')); // Printed the Concatenated Stream } }
Produzione:
Q # 40) Scrivi un programma Java 8 per rimuovere gli elementi duplicati dall'elenco?
Risposta: In questo programma, abbiamo memorizzato gli elementi in un array e li abbiamo convertiti in un elenco. Successivamente, abbiamo utilizzato stream e lo abbiamo raccolto su 'Set' con l'aiuto del metodo 'Collectors.toSet ()'.
import java.util.Arrays; import java.util.List; import java.util.Set; import java.util.stream.Collectors; public class Java8 { public static void main(String() args) { Integer() arr1 = new Integer() { 1, 9, 8, 7, 7, 8, 9 }; List listdup = Arrays.asList(arr1); // Converted the Array of type Integer into List Set setNoDups = listdup.stream().collect(Collectors.toSet()); // Converted the List into Stream and collected it to “Set” // Set won't allow any duplicates setNoDups.forEach((i) -> System.out.print(' ' + i)); } }
Produzione:
Conclusione
In questo articolo, abbiamo compreso le nuove funzionalità introdotte in Java 8. Abbiamo trattato tutte le principali domande dell'intervista su Java 8 e le loro risposte in dettaglio.
Dopo aver letto questo tutorial, devi aver acquisito conoscenza delle nuove API per la manipolazione di data e ora, nuove funzionalità di Java 8, nuove API di streaming insieme agli esempi di programmazione apt secondo il concetto. Questi nuovi concetti o le funzionalità fanno parte del processo di intervista quando sei pronto per le posizioni Java più impegnative.
Ti auguro il meglio!!
=> Controlla TUTTI i tutorial Java qui.
Lettura consigliata
- Domande e risposte dell'intervista
- Domande e risposte al colloquio di prova ETL
- Alcune domande e risposte sui test manuali complicati
- Top 40 domande e risposte al colloquio di programmazione C.
- Le 40 principali domande e risposte dell'intervista J2EE da leggere
- Domande dell'intervista a Spock con risposte (le più popolari)
- 25 migliori domande e risposte per l'intervista al test agile
- Le 32 migliori domande e risposte per l'intervista di Datastage