For job interview, about JAVA 면접 공부하기-자바 2
1. 인터페이스와 추상클래스의 차이
1. Interface 인터페이스
- 추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다.
- 오직 추상메서드와 상수만을 멤버로 가질 수 있으며 그 외의 다른 어떠한 요소도 허용하지 않는다.
- 구현된 것은 아무 것도 없고 밑그림만 그려져 있는 ‘기본 설계도’라고 할 수 있다.
- implements 키워드를 사용한다.
- 장점
- 개발시간 단축 : 인터페이스 완성 후, 인터페이스를 구현하는 클래스를 작성하면서 동시에 메서드를 호출해 프로그램을 작성할 수 있다.
- 표준화 가능
- 독립적인 프로그래밍 : 클래스의 선언과 구현을 분리시킬 수 있기 때문에 한 클래스의 변경이 관련된 다른 클래스에 영향을 미치지 않는다.
2. Abstract class 추상클래스
- 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. (오버라이딩)
- 추상클래스도 생성자가 있어야 하며 일반 메서드를 포함할 수 있다.
- 부분적으로만 완성된 ‘미완성 설계도’라고 할 수 있다.
- extends 키워드를 사용한다.
- 추상화 : 클래스간의 공통점을 찾아내서 공통의 조상을 만드는 작업
2. 프로세스와 쓰레드 차이
1. Process 프로세스
- OS로부터 실행에 필요한 자원을 할당받아 실행 중인 프로그램을 말한다.
- 모든 프로세스는 최소한 하나 이상의 쓰레드가 존재한다.
2. Thread 쓰레드
- 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이다. (경량프로세스라고 부르기도 한다.)
- 둘 이상의 쓰레드를 멀티쓰레드라고 한다.
- 멀티쓰레딩의 장점
- CPU의 사용률을 향상시킨다.
- 자원을 보다 효율적으로 사용할 수 있다.
- 사용자에 대한 응답성이 향상된다.
- 작업이 분리되어 코드가 간결해진다.
- 주의점
- 동기화
- 교착상태 : 두 쓰레드가 자원을 점유한 상태에서 서로 상대편이 점유한 자원을 사용하려고 기다리느라 진행이 멈춰있는 상태
3. Generics 제네릭스
- Definition 정의 : 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능
- Advantages 장점
- 타입 안정성 제공 : 의도하지 않은 타입의 객체를 저장하는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 형변환되어 발생할 수 있는 오류를 줄여준다.
- 타입체크와 형변환을 생략할 수 있으므로 코드 간결
※ 참고 : 남궁성의 Java의 정석