35 + Java 8 pytań i odpowiedzi do wywiadu (2025)
Niezależnie od tego, czy jest to technik, czy inny profesjonalista, rozmowy kwalifikacyjne zawsze wyzwalają adrenalinę ze zdenerwowania. Aby jednak wyróżnić się z tłumu, ważne jest szlifowanie swoich umiejętności i stawianie na swoje możliwości. Co więcej, zapoznanie się z często zadawanymi pytaniami Java 8 pytań i odpowiedzi na rozmowie kwalifikacyjnej może być dla Ciebie mądrzejsze.
Dlatego zapoznaj się z pytaniami do rozmowy kwalifikacyjnej w języku Java 8 dla doświadczonych i początkujących, aby jak najlepiej przygotować się do nadchodzących rozmów kwalifikacyjnych.
Java 8 pytań do rozmowy kwalifikacyjnej dla nowicjuszy i osób z doświadczeniem
1) Java 8 przypada w jakim paradygmacie programowania?
Java 8 mieści się w następującym paradygmacie programowania:
- Język programowania zorientowany obiektowo lub klasowo.
- Funkcjonalny język programowania.
- Określony proceduralny język programowania.
- Logiczny język programowania.
2) Dlaczego warto używać klasy Opcjonalne?
Klasa opcjonalna to nowo wprowadzona klasa kontenera, która jest przydatna do demonstrowania istniejących lub nieistniejących wartości opcjonalnych. Jego główną zaletą jest unikanie sprawdzania wartości null i void oraz ułatwia stosowanie metod przydatnych do sprawdzania istnienia wartości dla konkretnej zmiennej.
3) Wymień kilka najnowszych funkcji wprowadzonych w Java 8.
Poniżej znajdują się najnowsze funkcje wprowadzone w Java 8:
- Wyrażenia lambda: Jest Java funkcję, którą możesz udostępnić lub do której możesz się odwoływać jako obiekt.
- Zakłócenia metody: Używa funkcji jako kryterium do implementacji metody.
- Zakłócenia funkcjonalne: Każda interferencja funkcjonalna jest powiązana z jedną abstrakcyjną metodą, zwaną metodą funkcjonalną.
- Metoda domyślna: Jest to przydatne przy implementowaniu metod w interfejsach, które pomagają w wykorzystaniu potencjału „ewolucji interfejsu”.
- Data i godzina API: Jest to ulepszona, ale zainspirowana wersja interfejsów API czasu Java, która radzi sobie z wadami ostatniej wersji.
- Stream API nazywana jest warstwą abstrakcyjną, która pomaga w potokowym przetwarzaniu danych.
- Opcjonalny: Klasa opakowania jest przydatna przy sprawdzaniu wartości null i przetwarzaniu dalszych danych.
- JavaSkrypt i silnik Nashorn: Jest to ulepszona wersja JavaSilnik skryptów, który jest przydatny do włączania jego funkcjonalności w Java, zastępując Rhino.
4) Określ zalety korzystania z Java 8
Oto kilka korzyści płynących z używania Java 8:
- Pomaga w tworzeniu aplikacji znacznie szybciej i łatwiej.
- Zapewnia twórcom bardzo stabilne środowisko.
- Zwięzłe, nadające się do ponownego użycia i łatwe do zrozumienia kody.
- Ulepszone i skuteczne wsparcie.
- Łatwe do przenoszenia na różne systemy operacyjne.
- Minimalne kody standardowe.
5) Co to jest kolekcja i czym różni się od strumienia?
Kolekcja to baza danych w pamięci, która rejestruje wszystkie wartości zgodnie z bieżącą strukturą danych. Dlatego przed dodaniem go do kolekcji ważne jest obliczenie każdego z nich. Natomiast strumień jest wizualnie ustaloną strukturą danych, w której możemy obliczyć elementy zgodnie z naszymi potrzebami.
6) Co to jest wyrażenie Lambada?
Wyrażenie lambada to rodzaj funkcji, która nie ma nazwy i czasami nazywana jest funkcją anonimową, ponieważ nie zawiera własnego typu informacji. Możesz go używać według własnych potrzeb i jest bardzo przydatny do powtarzania, filtrowania i wydobywania dowolnych danych z kolekcji.
Przykład:
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); } }
Wyjście:
Charlie
7) Zdefiniuj potokowanie strumieniowe
Przepływ strumieniowy to metoda grupowania różnych operacji. Można to osiągnąć, kategoryzując operacje strumieniowe na dwie części. Operacje pośrednie i końcowe.
Za każdym razem, gdy wykonywana jest operacja pośrednia, odsyła ona instancję do potoku strumieniowego. Dlatego każdy użytkownik może skonfigurować niewymierną liczbę operacji pośrednich, aby usprawnić dane i ostatecznie utworzyć potok przetwarzania.
Co więcej, aby zakończyć działanie potoków, konieczne jest przeprowadzenie operacji terminalowej na końcu procesu.
8) Czym jest predykat i konsument Java 8?
Predykat to funkcjonalny interfejs, który zazwyczaj odbiera argumenty i pobiera wartość logiczną. Można go użyć do zastosowania filtra do kolekcji obiektów.
Z drugiej strony konsument nazywany jest wbudowanym interfejsem funkcjonalnym, który można znaleźć w Javapakiet .util.function. Możesz go użyć do skonsumowania dowolnego obiektu, a on przyjmuje wartość wejściową i nic nie daje.
9) Dlaczego metoda peek () jest używana w Java 8?
Metoda peek() pomaga w debugowaniu, gdy chcemy zauważyć, że elementy mają tendencję do przepływu z określonego punktu potoku. Jest to reprezentacja naszej obserwacji przejścia każdego elementu.
Składnia: public Object peek()
10) Co czyni Cię idealnym kandydatem na Java rola programisty?
Oto kilka ważnych cech, które mogą sprawić, że będziesz idealnym kandydatem na stanowisko: Java rola programisty:
- Powinieneś umieć pisać jasne, łatwe do zrozumienia i wydajne kody.
- Głębokie zrozumienie wzorców i koncepcji „OOP czyli programowanie obiektowe".
- Dobra znajomość różnych wzorców architektonicznych i projektowych.
- Znajomość Java wzorce współbieżności.
- Doświadczenie i znajomość pracy z różnymi frameworkami aplikacji internetowych, takimi jak Spark i gra.
- Podstawowa wiedza nt Java Maszyna wirtualna lub JVM, jej wady, obejścia itp.
- Dobre doświadczenie w korzystaniu z wbudowanych i zewnętrznych baz danych.
11) Wyjaśnij „interfejs funkcjonalny”.
Interfejs zawierający tylko jeden abstrakt nazywany jest interfejsem funkcjonalnym. Jest również znana jako pojedyncza metoda abstrakcyjna lub SAM. Jednakże adnotacja @FunctionalInterface jest opcjonalna i można jej użyć, nawet jeśli jej nie ma. Rozciąga się na inny interfejs, jeśli nie ma żadnego abstraktu.
12) Dlaczego metody statyczne są potrzebne w Java 8?
Odwołanie do metody statycznej nazywane jest metodą narzędziową lub pomocniczą, która jest połączona z interfejsem. Jest to również klasa, która nie jest powiązana z żadnym obiektem.
Oto powody, dla których warto używać metody statycznej w Java:
- Przydatne do utrzymywania i rozszerzania API.
- Pociąga to za sobą jasny i zwięzły podział obowiązków i nie ma potrzeby posiadania jednej klasy narzędzi, aby mieć zbiory narzędzi.
- Przydatne do utrzymywania wszystkich interfejsów we wspólnym interfejsie, a nie w określonych interfejsach.
13) Jakie są zalety Nashorna?
Nashorn jest najbardziej zaawansowany i nowy JAVASCRIPT silnik przetwarzający wprowadzony w Java 8. Wcześniej był oparty na Mozilla Rhino. Zapewnia lepszą zgodność z ECMA JavaSkrypt. Jest szybszy niż poprzednie wersje.
14) Czym różnią się API Collection i Stream API?
Oto kilka ważnych różnic między interfejsem API kolekcji a interfejsem API strumienia
Kolekcja API | Stream API |
---|---|
Kolekcja API została po raz pierwszy użyta w Java 1.2 | Stream API zostało po raz pierwszy wprowadzone w Java WŚ 8. |
Możesz go używać do przechowywania nieograniczonej ilości danych. | Można go używać do obliczania nieograniczonej ilości danych. |
Kolekcja API umożliwia używanie Iteratora i Spilteratora do iteracji danych. | Stream API umożliwia używanie Iteratora i Spilteratora do iteracji danych. |
Dostęp do interfejsu API kolekcji jest łatwy. | In-Stream API, nie ma bezpośredniego sposobu na dotarcie do konkretnych elementów. |
Daje to także możliwość łatwej obróbki go według własnych potrzeb. | Stream API można przetworzyć tylko raz. |
15) Opisz PermGenSpace i MetaSpace.
PermGen lub Permanent Generation Space to unikalny typ przestrzeni sterty używanej do śledzenia przechowywanych metadanych, która jest teraz usuwana Java 8.
W nowej wersji metadane będą przechowywane w podobnej pamięci zwanej „MetaSpace”. To nie jest rzecz zbywalna Java Pamięć sterty jest ulepszoną wersją PermGen pod kątem automatycznego dostrajania, zbierania śmieci itp.
16) Jak tworzony jest interfejs funkcjonalny w Java 8?
Możesz użyć wyrażenia lambda, aby zaimplementować abstrakcyjną metodę interfejsu funkcjonalnego Java 8. Poniżej znajduje się przykład kodowania tego samego:
Przykład
import java.util.function.Consumer; public class FunctionalInterfaceExample { public static void main(String[] args) { Consumer<String> printer = System.out::println; printer.accept("Hello, world!"); } }
Wyjście:
Hello, world!
17) Jakie są różnice i podobieństwa między funkcją a predykatem w Java 8?
Oto różnice między funkcją a predykatem w Java 8:
- Funkcja jest przydatna w transformacji, podczas gdy predykatu można użyć do przetestowania dowolnego warunku.
- Funkcja może otrzymać argument i podać wynik, podczas gdy predykat może również otrzymać argument, ale podaje tylko wartość logiczną.
- Funkcja jest oznaczona przez , a Predykat jest oznaczony tylko przez , gdzie T jest typem funkcji, a R jest wynikiem.
Poniżej znajdują się podobieństwa między funkcją a predykatem:
- Zarówno funkcja, jak i predykat są interfejsami funkcjonalnymi.
- Zarówno funkcja, jak i predykat są funkcjami jednoargumentowymi.
18) Wyjaśnij różnicę pomiędzy skip(long) i limit(long) na przykładzie.
Pominięcie (długie) jest operacją pośrednią, która pobiera elementy pozostałe po wyeliminowaniu początkowych n elementów określonego strumienia.
Przykład:
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); } }
Wyjście:
Charlie Dave Eve
Limit (long) pobiera strumień elementów o określonym rozmiarze
Przykład:
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); } }
Wyjście:
AliceBob Charlie
19) Która sytuacja jest najbardziej odpowiednia do użycia strumieniowego API w Java 8?
Możesz użyć interfejsu API strumieniowego w Java 8. Konieczne jest wykonanie poniższych operacji:
- Można przeprowadzić przetwarzanie równoległe.
- Do wykonywania operacji leniwych
- Aby wykonać operacje na bazie danych
- Używaj do iteracji wewnętrznych.
- Do pisania programowania w stylu funkcjonalnym
- Można go użyć do wykonywania operacji potokowych.
20) Jaka jest funkcja wnioskowania o typie?
Wnioskowanie o typie pomaga kompilatorowi w identyfikowaniu lub rozpoznawaniu typów argumentów poprzez przegląd odpowiedniej deklaracji i wywołania metody.
21) Jaki jest najłatwiejszy sposób identyfikacji i wyeliminowania zduplikowanych elementów z listy Java 8?
Najprostszym sposobem identyfikacji i usuwania duplikatów elementów jest użycie operacji strumieniowej i przeprowadzenie kolekcji, a następnie użycie metody Collections.toSet().
22) Jakie są wytyczne dotyczące interfejsu funkcjonalnego?
Poniżej znajdują się wytyczne dotyczące funkcjonalnego interfejsu, o które najczęściej pytacie Java 8 pytań programistycznych:
- Powinien mieć tylko jedną metodę abstrakcyjną.
- Możesz mieć dowolną liczbę metod domyślnych, ponieważ nie jest to abstrakcyjne, a implementacja jest podana wcześniej przez to samo.
- Metoda abstrakcyjna, główny element metod publicznych z Java.lang, jest znany w funkcjonalnym interfejsie. Obiekt nadal uważany jest za użyteczny interfejs.
Uwaga: Wyjaśnieniem tego jest to, że każda klasa implementacji tego interfejsu może mieć implementację tej abstrakcyjnej metody, która jest albo zdefiniowana przez samą klasę implementacyjną, albo pobrana z nadklasy.
23) Rozróżnij rozdzielacz i iterator.
Oto kilka różnic między rozdzielaczem a iteratorem:
Rozdzielacz | iteratory |
---|---|
Został wprowadzony w Java 1.2. | Został wprowadzony w Java 1.8. |
Iteruje tylko wszystkie elementy osobno. | Przemierza wszystkie elementy pojedynczo i masowo. |
Działa jako iterator dla pełnego zbioru interfejsów API. | Działa jako iterator zarówno dla interfejsu API strumienia, jak i kolekcji. |
Nie będzie obsługiwać programowania równoległego. | Obsługuje programowanie równoległe. |
24) Jak wywołać domyślną metodę interfejsu w klasie?
Domyślne słowo kluczowe, które jest obecne na początku sygnatury metody, służy do wyznaczenia deklaracji metody w interfejsie jako metody domyślnej. Możesz pominąć modyfikator public, ponieważ każda deklaracja metody w interfejsie, łącznie z metodami domyślnymi, jest automatycznie publiczna.
25) Zdefiniuj metodę domyślną. Kiedy możesz z niego skorzystać?
W interfejsie obecna jest metoda domyślna, która zawiera implementację. Metoda ta jest pomocna przy dodawaniu nowej funkcjonalności do danego interfejsu przy jednoczesnym zachowaniu kompatybilności wstecznej wraz z jej klasami, które są już zaimplementowane w interfejsie.
26) W jaki sposób tworzone są strumienie Javai czy jest to jedno z najczęściej zadawanych pytań na rozmowach kwalifikacyjnych dotyczących streamowania w Javie?
Strumienie w Java opisz sekwencję obiektów ze konkretnego źródła, np. kolekcji, która będzie obsługiwać operacje agregacji. Możesz jej użyć do zbierania, filtrowania, drukowania i zmiany jednej struktury danych na inną.
Oto przykłady tworzenia strumieni w formacie 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); } }
Wyjście:
Alice Bob Charlie Dave Eve
27) Czym są operacje strumieniowe Map i FlatMap?
Map i FlatMap są uważane za operacje strumieniowe i pośrednie, które akceptują funkcję. Pomagają również w stosowaniu danej funkcji do pozostałych elementów.
28) Dlaczego musimy zmienić Java język programowania często?
Musimy zmienić Java język programowania często z następujących powodów:
- Możesz skorzystać z funkcji Programowanie funkcjonalne.
- Efektywne wykorzystanie najnowszej technologii procesorów wielordzeniowych.
29) Wymień kilka interfejsów funkcjonalnych stosowanych w Java 8.
Poniżej znajduje się kilka interfejsów funkcjonalnych zastosowanych w Java 8:
- BinarnaOperaTor
- konsument
- Funkcjonować
- Dostawca
- JednoargumentoweOperaTor
- BiFunkcja
- Orzec
30) Jakie są główne klasy API dla czasu i daty?
Poniżej wymieniono główne klasy API dla czasu i daty, które są używane w Java 8:
- Czas lokalny
- Data i godzina lokalna
- Lokalna data
31) Podaj podstawową strukturę/składnię wyrażenia Lambda.
Podstawowa struktura/składnia wyrażenia Lambda to:
(arugument - list) - > {body}
Tutaj,
- Argument – lista: Możesz pozostawić go wypełnionym lub pustym.
- Żeton strzałki: Przydaje się do łączenia wyrażeń treści i argumentów – lista.
- Ciało: Składa się z instrukcji i wyrażeń dla wyrażenia lambda.
32) Jakie są główne cechy Streama?
Poniżej znajdują się główne cechy Streamu:
- Rurociągi
- Źródło
- Agregat Operanych
- Sekwencja elementów
- Automatyczne iteracje
33) Jakie są najczęstsze operacje pośrednie?
Do najpopularniejszych typów wyrażeń pośrednich należą:
- Odrębny ()
- Pomiń (długie n)
- Filtruj (predykat)
- Limit (długie n)
- Mapa (funkcja)
34) Jakie są najczęstsze rodzaje operacji terminalowych?
Poniżej przedstawiamy najczęściej występujące rodzaje operacji terminalowych:
- Liczyć
- Zredukować
- Min
- Wszystkie mecze
- Max
- Dowolny mecz
- Do tablicy
35) W czym jest odwołanie do metody Java 8?
Odniesienie do metody w Java 8 jest sposobem odniesienia się do interfejsu funkcjonalnego. Jest znana jako znacznie łatwiejsza i wydajniejsza forma wyrażenia lambda. Jeśli używasz wyrażeń lambda do odwoływania się do metody, możesz je zastąpić odwołaniem do metody.
36) Czym różnią się iteracje wewnętrzne i zewnętrzne?
Poniżej znajdują się różnice między iteracją wewnętrzną i zewnętrzną:
Iteracja wewnętrzna | Iteracja zewnętrzna |
---|---|
Jest również znany jako iterator pasywny lub ukryty. | Jest również nazywany aktywnym lub jawnym iteratorem. |
Jest przenoszony wewnętrznie na różnych przedmiotach. | Jest przenoszony zewnętrznie na różne przedmioty. |
Jest stosowany w programowaniu funkcjonalnym. | Jest stosowany w programowaniu obiektowym. |
Powoduje znacznie mniej błędów. Jednak kodowanie jest w tym przypadku koniecznością. | To powoduje więcej błędów. Jednak kodowanie nie jest konieczne. |
37) Czy wnioskowanie typu było stosowane w poprzednich wersjach Java?
Java wprowadzono ingerencję typu w Java 5, ale z bardzo ograniczonym dostępem. Jednak z biegiem lat możliwości interferencji typu wzrosły i jest to najlepsze rozwiązanie Java 8.
38) Zapisz a Java 8, który może znaleźć minimalną i maksymalną liczbę strumienia.
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); } }
Wyjście:
Minimum number: 1 Maximum number: 9
39) Jak połączyć wiele ciągów znaków za pomocą klasy StringJoiner?
StringJoiner pomaga w łączeniu jednego lub więcej Stringów i można to zrobić za pomocą określonego łącznika lub ogranicznika. Na przykład można połączyć kilka stringów, oddzielając je przecinkiem (,).
Aby utworzyć ciąg CSV, można wygenerować pełną ścieżkę do określonego katalogu w systemie Linux, co można zrobić, łącząc ciąg za pomocą ukośnika „/”.
40) Jaka jest najlepsza alternatywa dla wyrażeń lambda w Java 8?
Ogólnie rzecz biorąc, używamy wyrażeń lambda do tworzenia anonimowych metod, które pomagają uzyskać pożądane wyniki. Istnieją jednak przypadki, w których wyrażenia lambda nie działają i korzystają wyłącznie z istniejącej metody.
Aby tego uniknąć, możesz użyć odwołania do metody, które może pomóc w uzyskaniu pożądanego wyniku. Odwołanie do metody jest przedstawione za pomocą symbolu: (podwójny dwukropek).