1.스프링)기술면접질문
1)인터페이스와 추상클래스의 차이를 설명해주세요
인터페이스와 추상클래스는 자바에서 객체 지향 프로그래밍의 핵심 요소입니다. 두 개념 모두 추상화를 제공하지만, 사용 목적과 방법에 있어서 차이가 있습니다.
기본 차이점
추상클래스: 추상클래스는 하나 이상의 추상 메소드를 포함할 수 있으며, 일부 구현된 메소드를 가질 수 있습니다. 추상클래스는 상속을 통해 확장되며, 추상 메소드는 하위 클래스에서 구현되어야 합니다.
인터페이스: 인터페이스는 모든 메소드가 추상 메소드인 클래스입니다. 인터페이스는 구현을 강제하기 위해 사용되며, 클래스는 인터페이스를 구현(implement)하여 모든 추상 메소드를 정의해야 합니다.
주요 차이점
상속과 구현: 클래스는 하나의 추상클래스만 상속할 수 있지만, 여러 인터페이스를 구현할 수 있습니다. 이는 자바가 다중 상속을 지원하지 않기 때문입니다.메소드 구현: 추상클래스는 구현된 메소드를 가질 수 있지만,
인터페이스는 자바 8 이전에는 구현된 메소드를 가질 수 없었습니다. 자바 8부터는 default 메소드와 static 메소드를 인터페이스에 추가할 수 있게 되었습니다.
접근 제어자: 추상클래스의 메소드는 다양한 접근 제어자를 가질 수 있지만, 인터페이스의 모든 메소드는 기본적으로 public입니다.
사용 시나리오
추상클래스: 공통된 기능이나 상태를 공유하는 객체들의 계층구조를 만들 때 사용합니다. 예를 들어, 여러 동물 종류에 공통적인 특성을 정의할 때 사용할 수 있습니다.
인터페이스: 서로 관련이 없는 클래스들에게 특정 기능을 강제하고 싶을 때 사용합니다. 예를 들어, 다양한 객체가 동일한 방식으로 데이터를 저장하거나 로드해야 할 때 사용할 수 있습니다.
2)코루틴(Coroutine)이 무엇이며, 어떤 상황에서 유용하게 사용될 수 있나요?
코루틴은 비동기 프로그래밍을 간단하게 만들어주는 프로그래밍 개념입니다. 여러 고급 프로그래밍 언어에서 지원되며, 특히 코틀린(Kotlin)에서 많이 사용됩니다. 코루틴을 통해 개발자는 비동기 작업을 쉽게 처리할 수 있으며, 코드의 가독성과 유지 보수성을 향상시킬 수 있습니다.
코루틴의 주요 특징
비동기 처리의 간소화: 코루틴은 비동기 작업을 마치 동기 작업처럼 쉽게 처리할 수 있게 해줍니다. 이를 통해 코드의 복잡성을 줄이고, 가독성을 높일 수 있습니다.
경량 스레드: 코루틴은 경량 스레드로서, 기존 스레드보다 훨씬 적은 오버헤드로 동시성을 관리할 수 있습니다. 이는 애플리케이션의 성능을 향상시키는 데 도움이 됩니다.
유용하게 사용될 수 있는 상황
네트워크 요청 처리: 네트워크 통신과 같은 비동기 작업을 처리할 때 코루틴을 사용하면, 결과를 기다리는 동안 애플리케이션이 멈추지 않고 다른 작업을 계속할 수 있습니다.
데이터베이스 작업: 데이터베이스 쿼리와 같은 시간이 소요되는 작업을 비동기적으로 처리하여, UI 스레드가 블록되지 않도록 할 수 있습니다.
대규모 컬렉션 처리: 대규모 데이터를 처리할 때, 코루틴을 사용하면 메인 스레드를 차단하지 않고 백그라운드에서 데이터를 처리할 수 있습니다.
- (연관질문) 코루틴을 사용한 경험에 대해 설명해주세요.
개인적으로 코루틴을 사용한 경험은 아직 없습니다. 코루틴은 비동기 프로그래밍을 단순화하고, 애플리케이션의 성능을 향상시키는 데 큰 도움을 준다고 알고 있습니다.
2. 최종프로젝트 발표, 회고
'개발일지' 카테고리의 다른 글
| 2024.04.08 TIL (0) | 2024.04.08 |
|---|---|
| 2024.04.04 TIL (0) | 2024.04.04 |
| 2024.04.03TIL (0) | 2024.04.03 |
| 2024.04.02 TIL (0) | 2024.04.02 |
| 2024.04.01 TIL (0) | 2024.04.01 |