기술면접 4

추상 클래스와 인터페이스의 차이점은 무엇이며, 각각을 사용하는 적절한 시나리오에 대해 설명해주세요.

추상 클래스와 인터페이스는 자바에서 객체 지향 프로그래밍의 다형성을 실현하는데 사용되는 두가지 주요 매커니즘입니다. 둘 다 직접 인스턴스화 할 수 없으며, 하위 클래스 또는 구현 클래스가 메서드를 구현하도록 강제합니다. 그러나 목적, 사용 방법, 그리고 제공하는 기능에 있어서 중요한 차이점이 있습니다.  추상 클래스는 상태와 동작을 공유하는 클래스의 계층을 구성할 때 사용되며, 다중 상속을 지원하지 않습니다.반면 인터페이스는, 구현 클래스가 특정 동작을 수행할 수 있음을 보장하는 계약 역할을 하며, 다중 구현이 가능합니다.따라서 설계의 목적과 필요에 따라 적절한 선택이 필요합니다.

기술면접 2024.05.12

멀티 프로세스 대신 멀티 스레드를 사용하는 이유는 무엇인가요?

멀티 프로세스와 멀티 스레드멀티 프로세스 : 하나의 운영체제 안에서 여러 프로세스가 동시에 실행되는 것 멀티 스레드 : 하나의 프로세스 안에서 여러 스레드를 사용하여 동시에 처리하는 것멀티 스레드 장단점 장점공유하고 있는 메모리만큼의 메모리 자원을 아낄 수 있다.스레드 간 통신 비용이 적고 응답 시간이 빠르다. 단점스레드 하나가 프로세스 내 자원을 망쳐버린다면 모든 프로세스가 종료될 수 있다.자원을 공유하기 때문에 동기화 문제가 발생할 수 있다. 멀티 스레드를 사용하는 주된 이유는 자원의 효율적 사용과 실행 효율성 때문입니다. 멀티스레드는 하나의 프로세스 내에서 여러 작업을 병렬로 수행할 수 있게 해주며, 이때 스레드들은 프로세스의 메모리와 자원을 관리합니다. 이러한 공유 매커티즘은 멀티 프로세스 방식에..

기술면접 2024.05.08

멀티스레드 프로그래밍에서 동기화(Synchronization)가 왜 필요한가요? 예를 들어 설명해주세요.

멀티스레드 프로그래밍에서 동기화는 여러 스레드가 동시에 같은 메모리(자원)에 접근할 때 데이터의 일관성과 정확성을 보장하기 위해 필요합니다.  동기화를 하지 않으면 스레드들이 자원을 동시에 읽고 쓸 때 '경쟁 조건'이 발생할 수 있으며, 이는 예측 불가능한 결과나 데이터의 손상을 초래할 할 수 있습니다.   자바에서는 syncronized 키워드를 사용하여 메서드나 코드 블록을 동기화할 수 있습니다.이 키워드는 해당 메서드나 코드 블록에 동시에 하나의 스레드만 접근할 수 있도록 보장합니다. 또한, Lock 인터페이스와구현체들을 사용하여 더 세밀한 동기화 제어가 가능합니다.

기술면접 2024.05.08

자바에서 가비지 컬렉션(GC)의 원리를 설명해주세요.

- 자바에서 가비지 컬렉션(GC)은 프로그램이 동적으로 할당한 메모리 중에서 더 이상 사용되지 않는 부분을 자동으로 찾아서 해제하는 메커니즘입니다.  이 과정은 메모리 누수를 방지하고, 프로그램의 안정성을 유지하는 데 도움을 줍니다.   가비지 컬렉션의 기본 원리는 '도달 가능성(Reachability)' 분석입니다. 특정 객체가 '도달 가능한' 상태라는 것은 프로그램의 루트 집합(Root Set)에서 출발하여 참조를 따라갔을 때 도달할수 있는 객체를 의미합니다.  루트 집합에는 지역변수, 활성 스레드, 정적 변수 등이 포함됩니다.  GC는 이러한 루트 집합으로부터 시작하여 참조되는 객체들을 추적하고, 추적되지 않는 객체들을가비지로 판단하여 메모리를 회수합니다.   자바에서는 주로 마크-스위프트(Mark..

기술면접 2024.05.05