본문 바로가기
CS

신입 개발자 CS 면접 대비 질문-Java/자바

by Rudy 2023. 1. 16.

* CS면접을 대비해서 공부한 내용들을 정리했습니다. 틀린 부분이 있을 수 있으니 그럴 경우 댓글 달아주시면 감사하겠습니다!

* 분야는 운영체제, 데이터베이스, 네트워크, 자바, 자료구조 등등 가리지 않고 했기 때문에 여러 과목과 내용이 섞여 있습니다.

* 모든 내용은 간단하게 익히기 위해서 얕게 적혀 있습니다. 깊은 내용은 따로 공부하길 권장드립니다.

 


 

1. JAVA의 특징

  • 객체지향 프로그래밍 언어
  • 기본 자료형을 제외한 모든 요소들이 객체로 표현되고, 객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어

 

2. JAVA의 장점

  • JVM위에서 동작하기 때문에 운영체제에 독립적이다.
  • GabageCollector를 통해 자동적으로 메모리 관리가 가능하다.

 

3. JAVA의 단점

  • JVM 위에서 동작하기 때문에 실행 속도가 상대적으로 느리다.
  • 다중 상속이나 타입에 엄격하며, 제약이 많다.

 

4. JVM의 역할

  • JVM은 스택 기반으로 동작하며, Java Byte Code를 OS에 맞게 해석 해주는 역할을 하고, 가비지 컬렉션을 이용해 자동적으로 메모리 관리를 한다.

 

5. Java의 컴파일 과정

  1. 개발자가 .java 파일을 생성한다.
  2. build를 한다.
  3. java compiler의 javac 명령어를 통해 바이트코드(.class)를 생성한다.
  4. Class Loader를 통해 JVM 메모리 내로 로드한다.
  5. 실행엔진을 통해 컴퓨터가 읽을 수 있는 기계어로 해석된다.

 

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. 객체지향의 설계원칙

  1. SRP(단일 책임 원칙): 한 클래스는 하나의 책임만 가져야 한다.
  2. OCP(개방폐쇄원칙): 확장에는 열려있고, 수정에는 닫혀 있어야 한다.
  3. LSP(리스코프치환원칙): 상위 타입은 항상 하위 타입으로 대체할 수 있어야 한다.
  4. ISP(인터페이스 분리 원칙): 인터페이스 내에 메서드는 최소한일수록 좋다.
  5. DIP(의존관계 역전 원칙): 구체적인 클래스보다 상위 클래스, 인터페이스, 추상클래스와 같이 변하지 않을 가능성이 높은 클래스와 관계를 맺는다.

댓글