자바개발자 기술면접에서 자바8, 동시성 관련된 질문에서 나올 수 있는 parallelStream() 관련 예상질문과 답변을 정리해보았습니다.
자바8 parallelStream() 관련 예상질문 및 답변
자바 개발자를 뽑는 채용 포지션에서 자바8 이상 사용해본 경험, 대용량 트래픽 처리와 같은 서버 가용성과 관련된 요구사항이 있는 경우 지원자의 관련 지식을 확인하기 위해 parallelStream()고 관련된 질문을 할 수 있습니다. parallelStream() 관련 개념정리는 아래 페이지를 참고해주세요.
- [Java] parallelStream() 메서드 사용시 예상되는 문제점 및 해결방안 [1]
- [Java] parallelStream() 메서드 사용시 예상되는 문제점 및 해결방안 [2]
예상질문 및 답변
1. 자바 8 버전에 새로 도입된 기능 중 사용해본 기능있으면 설명해주세요.
더보기
Java 8에서 도입된 parallelStream을 사용해보았습니다. parallelStream을 이용하면 간단하게 스트림을 병렬처리할 수 있어서 대용량 데이터 처리에 효과적입니다. 저는 실무에서 상품 목록 조회기능을 최적화하는 작업을 한적이 있습니다. 그 때 조회하는 상품 목록이 많은 경우 parallelStream을 사용하여 병렬처리 하여 성능을 개선한 경험이 있습니다. |
2. parallelStream()을 사용해 성능 개선을 한 경험을 말씀해주셨는데요. parallelStream을 사용하면서 고려해야할 제약사항에 대해 아는 내용이 있으면 1가지만 간단히 설명해주세요.
더보기
parallelStream()의 대표적인 제약사항은 요소들의 처리순서를 보장하지 않는다는 점입니다. parallelStream()을 사용하는 코드에서는 제약사항을 고려하여 적절한 방법으로 구현해야합니다. |
3. 그럼 처리순서를 보장하지 않는다는 제약사항을 지키지 않으면 어떤 문제점들이 발생할 수 있는지 알고있는 대로 설명해주세요.
더보기
스레드 안정성이 깨져 예상치 못한 결과가 나오는 문제가 발생할 수 있습니다. parallelStream을 사용하면 데이터를 chunk 단위로 나누어 여러 스레드가 접근해 병렬로 데이터를 처리하게 됩니다. 이때 여러 스레드가 같은 요소에 접근해 데이터를 수정하게 되는 경쟁 상태(Race Condition)가 발생할 수 있습니다. |
요소간 처리순서에 따른 의존성이 있는 경우 예상과 다른 결과가 나오는 문제가 발생할 수 있습니다. parallelStream을 사용할 때는 처리하려는 데이터의 요소간에 독립성이 보장되는 경우에만 일관된 결과를 보장할 수 있습니다. 따라서 연산순서에 따라 일정한 결과를 보장해야하는 코드에서는 사용할 때 적절한 해결방법과 함께 parallelStream을 사용해야합니다. |
4. 그럼 그런 문제점이 없는 상황에서만 parallelStream()을 사용해야 하는건가요?
더보기
문제점이 없는 상황에서는 물론 parallelStream()을 사용해도 됩니다. 다만 parallelSteram()을 사용할때는 제약사항에 따른 문제점이 없더라도 여러 복합적인 상황을 고려해야합니다. parallelStream을 사용하려는 코드에서 제약사항, 문제점 그리고 성능적인 요소(메모리 사용량, 처리해야하는 데이터 크기, 성능)들을 고려해서사용할지 여부를 적절하게 판단하는 것이 중요합니다. |
5. 앞서 언급해주신 각 문제들에 대한 해결방안이 있을까요?
더보기
먼저 스레드 안정성 문제는 동기화 기법을 통해 여러 스레드가 동시에 같은 데이터에 접근하지 못하도록 처리해 문제를 해결할 수 있습니다. 다음으로 순서 의존성에 따른 문제는 Stream 인터페이스에서 제공하는 순서 보장 메서드를 사용해 해결할 수 있습니다. 다만 요소간 독립성이 보장되는 경우에는 parallelStream()을 그냥 사용하는 것이 적절하기 때문에 상황에 따라 잘 판단하는 것이 중요합니다. |
이상으로 자바8 parallelStream 관련 자바 개발자 기술면접 예상질문 및 답변에 대한 내용을 마무리하겠습니다. 관련된 더 자세한 항목을 확인하고 싶으시면 아래 링크를 참고해주세요.
- [Java] parallelStream() 메서드 사용시 예상되는 문제점 및 해결방안 [1]
- [Java] parallelStream() 메서드 사용시 예상되는 문제점 및 해결방안 [2]
본문에서 잘못 작성된 내용이나 틀린 내용이 있다면, 댓글로 언급해주시면 감사하겠습니다.
반응형
'백엔드 기술면접 > 면접질문' 카테고리의 다른 글
[기술 면접][경력] 자바 백엔드 웹개발자 면접질문 [3] (1) | 2022.11.27 |
---|---|
[기술 면접] 자바 면접 예상질문/답변 정리 [16-20] (0) | 2022.10.02 |
[기술 면접] 자바 면접 예상질문/답변 정리 [11-15] (0) | 2022.09.07 |
[기술 면접] 자바 면접 예상질문/답변 정리 [6-10] (0) | 2022.08.28 |
[기술 면접] 자바 면접 예상질문/답변 정리 [1-5] (2) | 2022.08.28 |
최근댓글