* CS면접을 대비해서 공부한 내용들을 정리했습니다. 틀린 부분이 있을 수 있으니 그럴 경우 댓글 달아주시면 감사하겠습니다!
* 분야는 운영체제, 데이터베이스, 네트워크, 자바, 자료구조 등등 가리지 않고 했기 때문에 여러 과목과 내용이 섞여 있습니다.
* 모든 내용은 간단하게 익히기 위해서 얕게 적혀 있습니다. 깊은 내용은 따로 공부하길 권장드립니다.
1. JAVA의 특징
- 객체지향 프로그래밍 언어
- 기본 자료형을 제외한 모든 요소들이 객체로 표현되고, 객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어
2. JAVA의 장점
- JVM위에서 동작하기 때문에 운영체제에 독립적이다.
- GabageCollector를 통해 자동적으로 메모리 관리가 가능하다.
3. JAVA의 단점
- JVM 위에서 동작하기 때문에 실행 속도가 상대적으로 느리다.
- 다중 상속이나 타입에 엄격하며, 제약이 많다.
4. JVM의 역할
- JVM은 스택 기반으로 동작하며, Java Byte Code를 OS에 맞게 해석 해주는 역할을 하고, 가비지 컬렉션을 이용해 자동적으로 메모리 관리를 한다.
5. Java의 컴파일 과정
- 개발자가 .java 파일을 생성한다.
- build를 한다.
- java compiler의 javac 명령어를 통해 바이트코드(.class)를 생성한다.
- Class Loader를 통해 JVM 메모리 내로 로드한다.
- 실행엔진을 통해 컴퓨터가 읽을 수 있는 기계어로 해석된다.
6. Java의 원시 자료형
byte=1byte
short=2
int=4
long=8
float=4
double=8
char=2
boolean=1
7. 오버라이딩
- 오버라이딩은 상위 클래스에 있는 메서드를 하위 클래스에서 재정의 하는 것
- 코드 중복을 줄이고, 기능 확장의 장점이 있다.
8. 오버로딩
- 오버로딩은 매개변수의 개수나 타입을 다르게 하여 같은 이름의 메서드를 여러 개 정의하는 것
- 메서드 이름 1개로 여러 기능으로 재정의하여 사용할 수 있기 때문에 가독성이 좋아진다.
9. 오버라이딩과 오버로딩의 공통점
하나의 기능이 여러 역할을 할 수 있도록 해서 객체지향의 다형성 특징을 가지게 한다.
10. 객체지향 프로그래밍(OOP)
- 모든 데이터를 객체취급하며, 처리요청을 받은 객체는 객체 그 안의 기능을 사용해 요청을 처리한다. 특징으로는 캡슐화, 상속, 다형성, 추상화 등이 있고, 모듈 재사용으로 확장이나 유지보수가 용이하다.
11. 다형성
하나의 클래스나 메서드가 다양한 방식으로 동작이 가능한 것
12. 상속
부모 클래스의 속성을 그대로 물려받는 것. 재사용성을 극대화 시키기 위한 장치
13. 캡슐화
내부의 동작 방법을 숨기고 사용자가 쉽게 사용할 수 있게 만들어 준다.
14. 추상화
중요한 정보만 표현함으로써 공통의 속성이나 기능을 묶어 이름을 붙이는 것
15. 객체지향의 설계원칙
- SRP(단일 책임 원칙): 한 클래스는 하나의 책임만 가져야 한다.
- OCP(개방폐쇄원칙): 확장에는 열려있고, 수정에는 닫혀 있어야 한다.
- LSP(리스코프치환원칙): 상위 타입은 항상 하위 타입으로 대체할 수 있어야 한다.
- ISP(인터페이스 분리 원칙): 인터페이스 내에 메서드는 최소한일수록 좋다.
- DIP(의존관계 역전 원칙): 구체적인 클래스보다 상위 클래스, 인터페이스, 추상클래스와 같이 변하지 않을 가능성이 높은 클래스와 관계를 맺는다.
'CS' 카테고리의 다른 글
신입 개발자 CS 면접 대비 질문-운영체제 #2 (0) | 2023.02.12 |
---|---|
신입 개발자 CS 면접 대비 질문-웹 #1 (0) | 2023.02.02 |
신입 개발자 CS 면접 대비 질문-운영체제 #1 (0) | 2023.01.30 |
신입 개발자 CS 면접 대비 질문-Java/자바 #2 (0) | 2023.01.17 |
CS 면접 대비 #1 (0) | 2022.12.10 |
댓글