1. 객체지향 언어란 무엇이며, 등장한 이유는 무엇인가요?
- 정의:
객체지향 언어는 실 세계의 사물을 추상화하여, 멤버변수(데이터)와 메서드(동작)를 정의하고, 이를 객체로 표현하는 데서 출발합니다. - 등장 이유:
복잡한 프로그램 구조를 단순화하고 유지보수를 용이하게 하기 위해 등장했습니다. 기능과 데이터를 객체로 묶어 프로그램에 반영함으로써 순차적 실행이 아닌 객체 간 상호작용을 통해 동작합니다. - 장점:
- 코드 재사용성: 기존 코드를 활용하여 새로운 코드를 쉽게 작성 가능.
- 코드 관리 용이성: 적은 노력으로 코드 수정 및 변경 가능.
- 데이터 보호: 제어자와 메서드를 통해 데이터를 보호하고, 중복 제거로 코드 불일치 방지.
2. 자바의 데이터 타입: 원시 타입과 참조 타입
- 원시 타입(Primitive Type):
- 변수에 값 자체를 저장.
- 종류: boolean, byte, char, short, int, float, long, double.
- 참조 타입(Reference Type):
- **메모리상의 객체 위치(참조값)**를 저장.
- 종류: 클래스, 인터페이스, 배열, 열거 타입.
3. 배열과 컬렉션의 차이점
- 배열:
- 단일 자료형만 저장 가능.
- 크기가 고정적.
- 컬렉션:
- 다양한 자료형 저장 가능.
- 크기가 가변적이며 동적으로 변경 가능.
4. 다형성이란 무엇인가요?
- 정의:
하나의 객체가 여러 타입을 가질 수 있는 성질. - 예:
- 조상 클래스의 인스턴스를 사용해 자손 클래스의 객체를 다룸.
- 메서드 오버로딩을 통해 동일한 이름의 메서드로 다양한 매개변수를 처리.
5. 멀티스레드의 장단점
- 장점:
- 여러 작업을 동시에 실행하여 자원 효율성 극대화.
- 프로그램 실행 속도 개선.
- 단점:
- Deadlock(교착 상태) 발생 가능.
- 동기화 검증 필요.
6. 스레드 구현 방법
- Thread 클래스 상속:
- 단일 상속만 가능.
- 단순한 구현이 장점.
- Runnable 인터페이스 구현:
- 다중 상속 가능.
- 더 유연하고 확장성이 뛰어남.
7. 자바 컬렉션의 대표 인터페이스
- List: 순서 유지, 중복 허용.
- Set: 순서 없음, 중복 불허.
- Map: 키-값 쌍, 키는 중복 불허, 값은 중복 허용.
8. 컬렉션에서 제네릭(Generic)이란?
- 데이터 타입을 명시적으로 지정하여, 원하는 타입만 저장 가능.
- 장점:
- 컴파일 시 타입 체크로 안정성 증가.
- 불필요한 캐스팅 제거로 코드 간결화.
9. 접근 제어자의 종류와 특성
- Public: 제한 없음.
- Protected: 같은 패키지 및 다른 패키지의 자손 클래스 접근 가능.
- Default: 같은 패키지 내에서만 접근 가능.
- Private: 같은 클래스 내에서만 접근 가능.
10. Wrapper 클래스란?
- 원시 타입 데이터를 객체로 변환하기 위한 클래스.
- 종류: Byte, Short, Integer, Long, Character, Double, Boolean.
11. 추상 클래스와 인터페이스의 차이점
- 추상 클래스:
- 미완성 설계도로, 일반 메서드와 멤버 변수를 포함 가능.
- 상속을 통해 구현.
- 인터페이스:
- 구현된 메서드 없이 기본 설계도 역할.
- 다중 상속 가능으로 클래스 간 결합도를 낮춤.
12. 가비지 컬렉터란?
- 사용되지 않는 메모리 영역을 탐지하여 자동으로 해제하는 기능.
- 자바의 자동 메모리 관리 기법.
13. 오버로딩과 오버라이딩의 차이점
- 오버로딩:
- 같은 이름, 다른 매개변수로 메서드를 정의.
- 컴파일 시점에서 결정.
- 오버라이딩:
- 부모 클래스 메서드를 자식 클래스에서 재정의.
- 런타임 시점에서 동작.
14. 동기화란 무엇인가요?
- 하나의 자원을 여러 테스크가 동시에 접근하지 못하도록 제어하는 기술.
- 예: synchronized 키워드 사용.
15. 프로세스와 스레드의 차이
- 프로세스: 실행 중인 프로그램으로, 독립된 메모리 영역 사용.
- 스레드: 프로세스 내 작업 단위로, 동일 메모리 자원을 공유.
16. Call by Value와 Call by Reference의 차이점
- Call by Value:
- 값을 복사하여 전달.
- 원본 값은 변경되지 않음.
- Call by Reference:
- 객체의 주소값을 전달.
- 원본 값 변경 가능.
17. String, StringBuffer, StringBuilder의 차이점
- String: 불변 객체, 수정 시 새로운 객체 생성.
- StringBuffer: 가변 객체, 멀티스레드 환경에서 동기화 지원.
- StringBuilder: 가변 객체, 동기화 미지원으로 싱글스레드 환경에 적합.
18. OSI 7계층
- 물리층: 물리적 전송 매체 담당.
- 데이터링크층: 노드 간 신뢰성 있는 데이터 전송.
- 네트워크층: 패킷을 목적지까지 전달.
- 전송층: 프로세스 간 데이터 전송.
- 세션층: 시스템 간 상호작용 설정 및 유지.
- 표현층: 데이터 구문, 암호화 및 압축 처리.
- 응용층: 사용자 인터페이스 제공.
이 포스팅은 면접 준비 및 복습을 위해 정리한 내용입니다.
'🗄️ Backend > Java' 카테고리의 다른 글
익명 객체와 람다식: 자바에서의 활용 (3) | 2024.10.10 |
---|---|
Java API : 주요 클래스 및 I/O 스트림 사용법 (3) | 2024.10.10 |
JAVA 예외 처리(Exception Handling)와 가비지 컬렉션 (Garbage Collection) (1) | 2024.10.10 |
JAVA 패키지와 객체지향 개념 정리 (0) | 2024.10.10 |
JAVA 메서드와 객체지향 프로그래밍 (0) | 2024.10.10 |