2020/08/05 - [👩🏻💻Technical Interview/Questions] - [ JAVA 개념정리 ] Part 1 (자바란? ~ 메모리관리)
2020/08/05 - [👩🏻💻Technical Interview/Questions] - [ JAVA 개념정리 ] Part 2 (객체지향 프로그래밍)
2020/08/05 - [👩🏻💻Technical Interview/Questions] - [ JAVA 개념정리 ] Part 3 (인터페이스~Constructor)
개인적으로 가장 설명하기 어려운 파트!
1. 인터페이스에 대해서 설명해주실래요?
인터페이스란 객체의 템플릿입니다.
이름 뜻 그대로 여러 클래스들을 사용함에 있어서 인터페이스를 제공합니다.
즉, 각각의 클래스들이 사용방법이 같음을 보장합니다.
일반적인 멤버함수와 멤버변수는 선언할 수 없으며 추상메소드만 선언할 수 있습니다.
그러므로, 인터페이스를 구현받은 클래스들을 메소드를 강제적으로 구현해야 합니다.
2. 추상클래스가 무엇인가요?
추상클래스는 abstract 키워드로 선언된 클래스를 뜻합니다. 0개이상의 추상 메소드를 가지며, 일반메소드나 일반변수 또한 가질 수 있습니다. 그렇기에 인터페이스 역할도 하면서 구현체도 가지고 있습니다.
3. 인터페이스와 추상클래스 차이가 무엇인가요?
가장 큰 차이점은 사용의도가 무엇인가에 있습니다.
인터페이스 같은 경우는 인터페이스를 구현한 경우 모든 메소드를 구현해주어야 합니다.
이에 반면에, 추상메소드를 상속받은 경우 추상메소드만 구현해주어야 합니다.즉, 추상메소드는 키워드 그대로 확장, 상속을 의미하고 물려주는 개념이 됩니다.하지만 인터페이스는 상속개념이 아닌 동일한 동작을 보장하기 위한 구현을 강제화 합니다.즉 인터페이스는 어떠한 각각의 클래스들의 동일한 행위를 보장하기 위한 하나의 규약 아니면 설계도로 볼 수 있고,추상메소드는 무언가를 강제하기 위함, 물려주기 위해 사용합니다.
4. 라이브러리와 프레임워크 그리고 API
4-1. 라이브러리
우선 라이브러리란 개발자가 필요한 기능만 호출하여 사용할 수 있는 함수나 클래스들의 모임입니다.개발자들이 개발을 하기 위해 필요로 하는 기능들이 미리 구현이 되어 있습니다.가장 유명한 라이브러리는 JQuery입니다.
4-2. 프레임워크
어떠한 소프트웨어나 프로그램을 만들기 위한 기본적인 틀 이라고 볼 수 있습니다.원하는 기능 구현에만 집중해서 빠르게 개발할 수 있도록 기본적으로 필요한 기능들이 갖춘 틀 입니다.일정한 형태의 틀, 부품들을 가지고 결과물을 만드는 것과 같습니다.
4-3. 프레임워크와 라이브러리의 공통점과 차이점
프레임워크와 라이브러리의 공통적인 점은 프로그램을 개발하기 위해 편리한 요소를 주지만,
개발자의 프로그래밍을 함에 있어서 자유도에 차이가 있습니다.
라이브러리는 개발자가 필요로 할 때마다 그때마다 기능들을 호출하여 사용할 수 있지만,프레임워크는 짜여진, 주어진 틀에 맞춰서 개발을 해야 합니다. 즉, 이미 사용 목적, 규약이 정해져 있습니다.
라이브러리는 개발자가 필요로 하는 기능을 그때마다 호출하여 사용할 수 있도록, 클래스와 함수들의 모임 입니다.즉, 개발자가 필요로 할 때 마다 해당 기능들을 호출하여 사용할 수 있습니다.하지만 프레임워크는 어떠한 목적을 가지고 그 목적을 수행하는 프로그램이나 소프트웨어를 만들기 위해 기본적으로 필요한 기능들이미리 구현되어 있는 틀과 같습니다. 즉, 개발자는 주어진 틀에 맞춰 소스코드를 작성을 하는 것 입니다. 다시말해 개발자가 주어진 틀에 맞춰 개발을 해야 합니다.
4. Stirng, StringBuilder, StringBuffer
셋다 문자열을 저장하고 관리하는 클래스라는 점에서 같습니다.하지만 String과 StringBuilder, StringBuffer의 차이점은 메모리공간이 가변하냐에 차이가 있습니다.즉, String 클래스같은 경우 문자열 수정이 이루어 질 시 수정된 문자열이 이미 할당된 메모리 공간에 존재하는 문자열이 수정이 되는 것이 아니라 수정된 문자열을 가진 새로운 메모리 공간을 할당합니다. 반면에 StringBuilder와 StringBuffer는 할당된 메모리 공간의 문자열을 수정합니다. 즉, 잦은 메모리 연산이 있을시 String보단 StringBuilder와 StringBuffer를 사용하는 것이 더 우월합니다.
5. Singleton
Singleton이란 애플리케이션이 실행될 때 최초로 한 번 할당된 메모리 공간에 인스턴스를 할당하여 사용하는 객체 입니다.고정적인 메모리 공간을 사용하기 때문에, 메모리효율성이 좋다는 장점이 있습니다.
6. Constructor
클래스와 이름이 같고 리턴타입이 없는 메소드를 뜻합니다. 인스턴스가 생성시 자동으로 디폴트 생성자가 호출이 됩니다.파라미터의 개수와 타입을 다르게 한 파라미터 생성자도 존재합니다. 단, 파라미터 생성자를 생성할 시 디폴트생성자를 자동으로 생성하지 않기 때문에 명시적으로 선언해주어야 합니다.
'👩🏻💻Technical things > Questions' 카테고리의 다른 글
추상클래스 VS 인터페이스 (0) | 2020.08.11 |
---|---|
[ JAVA 개념정리 ] Part 4 ( Collection ~ END) (1) | 2020.08.05 |
[ JAVA 개념정리 ] Part 2 (객체지향 프로그래밍) (0) | 2020.08.05 |
[ JAVA 개념정리 ] Part 1 (자바란? ~ 메모리관리) (1) | 2020.08.05 |
[ Data Structure ] (0) | 2020.07.22 |