top 40 java 8 interview questions answers
이 튜토리얼에서는 가장 중요한 Java 8 인터뷰 질문 및 코드 예제 및 설명과 함께 답변을 제공했습니다.
이 자습서에 나열된 모든 중요한 질문은 Java 8에만 해당됩니다. Java는 새 버전의 도입과 함께 (시간이 지남에 따라) 많이 발전했습니다. 각 버전마다 Java와 관련된 새로운 기능이 있습니다. 이 모든 중요한 기능은이 튜토리얼에서 다룰 것입니다.
이는 고급 기술이 필요한 Java 인터뷰에서 자주 묻는 질문입니다. Oracle Certified Associate (OCA)와 같은 표준 Java 인증 시험에 응시하려면 이러한 개념이 필수입니다.
=> 여기에서 Java Beginners Guide를 살펴보십시오.
이 기사는 Java 개발자뿐만 아니라 Java Testers / Automation Tester 또는 고급 Java 기술이 필요하기 때문에 동일한 분야에서 더 높은 급여를 원하는 모든 사람에게 매우 적합합니다.
가장 자주 묻는 Java 8 인터뷰 질문
Q # 1) Java 8에 도입 된 새로운 기능을 나열 하시겠습니까?
대답: Java 8에 도입 된 새로운 기능은 다음과 같습니다.
- 람다 식
- 방법 참조
- 선택 수업
- 기능적 인터페이스
- 기본 방법
- Rhinoceros, JavaScript 엔진
- 스트림 API
- 날짜 API
Q # 2) 기능적 인터페이스 란 무엇입니까?
대답: Functional Interface는 하나의 추상 메서드 만있는 인터페이스입니다. 이러한 인터페이스의 구현은 Lambda 표현식을 사용하여 제공됩니다. 즉, Lambda 표현식을 사용하려면 새 기능 인터페이스를 생성해야하거나 미리 정의 된 인터페이스를 사용할 수 있습니다. Java 8의 기능적 인터페이스 .
새 기능 인터페이스를 만드는 데 사용되는 주석은 ' @FunctionalInterface ”.
Q # 3) 선택 수업이란?
대답: 선택적 클래스는 NullPointerExceptions를 방지하는 데 사용되는 Java 8에 도입 된 특수 래퍼 클래스입니다. 이 최종 클래스는 java.util 패키지에 있습니다. NullPointerExceptions는 Null 검사를 수행하지 못할 때 발생합니다.
Q # 4) 기본 방법은 무엇입니까?
대답: 기본 메소드는 본문이있는 인터페이스의 메소드입니다. 이름에서 알 수 있듯이 이러한 방법은 기본 키워드를 사용합니다. 이러한 기본 메서드의 사용은 '역 호환성'입니다. 즉, JDK가 기본 메서드없이 인터페이스를 수정하면이 인터페이스를 구현하는 클래스가 중단됩니다.
반면에 인터페이스에 기본 메소드를 추가하면 기본 구현을 제공 할 수 있습니다. 이는 구현 클래스에 영향을주지 않습니다.
통사론:
public interface questions{ default void print() { System.out.println('www.softwaretestinghelp.com'); } }
질문 # 5) Lambda 함수의 주요 특징은 무엇입니까?
대답: Lambda 함수의 주요 특징은 다음과 같습니다.
- Lambda Expression으로 정의 된 메서드는 매개 변수로 다른 메서드에 전달할 수 있습니다.
- 메서드는 클래스에 속하지 않고 독립형으로 존재할 수 있습니다.
- 컴파일러가 매개 변수 값에서 유형을 가져올 수 있으므로 매개 변수 유형을 선언 할 필요가 없습니다.
- 여러 매개 변수를 사용할 때 괄호를 사용할 수 있지만 단일 매개 변수를 사용할 때는 괄호를 사용할 필요가 없습니다.
- 표현식 본문에 단일 문이있는 경우 중괄호를 포함 할 필요가 없습니다.
문 # 6) 이전 날짜와 시간에 어떤 문제가 있었습니까?
대답: 다음은 이전 날짜 및 시간의 단점입니다.
- Java.util.Date는 변경 가능하며 스레드로부터 안전하지 않지만 새로운 Java 8 날짜 및 시간 API는 스레드로부터 안전합니다.
- Java 8 날짜 및 시간 API는 ISO 표준을 충족하는 반면 이전 날짜 및 시간은 잘못 설계되었습니다.
- LocalDate, LocalTime, LocalDateTime 등과 같은 날짜에 대한 여러 API 클래스를 도입했습니다.
- 둘 사이의 성능에 대해 이야기하면 Java 8은 이전 날짜 및 시간 체제보다 빠르게 작동합니다.
Q # 7) Collection API와 Stream API의 차이점은 무엇인가요?
대답: Stream API와 Collection API의 차이점은 아래 표에서 이해할 수 있습니다.
스트림 API | 컬렉션 API |
---|---|
Java 8 Standard Edition 버전에서 도입되었습니다. | Java 버전 1.2에서 도입되었습니다. |
Iterator 및 Spliterator는 사용되지 않습니다. | forEach의 도움으로 Iterator 및 Spliterator를 사용하여 요소를 반복하고 각 항목 또는 요소에 대한 작업을 수행 할 수 있습니다. |
무한한 수의 기능을 저장할 수 있습니다. | 수많은 요소를 저장할 수 있습니다. |
Stream 개체의 요소 사용 및 반복은 한 번만 수행 할 수 있습니다. | Collection 개체의 요소 사용 및 반복은 여러 번 수행 할 수 있습니다. |
데이터를 계산하는 데 사용됩니다. | 데이터를 저장하는 데 사용됩니다. |
질문 # 8) 기능적 인터페이스를 어떻게 만들 수 있습니까?
대답: Java는 기능 인터페이스를 식별 할 수 있지만 주석을 사용하여 정의 할 수 있습니다.
@FunctionalInterface
기능 인터페이스를 정의한 후에는 하나의 추상 메서드 만 가질 수 있습니다. 추상 메서드가 하나뿐이므로 여러 정적 메서드와 기본 메서드를 작성할 수 있습니다.
다음은 두 숫자의 곱셈을 위해 작성된 FunctionalInterface의 프로그래밍 예입니다.
@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)); } }
산출:
Q # 9) SAM 인터페이스 란 무엇입니까?
대답: Java 8은 하나의 추상 메서드 만 가질 수있는 FunctionalInterface 개념을 도입했습니다. 이러한 인터페이스는 하나의 추상 메서드 만 지정하므로 SAM 인터페이스라고도합니다. SAM은 'Single Abstract Method'를 의미합니다.
질문 # 10) 방법 참조 란 무엇입니까?
애니메이션 웹 사이트에서 무료로 애니메이션을 볼 수있는 영어 더빙
대답: Java 8에서는 Method Reference라는 새로운 기능이 도입되었습니다. 이것은 기능적 인터페이스 방법을 지칭하기 위해 사용됩니다. 메서드를 참조하면서 Lambda Expression을 대체하는 데 사용할 수 있습니다.
예를 들어: Lambda 표현식이 다음과 같은 경우
num -> System.out.println(num)
그러면 해당 메서드 참조는 다음과 같습니다.
System.out::println
여기서 '::'는 클래스 이름과 메서드 이름을 구분하는 연산자입니다.
문 # 11) 다음 구문을 설명하십시오.
String:: Valueof Expression
대답: 에 대한 정적 메서드 참조입니다. ValueOf 의 방법 끈 수업. System.out :: println은 System 클래스의 out 객체의 println 메서드에 대한 정적 메서드 참조입니다.
전달 된 인수의 해당 문자열 표현을 반환합니다. 인수는 Character, Integer, Boolean 등이 될 수 있습니다.
Q # 12) 술어는 무엇입니까? 술어와 함수의 차이점을 설명 하시겠습니까?
대답: 술어는 미리 정의 된 기능 인터페이스입니다. java.util.function.Predicate 패키지 아래에 있습니다. 아래에 표시된 형식의 단일 인수 만 허용합니다.
술부
술부 | 함수 |
---|---|
반환 유형은 부울입니다. | 반환 유형은 Object입니다. |
그것은 형식으로 작성됩니다 술부 단일 인수를 허용합니다. | 그것은 형식으로 작성됩니다 함수 단일 인수도 허용합니다. |
Lambda 표현식을 평가하는 데 사용되는 기능 인터페이스입니다. 이것은 Method Reference의 타겟으로 사용할 수 있습니다. | 또한 Lambda 표현식을 평가하는 데 사용되는 기능 인터페이스입니다. 함수에서 T는 입력 유형이고 R은 결과 유형입니다. 이는 Lambda 표현식 및 메서드 참조의 대상으로도 사용할 수 있습니다. |
문 # 13) 다음 코드에 문제가 있습니까? 컴파일되거나 특정 오류가 발생합니까?
@FunctionalInterface public interface Test { public C apply(A a, B b); default void printString() { System.out.println('softwaretestinghelp'); } }
대답: 예. 코드는 단일 추상 메서드 만 정의하는 기능 인터페이스 사양을 따르기 때문에 컴파일됩니다. 두 번째 메서드 인 printString ()은 추상 메서드로 간주되지 않는 기본 메서드입니다.
문 # 14) Stream API 란 무엇입니까? Stream API가 필요한 이유는 무엇입니까?
대답: Stream API는 Java 8에 추가 된 새로운 기능입니다. Collection과 같은 소스에서 개체를 처리하는 데 사용되는 특수 클래스입니다.
Stream API가 필요합니다.
- 처리를 단순화하는 집계 작업을 지원합니다.
- 기능적 스타일 프로그래밍을 지원합니다.
- 더 빠른 처리를 수행합니다. 따라서 더 나은 성능에 적합합니다.
- 병렬 작업이 가능합니다.
문 # 15) 제한과 건너 뛰기의 차이점은 무엇입니까?
대답: limit () 메서드는 지정된 크기의 Stream을 반환하는 데 사용됩니다. 예를 들어, limit (5)를 언급했다면 출력 요소의 수는 5가됩니다.
다음 예를 살펴 보겠습니다. 제한이 'six'로 설정되어 있으므로 여기서 출력은 6 개의 요소를 반환합니다.
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)); } }
산출:
반면 skip () 메서드는 요소를 건너 뛰는 데 사용됩니다.
다음 예를 살펴 보겠습니다. 출력에서 요소는 6, 7, 8입니다. 즉, 6 번째 인덱스 (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)); } }
산출:
문 # 16) Java 8 Date and Time API를 사용하여 현재 날짜와 시간을 어떻게 얻습니까?
대답: 아래 프로그램은 Java 8에 도입 된 새로운 API의 도움으로 작성되었습니다. 현재 날짜와 시간을 가져 오기 위해 LocalDate, LocalTime 및 LocalDateTime API를 사용했습니다.
첫 번째 및 두 번째 인쇄 문에서 표준 시간대가 기본값으로 설정된 시스템 시계에서 현재 날짜와 시간을 검색했습니다. 세 번째 print 문에서는 날짜와 시간을 모두 인쇄하는 LocalDateTime API를 사용했습니다.
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 } }
산출:
문 # 17) Java 8에서 limit () 메서드의 목적은 무엇입니까?
대답: Stream.limit () 메서드는 요소의 제한을 지정합니다. limit (X)에 지정한 크기는 'X'크기의 Stream을 반환합니다. java.util.stream.Stream의 메소드입니다.
통사론:
limit(X)
여기서‘X’는 요소의 크기입니다.
Q # 18) Java 8에서 forEach를 사용하여 5 개의 난수를 인쇄하는 프로그램을 작성합니까?
대답: 아래 프로그램은 Java 8에서 forEach의 도움으로 5 개의 난수를 생성합니다. 생성하려는 난수 수에 따라 제한 변수를 임의의 숫자로 설정할 수 있습니다.
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 */ } }
산출:
문 # 19) Java 8에서 forEach를 사용하여 정렬 된 순서로 5 개의 난수를 인쇄하는 프로그램을 작성 하시겠습니까?
대답: 아래 프로그램은 Java 8에서 forEach의 도움으로 5 개의 난수를 생성합니다. 생성하려는 난수 수에 따라 제한 변수를 임의의 숫자로 설정할 수 있습니다. 여기에 추가해야하는 유일한 것은 sorted () 메서드입니다.
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 */ } }
산출:
문 # 20) Stream에서 중간 작업과 터미널 작업의 차이점은 무엇입니까?
대답: 모든 스트림 작업은 터미널 또는 중간입니다. 중간 작업은 해당 스트림에서 다른 작업을 수행 할 수 있도록 스트림을 반환하는 작업입니다. 중간 작업은 호출 사이트에서 스트림을 처리하지 않으므로 지연이라고합니다.
이러한 유형의 작업 (중간 작업)은 터미널 작업이 수행 될 때 데이터를 처리합니다. 예 중급 작업은 맵과 필터입니다.
터미널 작업은 스트림 처리를 시작합니다. 이 호출 중에 Stream은 모든 중간 작업을 수행합니다. 예 터미널 작업의 합계, 수집 및 forEach입니다.
이 프로그램에서는 먼저 터미널 동작없이 중간 동작을 수행하려고합니다. 보시다시피 첫 번째 코드 블록은 지원되는 터미널 작업이 없기 때문에 실행되지 않습니다.
두 번째 블록은 터미널 작업 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(); } }
산출:
질문 # 21) 목록에있는 모든 숫자의 합계를 얻기 위해 Java 8 프로그램을 작성 하시겠습니까?
대답: 이 프로그램에서는 ArrayList를 사용하여 요소를 저장했습니다. 그런 다음 sum () 메서드를 사용하여 ArrayList에있는 모든 요소의 합계를 계산했습니다. 그런 다음 Stream으로 변환되고 mapToInt () 및 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 } }
산출:
Q # 22) 숫자 목록을 제곱 한 다음 100보다 큰 숫자를 필터링 한 다음 나머지 숫자의 평균을 찾는 Java 8 프로그램을 작성합니까?
대답: 이 프로그램에서 우리는 정수 배열을 가져 와서 목록에 저장했습니다. 그런 다음 mapToInt ()를 사용하여 요소를 제곱하고 100보다 큰 숫자를 필터링했습니다. 마지막으로 나머지 숫자 (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()); } }
산출:
질문 # 23) Stream의 findFirst ()와 findAny ()의 차이점은 무엇입니까?
대답: 이름에서 알 수 있듯이 findFirst () 메서드는 스트림에서 첫 번째 요소를 찾는 데 사용되는 반면 findAny () 메서드는 스트림에서 요소를 찾는 데 사용됩니다.
findFirst ()는 본질적으로 운명 론적이지만 findAny ()는 비 결정적입니다. 프로그래밍에서 결정적이란 출력이 시스템의 입력 또는 초기 상태를 기반으로 함을 의미합니다.
질문 # 24) Iterator와 Spliterator의 차이점은 무엇입니까?
대답: 다음은 Iterator와 Spliterator의 차이점입니다.
반복자 | 쪼개는 도구 |
---|---|
Java 버전 1.2에서 도입되었습니다. | Java SE 8에서 도입되었습니다. |
Collection API에 사용됩니다. | Stream API에 사용됩니다. |
반복 메소드 중 일부는 요소를 반복하는 데 사용되는 next () 및 hasNext ()입니다. | Spliterator 메서드는 tryAdvance ()입니다. |
Collection Object에서 iterator () 메서드를 호출해야합니다. | Stream Object에서 spliterator () 메서드를 호출해야합니다. |
순차적 인 순서로만 반복합니다. | 병렬 및 순차적 순서로 반복합니다. |
문 # 25) 소비자 기능 인터페이스 란 무엇입니까?
대답: 소비자 기능 인터페이스는 또한 단일 인수 인터페이스 (예 : 술어 및 함수)입니다. java.util.function.Consumer 아래에 있습니다. 이것은 어떤 값도 반환하지 않습니다.
Windows 7 용 무료 최적화 소프트웨어
아래 프로그램에서 우리는 String 객체의 값을 검색하기 위해 accept 메소드를 사용했습니다.
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 */ } }
산출:
문 # 26) 공급 업체 기능 인터페이스 란 무엇입니까?
대답: 공급 업체 기능 인터페이스는 입력 매개 변수를 허용하지 않습니다. java.util.function.Supplier 아래에 있습니다. get 메서드를 사용하여 값을 반환합니다.
아래 프로그램에서는 get 메서드를 사용하여 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. */ } }
산출:
문 # 27) Java 8에서 Nashorn은 무엇입니까?
대답: Java 8의 Nashorn은 JavaScript 코드를 실행하고 평가하기위한 Java 기반 엔진입니다.
문 # 28) 스트림의 최저 및 최고 수를 찾기 위해 Java 8 프로그램을 작성 하시겠습니까?
대답: 이 프로그램에서는 min () 및 max () 메서드를 사용하여 스트림의 최고 수와 최저 수를 얻었습니다. 우선 Integers를 가진 Stream을 초기화했고 Comparator.comparing () 메서드의 도움으로 Stream의 요소를 비교했습니다.
이 메서드가 max () 및 min ()과 통합되면 가장 높은 숫자와 가장 낮은 숫자를 제공합니다. 문자열을 비교할 때도 작동합니다.
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); } }
산출:
문 # 29) Map과 flatMap Stream Operation의 차이점은 무엇입니까?
대답: Map Stream 작업은 입력 값당 하나의 출력 값을 제공하는 반면 flatMap Stream 작업은 입력 값당 0 개 이상의 출력 값을 제공합니다.
지도 예- Map Stream 작업은 일반적으로 다음과 같은 Stream에서 간단한 작업을 위해 사용됩니다.
이 프로그램에서는 'Names'의 문자를 Stream에 저장 한 후 map 연산을 사용하여 대문자로 변경하고 forEach Terminal 연산의 도움으로 각 요소를 인쇄했습니다.
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 } }
산출:
flatMap 예- flatMap Stream 작업은 더 복잡한 Stream 작업에 사용됩니다.
여기에서는“List of List of type String”에 대해 flatMap 연산을 수행했습니다. 입력 이름을 목록으로 지정한 다음 'S'로 시작하는 이름을 필터링 한 스트림에 저장했습니다.
마지막으로 forEach 터미널 작업의 도움으로 각 요소를 인쇄했습니다.
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 */ } }
산출:
문 # 30) Java 8의 MetaSpace는 무엇입니까?
대답: Java 8에서는 클래스를 저장하는 새로운 기능이 도입되었습니다. Java 8에 저장된 모든 클래스가있는 영역을 MetaSpace라고합니다. MetaSpace는 PermGen을 대체했습니다.
Java 7까지 PermGen은 Java Virtual Machine에서 클래스를 저장하는 데 사용되었습니다. MetaSpace는 동적으로 성장할 수 있고 크기 제한이 없기 때문에 동적이므로 Java 8은 PermGen을 MetaSpace로 대체했습니다.
문 # 31) Java 8 내부 및 외부 반복의 차이점은 무엇입니까?
대답: 내부 및 외부 반복의 차이점은 아래에 나열되어 있습니다.
내부 반복 | 외부 반복 |
---|---|
Java 8 (JDK-8)에서 도입되었습니다. | 이전 버전의 Java (JDK-7, JDK-6 등)에서 도입되고 실행되었습니다. |
Collection과 같은 집계 된 개체에 대해 내부적으로 반복됩니다. | 집계 된 개체에서 외부 적으로 반복됩니다. |
함수형 프로그래밍 스타일을 지원합니다. | OOPS 프로그래밍 스타일을 지원합니다. |
내부 반복기는 수동입니다. | 외부 반복기가 활성화되었습니다. |
오류가 적고 코딩이 덜 필요합니다. | 약간 더 많은 코딩이 필요하며 오류가 발생하기 쉽습니다. |
문 # 32) JJS는 무엇입니까?
대답: JJS는 콘솔에서 JavaScript 코드를 실행하는 데 사용되는 명령 줄 도구입니다. Java 8에서 JJS는 JavaScript 엔진 인 새로운 실행 파일입니다.
Q # 33) Java 8에서 ChronoUnits는 무엇입니까?
대답: ChronoUnits는 월, 일 등을 나타 내기 위해 이전 API에서 사용되는 정수 값을 대체하기 위해 도입 된 열거 형입니다.
문 # 34) Java 8의 StringJoiner 클래스를 설명 하시겠습니까? StringJoiner 클래스를 사용하여 여러 문자열을 결합하려면 어떻게해야합니까?
대답: Java 8에서는 StringJoiner로 알려진 java.util 패키지에 새로운 클래스가 도입되었습니다. 이 클래스를 통해 접두사 및 접미사를 제공하는 것과 함께 구분 기호로 구분 된 여러 문자열을 결합 할 수 있습니다.
아래 프로그램에서는 StringJoiner 클래스를 사용하여 여러 문자열을 결합하는 방법을 배웁니다. 여기에서 두 개의 다른 문자열 사이의 구분 기호로 ','가 있습니다. 그런 다음 add () 메서드를 사용하여 5 개의 다른 문자열을 추가하여 결합했습니다. 마지막으로 String Joiner를 인쇄했습니다.
다음 질문 # 35에서는 문자열에 접두사와 접미사를 추가하는 방법을 배웁니다.
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); } }
산출:
Q # 35) 문자열에 접두사와 접미사를 추가하는 Java 8 프로그램을 작성합니까?
대답: 이 프로그램에서는 서로 다른 두 문자열 사이의 구분 기호로 ','가 있습니다. 또한 '('및 ')'대괄호를 접두사와 접미사로 지정했습니다. 그런 다음 add () 메서드를 사용하여 5 개의 다른 문자열을 추가하여 결합합니다. 마지막으로 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); } }
산출:
문 # 36) forEach 메소드를 사용하여 스트림을 반복하는 Java 8 프로그램을 작성 하시겠습니까?
대답: 이 프로그램에서 우리는 'number = 2'에서 시작하여 각 반복 후에 '1'씩 증가하는 count 변수가 뒤 따르는 Stream을 반복합니다.
그런 다음 2로 나눌 때 나머지가 0이 아닌 숫자를 필터링합니다. 또한 제한을? 이는 5 번만 반복됨을 의미합니다. 마지막으로 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); } }
산출:
문 # 37) 배열을 정렬하는 Java 8 프로그램을 작성한 다음 정렬 된 배열을 Stream으로 변환 하시겠습니까?
대답: 이 프로그램에서는 병렬 정렬을 사용하여 정수 배열을 정렬했습니다. 그런 다음 정렬 된 배열을 Stream으로 변환하고 forEach의 도움으로 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 */ } }
산출:
문 # 38) 목록에서 길이가 5보다 큰 문자열 수를 찾는 Java 8 프로그램을 작성 하시겠습니까?
대답: 이 프로그램에서는 add () 메서드를 사용하여 4 개의 문자열을 목록에 추가 한 다음 Stream 및 Lambda 표현식을 사용하여 길이가 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'); } }
산출:
문 # 39) 두 스트림을 연결하는 Java 8 프로그램을 작성 하시겠습니까?
대답: 이 프로그램에서는 이미 생성 된 두 개의 목록에서 두 개의 스트림을 만든 다음 두 목록이 인수로 전달되는 concat () 메서드를 사용하여 연결했습니다. 마지막으로 연결된 스트림의 요소를 인쇄합니다.
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 } }
산출:
문 # 40) 목록에서 중복 요소를 제거하는 Java 8 프로그램을 작성 하시겠습니까?
Windows 10에서 BIOS를 업데이트하는 방법
대답: 이 프로그램에서는 요소를 배열에 저장하고 목록으로 변환했습니다. 그 후 스트림을 사용하고 'Collectors.toSet ()'메서드를 사용하여 'Set'에 수집했습니다.
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)); } }
산출:
결론
이 기사에서는 Java 8에 도입 된 새로운 기능을 이해했습니다. 모든 주요 Java 8 인터뷰 질문과 그에 대한 답변을 자세히 다루었습니다.
이 자습서를 읽으면 날짜-시간 조작을위한 새로운 API, Java 8의 새로운 기능, 개념에 따른 적절한 프로그래밍 예제와 함께 새로운 스트리밍 API에 대한 지식을 얻었어야합니다. 이러한 새로운 개념이나 기능은 더 까다로운 Java Position에 대한 인터뷰 프로세스의 일부입니다.
모두 제일 좋다!!