웹사이트 검색

Java SE 8 인터뷰 질문 및 답변(2부)


이전 게시물에서 몇 가지 중요한 Java SE 8 인터뷰 질문 및 답변에 대해 논의했습니다. 이 게시물에서는 Java SE 8 인터뷰 질문 및 답변에 대해 더 논의할 것입니다. 이 게시물을 읽기 전에 \Java SE 8 인터뷰 질문(파트 1)에 있는 이전 게시물을 읽어보십시오.

Java SE 8 인터뷰 질문

  1. Java SE 8의 내부 반복이란 무엇입니까?
  2. 외부 반복과 내부 반복의 차이점
  3. 외부 반복의 주요 단점은 무엇입니까?
  4. 외부 반복에 비해 내부 반복의 주요 이점은 무엇입니까?
  5. 외부 반복에 비해 내부 반복의 주요 단점은 무엇입니까?
  6. 내부 반복에 비해 외부 반복의 주요 이점은 무엇입니까?
  7. 내부 반복은 언제 사용해야 합니까? 외부 반복은 언제 사용해야 하나요?
  8. Java 8 Stream API의 중간 작업과 터미널 작업의 차이점
  9. Java 인터페이스에서 메소드 구현을 제공할 수 있습니까? 가능하다면 어떻게 제공하나요?
  10. 기본 방법이란 무엇입니까? Java 8 인터페이스에 기본 메서드가 필요한 이유는 무엇입니까?
  11. 정적 방법이란 무엇입니까? Java 8 인터페이스에 정적 메서드가 필요한 이유는 무엇입니까?
  12. 함수 프로그래밍과 객체 지향 프로그래밍의 차이점
  13. Old Java Date API의 문제를 설명하시겠습니까? Old Date API 및 Joda Time API에 비해 Java 8의 Date and Time API의 장점은 무엇인가요?
  14. Java SE 8에서 새로운 날짜 및 시간 API가 필요한 이유는 무엇입니까?Java SE 8 데이터 및 시간 API가 이전 Java 날짜 API의 문제를 어떻게 해결하는지 설명하십시오.
  15. Java의 OLD Java Date API와 Java 8의 Date and Time API의 차이점은 무엇인가요?
  16. 다중 상속이란 무엇입니까? 자바 8은 어떻게 다중 상속을 지원하나요?
  17. 기본 메소드로 인한 인터페이스의 다이아몬드 문제는 무엇입니까? Java 8은 이 문제를 어떻게 해결합니까?

Java SE 8 인터뷰 질문 및 답변

Java SE 8의 내부 반복이란 무엇입니까?

Java 8 이전에는 내부 반복 개념이 없습니다. Java 8은 "내부 반복\이라는 새로운 기능을 도입했습니다. Java 8 이전에는 Java 언어에 컬렉션, 배열 등과 같은 집계된 개체의 요소를 반복하는 외부 반복만 있었습니다. 내부 반복은 "집계된 개체 요소를 하나씩 반복하는 것을 의미합니다. Java API에 의해 내부적으로 하나”. Java 애플리케이션이 외부에서 반복하는 대신 내부적으로 이 작업을 수행하도록 Java API에 요청합니다.

외부 반복과 내부 반복의 차이점은 무엇입니까?

S.No. External Iteration Internal Iteration
1. Available before Java 8 too. It is introduced in Java SE 8
2. Iterating an Aggregated Object elements externally. Iterating an Aggregated Object elements internally (background).
3. Iterate elements by using for-each loop and Iterators like Enumeration, Iterator, ListIterator. Iterate elements by using Java API like “forEach” method.
4. Iterating elements in Sequential and In-Order only. Not required to iterate elements in Sequential order.
5. It follows OOP approach that is Imperative Style. It follows Functional Programming approach that is Declarative Style.
6. It does NOT separate responsibilities properly that is, it defines both “What is to be done” and “How it is to be done”. It defines only “What is to be done”. No need to worry about “How it is to be done”. Java API takes care about “How to do”.
7. Less Readable Code. More Readable code.

외부 반복의 주요 단점은 무엇입니까?

외부 반복에는 다음과 같은 단점이 있습니다.

  • 명령형 스타일로 코드를 작성해야 합니다.
  • 책임이 명확하게 분리되어 있지 않습니다. "What is to be done\과 "How it is to be done\ 코드 사이의 긴밀한 결합.
  • 가독성이 낮은 코드.
  • 자세한 정보 및 상용구 코드.
  • 순차적 순서로만 요소를 반복해야 합니다.
  • 동시성 및 병렬성을 제대로 지원하지 않습니다.

외부 반복에 비해 내부 반복의 주요 이점은 무엇입니까?

외부 반복과 비교하여 내부 반복에는 다음과 같은 이점이 있습니다.

  • 함수형 프로그래밍 스타일을 따르므로 선언적 코드를 작성할 수 있습니다.
  • 더 읽기 쉽고 간결한 코드.
  • Verbose 및 상용구 코드 작성 방지
  • 순차적인 순서로 요소를 반복할 필요가 없습니다.
  • 동시성과 병렬성을 제대로 지원합니다.
  • Parallel 코드를 작성하여 애플리케이션 성능을 향상시킬 수 있습니다.
  • 책임의 명확한 분리. "What is to be done\과 "How it is to be done\ 코드 사이의 느슨하게 결합.
  • \What is to be done\에 대한 코드만 작성하면 되고 Java API는 \How it is to be done\ 코드를 처리합니다.

외부 반복에 비해 내부 반복의 주요 단점은 무엇입니까?

외부 반복과 비교하여 내부 반복에는 한 가지 큰 단점이 있습니다.

  • Internal Iteration에서 Java API는 내부적으로 Iterating 요소를 처리하므로 Iteration을 제어할 수 없습니다.

내부 반복에 비해 외부 반복의 주요 이점은 무엇입니까?

내부 반복과 비교하여 외부 반복에는 한 가지 주요 이점이 있습니다.

  • 외부 반복에서 Java API는 반복 요소를 신경쓰지 않으므로 반복을 더 많이 제어할 수 있습니다.

내부 반복을 사용해야 하는 경우는 언제입니까? 언제 외부 반복을 사용해야 합니까?

내부 반복 또는 외부 반복을 사용하려면 상황을 이해해야 합니다.

  • 반복에 대한 더 많은 제어가 필요한 경우 외부 반복을 사용할 수 있습니다.
  • 반복에 대한 추가 제어가 필요하지 않은 경우 내부 반복을 사용할 수 있습니다.
  • 높은 동시성 및 병렬 응용 프로그램을 개발해야 할 때 내부 반복을 사용해야 합니다.

Java 8 Stream API의 중간 작업과 터미널 작업의 차이점은 무엇입니까?

S.No. Stream Intermediate Operations Stream Terminal Operations
1. Stream Intermediate operations are not evaluated until we chain it with Stream Terminal Operation. Stream Terminal Operations are evaluated on it’s own. No need other operations help.
2. The output of Intermediate Operations is another Stream. The output of Intermediate Operations is Not a Stream. Something else other than a Stream.
3. Intermediate Operations are evaluated Lazily. Terminal Operations are evaluated Eagerly.
4. We can chain any number of Stream Intermediate Operations. We can NOT chain Stream Terminal Operations.
5. We can use any number of Stream Intermediate Operations per Statement. We can use only one Stream Terminal Operation per Statement.

Java 인터페이스에서 메소드 구현을 제공할 수 있습니까? 가능하다면 어떻게 제공합니까?

Java 7 또는 이전 버전에서는 인터페이스에서 메서드 구현을 제공할 수 없습니다. Java 8 이상에서는 가능합니다. Java SE 8에서는 다음 두 가지 새로운 개념을 사용하여 인터페이스에서 메서드 구현을 제공할 수 있습니다.

  • 기본 방법
  • 정적 방법

기본 방법이란 무엇입니까? Java 8 인터페이스에서 기본 메서드가 필요한 이유는 무엇입니까?

Default Method는 "default\ 키워드가 있는 인터페이스에서 구현되는 메소드입니다. Java SE 8에 도입된 새로운 기능입니다. Default Method가 필요한 이유는 다음과 같습니다.

  • 인터페이스에서 메서드 구현을 제공할 수 있습니다.
  • 해당 인터페이스를 구현하는 클래스를 중단하지 않고 인터페이스에 새 기능을 추가합니다.
  • 우아한 이전 버전과의 호환성 기능을 제공합니다.
  • 기존 기능을 쉽게 확장할 수 있습니다.
  • 기존 기능을 쉽게 유지하기 위해

정적 방법이란 무엇입니까? Java 8 인터페이스에서 정적 메소드가 필요한 이유는 무엇입니까?

정적 메서드는 클래스(또는 인터페이스)에 연결된 유틸리티 메서드 또는 도우미 메서드입니다. 어떤 개체와도 연결되어 있지 않습니다. 다음과 같은 이유로 정적 메서드가 필요합니다.

  • 별도의 Utility 클래스가 아닌 동일한 인터페이스에서 인터페이스에 특정한 Helper 또는 Utility 메소드를 유지할 수 있습니다.
  • 유틸리티 메서드를 유지하기 위해 컬렉션, 배열 등과 같은 별도의 유틸리티 클래스가 필요하지 않습니다.
  • 책임의 명확한 분리. 즉, 컬렉션 등과 같은 컬렉션 API의 모든 유틸리티 메서드를 유지하기 위해 하나의 유틸리티 클래스가 필요하지 않습니다.
  • API를 쉽게 확장할 수 있습니다.
  • API 유지 관리가 쉽습니다.

함수형 프로그래밍과 객체 지향 프로그래밍의 차이점은 무엇입니까?

Functional Programming OOP
Does not exist State Exists State
Uses Immutable data Uses Mutable data
It follows Declarative Programming Model It follows Imperative Programming Model
Stateless Programming Model Stateful Programming Model
Main Fcous on: “What you are doing” Main focus on “How you are doing”
Good for Parallel (Concurrency) Programming Poor for Parallel (Concurrency) Programming
Good for BigData processing and analysis NOT Good for BigData processing and analysis
Supports pure Encapsulation It breaks Encapsulation concept
Functions with No-Side Effects Methods with Side Effects
Functions are first-class citizens Objects are first-class citizens
Primary Manipulation Unit is “Function” Primary Manipulation Unit is Objects(Instances of Classes)
Flow Controls: Function calls, Function Calls with Recursion Flow Controls: Loops, Conditional Statements
It uses “Recursion” concept to iterate Collection Data. It uses “Loop” concept to iterate Collection Data. For example:-For-each loop in Java
Order of execution is less importance. Order of execution is must and very important.
Supports both “Abstraction over Data” and “Abstraction over Behavior”. Supports only “Abstraction over Data”.
We use FP when we have few Things with more operations. We use OOP when we have few Operations with more Things. For example: Things are classes and Operations are Methods in Java.

참고:- FP, IP 및 OOP 비교에 대한 자세한 내용은 "Compare FP, OOP(IP)\에서 내 이전 게시물을 참조하십시오.

이전 Java Date API의 문제를 설명하시겠습니까? Old Date API 및 Joda Time API에 비해 Java 8의 날짜 및 시간 API의 장점은 무엇입니까?

Java의 OLD Java Date API는 Java SE 8 이전에 사용 가능한 Date, Calendar, SimpleDateFormat 등의 Date API를 의미합니다. Java의 Old Date API는 Java 8의 Date and Time API 및 Joda Time API와 비교할 때 다음과 같은 문제점 또는 단점이 있습니다.

  • 대부분의 API는 더 이상 사용되지 않습니다.
  • 가독성이 떨어집니다.
  • java.util.Date는 변경 가능하며 스레드로부터 안전하지 않습니다.
  • java.text.SimpleDateFormat은 스레드로부터 안전하지 않습니다.
  • 성능 저하.

Java SE 8의 Date and Time API는 Java의 OLD Date API와 비교할 때 다음과 같은 장점이 있습니다.

  • 사용이 매우 간단합니다.
  • 사람이 읽을 수 있는 구문으로 가독성이 더 높습니다.
  • 모든 API는 스레드로부터 안전합니다.
  • 더 나은 성능.

Java SE 8에서 새로운 날짜 및 시간 API가 필요한 이유는 무엇입니까? Java SE 8 데이터 및 시간 API가 이전 Java 날짜 API의 문제를 어떻게 해결하는지 설명하십시오.

고성능, 스레드 안전 및 확장성이 뛰어난 Java 애플리케이션을 개발하려면 Java 8의 날짜 및 시간 API가 필요합니다. Java 8의 날짜 및 시간 API는 불변성 및 스레드 안전 원칙에 따라 모든 Java의 이전 날짜 API 문제를 해결합니다.

Java의 OLD Java Date API와 Java 8의 날짜 및 시간 API의 차이점은 무엇입니까?

Java의 OLD Java Date API와 Java 8의 날짜 및 시간 API의 차이점:

S.No. Java’s OLD Java Date API Java 8’s Date and Time API
1. Available before Java 8 too. It is introduced in Java SE 8
2. Not Thread Safe. Thread Safe.
3. Mutable API. Immutable API.
4. Less Performance. Better Performance.
5. Less Readability. More Readability.
6. It’s not recommended to use as its deprecated. It’s always recommended to use.
7. Not Extendable. Easy to Extend.
8. It defines months values from 0 to 11, that is January = 0. It defines months values from 1 to 12, that is January = 1.
9. It’s an old API. It’s a new API.

다중 상속이란 무엇입니까? Java 8은 다중 상속을 어떻게 지원합니까?

다중 상속은 클래스가 둘 이상의 상위 클래스에서 특성 및 기능을 상속하거나 확장할 수 있음을 의미합니다. Java 7 및 이전 버전에서는 Java가 \A class should extend one and only one class or abstract class\ 규칙을 따르기 때문에 다중 상속이 불가능합니다. 임의의 수의 인터페이스 확장” 규칙. 그러나 Java 8은 새로운 기능인 인터페이스의 기본 메서드를 도입하여 "인터페이스의 메서드 구현\을 지원합니다. 이 기능 때문에 Java 8은 일부 제한 사항이 있는 다중 상속을 지원합니다.

기본 방법으로 인한 인터페이스의 다이아몬드 문제는 무엇입니까? Java 8은 이 문제를 어떻게 해결합니까?

interface A {
	default void display() {
		System.out.println("A");
	}
}

interface B extends A {
	default void display() {
		System.out.println("B");
	}
}

interface C extends A {
	default void display() {
		System.out.println("C");
	}
}

class D implements B, C {
}

위의 코드 스니펫에서 클래스 D는 "매개변수() 및()가 있는 디스플레이라는 이름의 중복 기본 메소드가 유형 C 및 B에서 상속됩니다\라는 컴파일 타임 오류를 제공합니다. 이는 Java 컴파일러가 어떤 디스플레이( ) 클래스 D에서 사용합니다. 클래스 D는 인터페이스 B와 C 모두에서 display() 메서드를 상속합니다. 이 문제를 해결하기 위해 Java 8에서는 다음과 같은 솔루션을 제공했습니다.

class D implements B, C {

	@Override
	public void display() {
		B.super.display();
	}
	
}

이 B.super.display(); 이 다이아몬드 문제를 해결할 것입니다. C 인터페이스 기본 방법을 사용하려면 C.super.display();를 사용하십시오. 이것이 Java 8 인터뷰 질문에 관한 전부입니다. 다음 게시물에서 Java SE 8 인터뷰 질문에 대해 더 논의할 것입니다. 내 게시물이 마음에 들거나 문제/제안 사항이 있으면 댓글을 남겨주세요.