35+ Java 8 면접 질문 및 답변 (2025)

기술 전문가이든 다른 전문가이든 인터뷰는 항상 긴장감에서 아드레날린을 몰아냅니다. 그러나 군중 속에서 눈에 띄기 위해서는 기술을 연마하고 능력에 베팅하는 것이 중요합니다. 또한, 자주 묻는 질문을 손에 들고 Java 8가지 면접 질문과 답변이 당신의 지식이 될 수 있습니다.

따라서 숙련된 사용자와 초보자를 위한 Java 8 인터뷰 질문을 깊이 파고들어 다가오는 인터뷰에 성공하세요.

Java 신입생과 경력자를 위한 8가지 면접 질문

1) Java 8은 어떤 프로그래밍 패러다임에 속합니까?

Java 8은 다음 프로그래밍 패러다임에 속합니다.

  • 객체 지향 또는 클래스 지향 프로그래밍 언어.
  • 함수형 프로그래밍 언어.
  • 지정된 절차적 프로그래밍 언어.
  • 논리 프로그래밍 언어.

2) 왜 Optional 클래스를 사용해야 합니까?

Optional 클래스는 기존 또는 존재하지 않는 선택적 값을 표시하는 데 유용한 새로 도입된 컨테이너 클래스입니다. 주요 장점은 null 및 void 검사를 피하고 특정 변수에 대한 값의 존재를 확인하는 데 유용한 방법을 용이하게 한다는 것입니다.


Java 8 면접 질문

3) 최근에 도입된 몇 가지 기능을 말해 보세요. Java 8.

다음은 에 도입된 최신 기능입니다. Java 8:

  • 람다 표현식: 그것은 Java 객체로 공유하거나 참조할 수 있는 기능입니다.
  • 방법 간섭: 메소드를 구현하기 위한 기준으로 함수를 사용합니다.
  • 기능적 간섭: 모든 기능적 간섭은 기능적 방법으로 알려진 단일 추상 방법과 연관됩니다.
  • 기본 방법: 이는 '인터페이스 발전' 잠재력을 활성화하는 데 도움이 되는 인터페이스의 메서드를 구현하는 데 유용합니다.
  • 날짜 시간 API: 이는 이전 버전의 단점을 처리하기 위해 개선되었지만 영감을 받은 Java Time API 버전입니다.
  • 스트림 API 처리 데이터를 파이프라인하는 데 도움이 되는 추상 계층이라고 합니다.
  • 선택 사항 : 래퍼 클래스는 null 값을 확인하고 추가 데이터를 처리하는 데 유용합니다.
  • Java스크립트 및 Nashorn 엔진: 의 개선된 버전입니다 Java스크립트 엔진은 기능을 활성화하는 데 유용합니다. Java, Rhino를 대체합니다.

4) Java 8 사용의 이점을 명시하십시오.

사용하면 다음과 같은 이점이 있습니다. Java 8:

  • 훨씬 더 빠르고 쉬운 방법으로 애플리케이션을 만드는 데 도움이 됩니다.
  • 개발자에게 매우 안정적인 환경을 제공합니다.
  • 간결하고 재사용 가능하며 이해하기 쉬운 코드입니다.
  • 개선되고 효과적인 지원.
  • 다양한 운영체제에 쉽게 이식할 수 있습니다.
  • 최소 상용구 코드.

5) 컬렉션이란 무엇이며, 스트림과 어떻게 다릅니까?

컬렉션은 현재 데이터 구조에 따라 모든 값을 기록하는 메모리 내 데이터베이스입니다. 따라서 컬렉션에 추가하기 전에 각각을 계산하는 것이 중요합니다. 반면 스트림은 필요에 따라 요소를 계산할 수 있는 시각적으로 고정된 데이터 구조입니다.


6) 람바다 표현이란 무엇입니까?

Lambada 표현식은 이름이 없는 함수의 일종으로, 고유한 유형의 정보가 없기 때문에 익명 함수라고도 합니다. 필요에 따라 사용할 수 있으며 컬렉션에서 데이터를 반복, 필터링 및 추출하는 데 매우 유용합니다.

예:

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);
    }
}

출력:

Charlie

7) 스트림 파이프라인 정의

스트림 파이프라인은 서로 다른 작업을 모두 그룹화하는 방법입니다. 스트림 작업을 두 부분으로 분류하여 이를 달성할 수 있습니다. 중간 작업과 최종 작업입니다.

중간 작업이 수행될 때마다 인스턴스를 스트림 파이프라인으로 되돌립니다. 따라서 모든 사용자는 비이성적인 수의 중간 작업을 설정하여 데이터를 간소화하고 궁극적으로 처리 파이프라인을 형성할 수 있습니다.

게다가 파이프라인을 종료하기 위해서는 프로세스 마지막에 터미널 작업이 필요합니다.


8) 술어와 소비자는 무엇입니까? Java 8?

조건자는 일반적으로 인수를 수신하고 부울 값을 검색하는 기능적 인터페이스입니다. 이를 사용하여 개체 컬렉션에 필터를 적용할 수 있습니다.

반면에 소비자는 다음에서 발견되는 내장 기능 인터페이스라고 합니다. Java.util.function 패키지. 이를 사용하여 모든 개체를 사용할 수 있으며 입력 값을 가져오고 아무것도 제공하지 않습니다.


9) 왜 peek() 메소드를 사용합니까? Java 8?

peek() 메서드는 파이프라인의 특정 지점에서 흐르는 경향이 있는 요소를 확인하려는 디버깅을 지원하는 데 도움이 됩니다. 이는 각 요소가 어떻게 통과하는지에 대한 우리의 관찰을 표현한 것입니다.

구문 : public Object peek()


10) 귀하가 이 분야에 이상적인 후보자인 이유는 무엇입니까? Java 개발자 역할?

다음은 귀하를 이상적인 후보자로 만들 수 있는 몇 가지 중요한 자질입니다. Java 개발자 역할:

  • 명확하고 이해하기 쉬우며 효율적인 코드를 작성할 수 있는 능력이 있어야 합니다.
  • "패턴과 개념에 대한 깊은 이해OOP 또는 객체 지향 프로그래밍. "
  • 다양한 건축 및 디자인 패턴에 대한 좋은 지식이 있습니다.
  • 익숙 함 Java 동시성 패턴.
  • 등 다양한 웹 애플리케이션 프레임워크 작업 경험 및 지식 Spark 그리고 놀자.
  • 기본 지식 Java 가상 머신 또는 JVM, 단점, 해결 방법 등
  • 내장형 및 외부 데이터베이스 사용에 대한 좋은 경험.

11) '기능적 인터페이스'에 대해 설명해보세요.

추상이 하나만 있는 인터페이스를 기능적 인터페이스라고 합니다. 단일 추상 방법(Single Abstract Method) 또는 SAM이라고도 합니다. 그러나 @FunctionalInterface 주석은 선택 사항이며 해당 주석이 없더라도 사용할 수 있습니다. 추상이 없으면 다른 인터페이스로 확장됩니다.


12) 정적 메소드가 필요한 이유는 무엇입니까? Java 8?

정적 메서드 참조는 인터페이스와 연결되는 유틸리티 또는 도우미 메서드라고 합니다. 어떤 객체에도 연결되지 않은 클래스이기도 합니다.

다음은 Static 메서드를 사용하는 이유입니다. Java:

  • API를 유지하고 확장하는 데 유용합니다.
  • 책임의 명확하고 간결한 공유를 수반하며, 유틸리티 컬렉션을 갖기 위해 하나의 유틸리티 클래스가 필요하지 않습니다.
  • 특정 인터페이스가 아닌 공통 인터페이스에 모든 인터페이스를 유지하는 데 유용합니다.

13) 나스호른의 장점은 무엇인가요?

Nashorn은 가장 진보되고 새로운 제품입니다. JavaScript 에 도입된 처리 엔진 Java 8. 이전에는 Mozilla Rhino를 기반으로 했습니다. ECMA에 대한 향상된 규정 준수를 제공합니다. Java스크립트. 이전 버전보다 더 빠릅니다.


14) 컬렉션 API와 스트림 API는 어떻게 다른가요?

Collection API와 Stream API의 몇 가지 중요한 차이점은 다음과 같습니다.

컬렉션 API 스트림 API
Collection API는 다음에서 처음 사용되었습니다. Java 1.2 스트림 API가 처음 소개되었습니다. Java IF 8.
무제한으로 데이터를 저장할 수 있습니다. 이를 사용하여 무제한 데이터를 계산할 수 있습니다.
Collection API를 사용하면 Iterator 및 Spilterator를 사용하여 데이터를 반복할 수 있습니다. Stream API를 사용하면 데이터 반복을 위해 Iterator 및 Spilterator를 사용할 수 있습니다.
컬렉션 API는 접근하기 쉽습니다. 인스트림 API에는 특정 요소에 접근할 수 있는 직접적인 방법이 없습니다.
또한 필요에 따라 쉽게 처리할 수 있습니다. 스트림 API는 한 번만 처리할 수 있습니다.

15) PermGenSpace와 MetaSpace에 대해 설명하세요.

PermGen 또는 영구 생성 공간은 현재 제거된 저장된 메타데이터를 추적하는 데 사용되는 고유한 유형의 힙 공간입니다. Java 8.

이 새 버전에서는 메타데이터 저장이 "MetaSpace"라고 알려진 유사한 메모리에서 수행됩니다. 양도가 되지 않습니다 Java 힙 메모리이며 자동 튜닝, 가비지 수집 등의 측면에서 PermGen의 개선된 버전입니다.


16) 기능적 인터페이스는 어떻게 생성됩니까? Java 8?

람다 식을 사용하여 기능적 인터페이스의 추상 메서드를 구현할 수 있습니다. Java 8. 다음은 동일한 코딩 예입니다.

예시

import java.util.function.Consumer;
public class FunctionalInterfaceExample {
    public static void main(String[] args) {
        Consumer<String> printer = System.out::println;
        printer.accept("Hello, world!");
    }
}

출력:

Hello, world!

17) 함수와 술어의 차이점과 유사점은 무엇입니까? Java 8?

함수와 술어의 차이점은 다음과 같습니다. Java 8:

  • 함수는 변환에 유용한 반면, 조건자는 모든 조건을 테스트하는 데 사용할 수 있습니다.
  • 함수는 인수를 수신하고 결과를 제공할 수 있는 반면, 조건부는 인수를 수신하지만 부울 값만 제공할 수 있습니다.
  • 기능은 다음과 같이 표시됩니다. , 술어는 다음으로만 표시됩니다. , 여기서 T는 함수 유형이고 R은 결과입니다.

다음은 함수와 술어의 유사점입니다.

  • 함수와 조건자 모두 기능적 인터페이스입니다.
  • 함수와 조건자 모두 단일 인수 함수입니다.

18) 예를 들어 건너뛰기(long)와 제한(long)의 차이점을 설명하세요.

스킵(long)은 특정 스트림의 초기 n개 요소를 제거한 후 남은 요소를 검색하는 중간 작업입니다.

예:

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);
    }
}

출력:

Charlie
Dave
Eve

Limit(long)은 특정 크기의 요소 스트림을 검색합니다.

예:

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);
    }
}

출력:

AliceBob
Charlie

19) 스트림 API를 사용하기에 가장 적합한 상황은 무엇입니까? Java 8?

다음에서 스트림 API를 사용할 수 있습니다. Java 8. 아래 작업이 필요합니다.

  • 병렬 처리를 수행할 수 있습니다.
  • 느리게 작업을 실행하기 위해
  • 데이터베이스 작업을 수행하려면
  • 내부 반복에 사용합니다.
  • 함수형 프로그래밍 작성용
  • 파이프라인 작업을 사용하는 데 사용할 수 있습니다.

20) 유형 추론의 기능은 무엇입니까?

유형 추론은 해당 선언 및 메소드 호출에 대한 개요를 제공함으로써 컴파일러가 인수 유형을 식별하거나 인식하는 데 도움을 줍니다.


21) 목록에서 중복 요소를 식별하고 제거하는 가장 쉬운 방법은 무엇입니까? Java 8?

중복된 요소를 식별하고 제거하는 가장 쉬운 방법은 스트림 연산을 사용하고 컬렉션을 수행한 다음 Collections.toSet() 메서드를 사용하는 것입니다.


22) 기능적 인터페이스에 대한 지침은 무엇입니까?

다음은 가장 많이 요청되는 기능적 인터페이스에 대한 지침입니다. Java 8가지 프로그래밍 질문:

  • 추상 메서드는 하나만 있어야 합니다.
  • 추상적이지 않기 때문에 기본 메소드 수만큼 가질 수 있으며 구현은 이전에 동일하게 제공됩니다.
  • 공개 메소드의 주요 요소인 추상 메소드 Java.lang은 기능적 인터페이스로 알려져 있습니다. 객체는 여전히 유용한 인터페이스로 간주됩니다.

참고 : 이에 대한 설명은 이 인터페이스의 각 구현 클래스가 구현 클래스 자체에 의해 정의되거나 슈퍼클래스에서 가져온 이 추상 메서드에 대한 구현을 가질 수 있다는 것입니다.


23) 분할자와 반복자를 구별합니다.

분할자와 반복자의 몇 가지 차이점은 다음과 같습니다.

분할기 반복자
에 소개되었습니다. Java 1.2. 에 소개되었습니다. Java 1.8.
모든 요소를 ​​개별적으로 반복할 뿐입니다. 이는 모든 요소를 ​​개별적으로 또는 대량으로 가로지릅니다.
전체 API 컬렉션에 대한 반복자 역할을 합니다. 스트림 및 컬렉션 API 모두에 대한 반복자 역할을 합니다.
병렬 프로그래밍을 지원하지 않습니다. 병렬 프로그래밍을 지원합니다.

24) 클래스에서 인터페이스의 기본 메소드를 어떻게 호출할 수 있나요?

메소드 시그니처의 시작 부분에 있는 default 키워드는 인터페이스의 메소드 선언을 기본 메소드로 지정하는 데 사용됩니다. 기본 메서드를 포함하여 인터페이스의 모든 메서드 선언은 자동으로 공개되므로 public 한정자를 건너뛸 수 있습니다.


25) 기본 방법을 정의합니다. 언제 사용할 수 있나요?

기본 메소드는 인터페이스에 존재하며 구현을 포함합니다. 이 방법은 인터페이스에 이미 구현된 클래스와 함께 이전 버전과의 호환성을 유지하면서 지정된 인터페이스에 새로운 기능을 추가하는 데 유용합니다.


26) 스트림은 어떻게 생성됩니까? Java, 이건 가장 많이 묻는 Java 8 스트림 면접 질문 중 하나인가요?

스트림 Java 집계 작업을 지원하는 컬렉션과 같은 특정 소스의 객체 시퀀스를 설명합니다. 이를 활용하여 한 데이터 구조를 다른 데이터 구조로 수집, 필터링, 인쇄 및 변경할 수 있습니다.

다음은 스트림을 생성하는 방법에 대한 예입니다. 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);
    }
}

출력:

Alice
Bob
Charlie
Dave
Eve

27) Map과 FlatMap 스트림 연산은 무엇인가요?

Map과 FlatMap은 함수를 받아들이는 스트림과 중간 스트림 연산으로 간주됩니다. 또한 주어진 함수를 나머지 요소에 적용하는 데 도움이 됩니다.


28) 왜 우리는 이 규칙을 변경해야 합니까? Java 프로그래밍 언어를 자주 사용하시나요?

우리는 Java 프로그래밍 언어는 다음과 같은 이유로 자주 발생합니다.

  • 의 기능을 사용할 수 있습니다. 기능적 프로그래밍.
  • 멀티 코어 CPU의 최신 기술을 효과적으로 활용합니다.

29) 다음에서 사용되는 몇 가지 기능적 인터페이스를 언급하세요. Java 8.

다음은 사용되는 몇 가지 기능적 인터페이스입니다. Java 8:

  • 이진Opera바위 산
  • 소비자
  • 함수
  • 공급 업체
  • 단항Opera바위 산
  • 이중 기능
  • 술부

30) 시간과 날짜에 대한 주요 API 클래스는 무엇입니까?

아래에는 에서 사용되는 시간 및 날짜에 대한 기본 API 클래스가 나열되어 있습니다. Java 8:

  • 현지 시각
  • 현지 날짜 시간
  • 현지 날짜

31) 람다식의 기본 구조/구문을 알려주세요.

람다 표현식의 기본 구조/구문은 다음과 같습니다.

(arugument - list) - > {body}

여기

  • 인수 - 목록: 채우거나 비워 둘 수 있습니다.
  • 화살표 토큰: 본문 표현과 인수(목록)를 연결하는 데 유용합니다.
  • 신체: 람다 식에 대한 문과 식으로 구성됩니다.

32) 스트림의 주요 특징은 무엇인가요?

Stream의 주요 특징은 다음과 같습니다.

  • 파이프 라이닝
  • 출처
  • 골재 OperaTIONS
  • 요소의 순서
  • 자동 반복

33) 가장 흔한 중간 작업은 무엇입니까?

가장 일반적인 유형의 중간 표현식은 다음과 같습니다.

  • 별개의 ()
  • 건너뛰기(긴 n)
  • 필터(술어)
  • 제한(긴 n)
  • 지도(기능)

34) 가장 일반적인 터미널 작업 유형은 무엇입니까?

가장 일반적인 터미널 작업 유형은 다음과 같습니다.

  • 카운트
  • 줄입니다
  • Min
  • 올매치
  • Max
  • AnyMatch
  • 배열로

35) 메소드 참조란 무엇입니까? Java 8?

메소드 참조 Java 도 8은 기능적 인터페이스를 참조하는 방법이다. 이는 훨씬 더 쉽고 효율적인 람다 표현 형식으로 알려져 있습니다. 람다 식을 사용하여 메서드를 참조하는 경우 이를 메서드 참조로 바꿀 수 있습니다.


36) 내부 반복과 외부 반복은 어떻게 다릅니까?

내부 반복과 외부 반복의 차이점은 다음과 같습니다.

내부 반복 외부 반복
수동 또는 암시적 반복자라고도 합니다. 활성 또는 명시적 반복자라고도 합니다.
그것은 다양한 물체에 내부적으로 운반됩니다. 다양한 물체에 외부로 운반됩니다.
함수형 프로그래밍에 활용됩니다. 객체지향 프로그래밍에 활용됩니다.
오류가 매우 적습니다. 그러나 이를 위해서는 코딩이 필수입니다. 더 많은 오류가 발생합니다. 그러나 코딩은 필요하지 않습니다.

37) 이전 버전에서는 형식 추론이 사용되었습니까? Java?

Java 유형 간섭이 도입되었습니다. Java 5 그러나 접근이 매우 제한적입니다. 그러나 수년에 걸쳐 유형 간섭의 가능성이 증가했으며 Java 8.


38) 다음을 적어보세요 Java 스트림의 최소 및 최대 수를 찾을 수 있는 8개 프로그램입니다.

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);
    }
}

출력:

Minimum number: 1
Maximum number: 9

39) StringJoiner 클래스를 통해 여러 문자열을 어떻게 결합합니까?

StringJoiner는 하나 이상의 String을 결합하는 데 도움이 되며 특정 조인어나 구분 기호를 통해 수행할 수 있습니다. 예를 들어, 쉼표(,)로 구분하여 여러 문자열을 결합할 수 있습니다.

CSV 문자열을 생성하려면 슬래시 "/"를 사용하여 문자열을 결합하여 Linux에서 특정 디렉터리에 대한 전체 경로를 생성할 수 있습니다.


40) 람다 표현식에 대한 가장 좋은 대안은 무엇입니까? Java 8?

일반적으로 우리는 원하는 출력을 얻는 데 도움이 되는 익명 메서드를 만들기 위해 람다 식을 활용합니다. 그러나 람다 식이 작동하지 않고 기존 메서드만 사용하는 경우가 있습니다.

따라서 이를 피하기 위해 원하는 출력을 얻는 데 도움이 되는 메서드 참조를 사용할 수 있습니다. 메서드 참조는 (이중 콜론) 기호를 사용하여 표시됩니다.